Sergei Calabonga
Sergei Calabonga
  • 353
  • 620 060
FAQ 56 по программированию
В этом видео:
256. Как распилить монолит? С чего начать? Есть ли у вас опыт "распила" монолита?
257. Как по вашему? Cейчас используется ли в коммерческой разработке Blazor? И надо ли изучать этот фреймворк или уже не актуальная технология?
258. Как лучше хранить файлы картинок для сайта? Где вы храните картинки для своего блога?
259. Как правильно определить количество необходимых модульных тестов и сколько утверждений должен содержать один тест?
Благодарности и помощь каналу принимаются:
www.calabonga.net/site/thanks
Наши видео доступны и на Дзэн:
dzen.ru/calabonga
Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам:
* boosty.to/calabonga
Я использую хостинг Reg.ru
htttps://reg.ru/?rlink=reflink-11163551
Переглядів: 241

Відео

FAQ 55 по программированию
Переглядів 337Місяць тому
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
FAQ 54 по программированию
Переглядів 282Місяць тому
В этом видео будут озвучены ответы на следующие вопросы: 247. Как вам удается помнить про всякие штуки для разные платформ? Как вы поддерживаете опыт? 248. Стоит ли переходить на OpenTelemetry, не все сборки еще в релизе? 249. Есть какой-нибудь несложный способ наполнить БД фейковыми/тестовыми данными? 250. Что вы используете и когда EF или Dapper. Благодарности и помощь каналу принимаются: www...
FAQ 53 по программированию
Переглядів 266Місяць тому
В этом видео новые вопросы на тему naming conventions, паттерны, архитектура ПО и другие. 243. Как лучше шарить контракты между проектами? 244. Вы используете суффикс Async в названиях методов или нет? 245. Immutable влияет на производительность? На сколько? 246. Расскажите, как вы понимаете паттерн KISS? Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступ...
DB + EF + Repository + UnitOfWork
Переглядів 1,2 тис.Місяць тому
Покажу, как я использую паттерны Repository и UnitOfWork совместно с EntityFramework Core. А также постараюсь объяснить почему я так делаю. Создадим пару сущностей, "положим" их в БД при этом создадим миграции для EntityFrameworkCore и многое другое. Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и...
REST + API + Response
Переглядів 8482 місяці тому
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
FAQ 52 по программированию
Переглядів 2733 місяці тому
Вопросы в этом видео: 236. Расскажите про модель доступа ABAC разрезе микросервисов? 237. Есть ли смысл использовать автомапперы? Не лучше ли создавать сущности через конструктор/фабричный метод/кастомное расширение для маппинга? (©Максим) 238. Как лучше реализовать ролевую модуль для системы при реализации микросервисов при реализации Api Gateway? (©Сергей) 239. Что порекомендуете для реализац...
FAQ по программированию 51
Переглядів 2763 місяці тому
В этом видео будут озвучены ответы на следующие вопросы: 231. Что лучше выбрать IdentityServer4 или KeyCloak для системы выдачи токенов? 232. Интеграционные тесты для EntityFrameworkCore лучше проводить на на "InMemory"? 233. Как выбрать между RabbitMQ и Kafka, от чего нужно отталкиваться? 234. Зачем нужно добавлять суффикс Async для методов? 235. Как часто вы используете оптимизации с использо...
DevTool 21: Ответы на запросы
Переглядів 2634 місяці тому
Ссылки: www.nuget.org/packages/Calabonga.Results www.nuget.org/packages/OperationResultCore Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
#1 Вопросы и ответы на MAUI. Вступление
Переглядів 6064 місяці тому
Это ознакомительное видео, в котором я расскажу про то, что будет в новой серии видео роликов. Если коротко, то frontend - MAUI, а backend - ASP.NET Web API. Ссылки: www.calabonga.net/blog/post/maui-quiz-tutorial-1 Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным б...
FAQ по программированию 50
Переглядів 3654 місяці тому
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
Коротко по теме картинки для блога
Переглядів 1775 місяців тому
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
FAQ 49 по программированию
Переглядів 3886 місяців тому
В этом видео будут озвучены ответы на следующие вопросы: 215. Какие паттерны вы используете чаще всего? 216. Микросервисы только на HTTP - это плохо? 217. Есть веб-сервис A, которому нужно взять из базы данных большой объем данных с помощью EF Core и через http POST-запрос отправить в виде JSON сервису B. Вопрос в комментарии. 218. Когда использовать Task, а когда ValueTask? Почему ValueTask до...
Реализация плагинов для ASP.NET Core Web API (2)
Переглядів 5097 місяців тому
Упражнения на тему - Реализация плагинов Web API на базе ASP.NET Core. Итак, основные принципы работы плагинов: Одно главное приложение (Shell - оболочка) * Умеет находить загружать плагины * Умеет трансформировать UI на основании загруженных данных * Умеет управлять доступом (например, на базе ролевой модели) * Умеет устроить обмен сообщениями между плагинами Много плагинов * Умеет делать «пол...
Фотоальбом на C# (часть 2)
Переглядів 4597 місяців тому
В прошлом видео я озвучил план реализации. В этом видео покажу, какие материалы я приготовил в качестве "подопытных кроликов" при реализации проекта AlbumManager. Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Re...
Фотоальбом на C# (часть 1)
Переглядів 8177 місяців тому
Фотоальбом на C# (часть 1)
FAQ 48 по программированию
Переглядів 4108 місяців тому
FAQ 48 по программированию
FAQ 47 по программированию
Переглядів 45310 місяців тому
FAQ 47 по программированию
Реализация плагинов для ASP.NET Core Web API
Переглядів 1,4 тис.10 місяців тому
Реализация плагинов для ASP.NET Core Web API
Форма обратной связи на Blazor (часть 1)
Переглядів 65011 місяців тому
Форма обратной связи на Blazor (часть 1)
FAQ 46 по программированию
Переглядів 53111 місяців тому
FAQ 46 по программированию
Упражнения с OpenTelemetry 1
Переглядів 623Рік тому
Упражнения с OpenTelemetry 1
Каталог товаров 2023 (18)
Переглядів 628Рік тому
Каталог товаров 2023 (18)
Каталог товаров 2023 (17)
Переглядів 241Рік тому
Каталог товаров 2023 (17)
Каталог товаров 2023 (16)
Переглядів 149Рік тому
Каталог товаров 2023 (16)
Каталог товаров 2023 (15)
Переглядів 172Рік тому
Каталог товаров 2023 (15)
Каталог товаров 2023 (14)
Переглядів 177Рік тому
Каталог товаров 2023 (14)
Каталог товаров 2023 (13)
Переглядів 183Рік тому
Каталог товаров 2023 (13)
Каталог товаров 2023 (12)
Переглядів 182Рік тому
Каталог товаров 2023 (12)
Каталог товаров 2023 (11)
Переглядів 299Рік тому
Каталог товаров 2023 (11)

КОМЕНТАРІ

  • @artemignat7764
    @artemignat7764 4 дні тому

    Есть микросервисы корзина и продукты. Чтобы добавить продукт или создать корзину, паблишером должно быть фронтенд приложение, например mvc?

    • @SergeiCalabonga
      @SergeiCalabonga 4 дні тому

      Frontend - тоже может быть микросервисом.

    • @artemignat7764
      @artemignat7764 4 дні тому

      @@SergeiCalabonga Ок. Микросервисы Product и Cart. Добавляем продукт в корзину. Это значит Cart паблишер, запрашивает продукт из консьюмера Product. У Product есть ещё консьюмеры на создание и удаление продукта (для своей базы данных). Создаю ещё один микросервис который выполняет эти запросы?

    • @SergeiCalabonga
      @SergeiCalabonga 4 дні тому

      @@artemignat7764 интересно, а "паблишер", "консьюмер" - это что за звери? Может всё-таки или до конца по-русски "публикатор" и "потребитель", или до конца по-английски "publisher" и "consumer"? Читать очень сложно, да и не красиво, простите. Англицизмы меня сбивают с толку. :( А если по делу, то.... 1. правила, которыми вы руководствуетесь для создания новых сервисов мне не понятно. 2. Какие обязанности на сервисе Product? Пред положу, что это каталог товаров. 3. Какие обязанности на сервере Cart? Если Product - это каталог товаров. 4. Почему это два разных сервиса? (Вам скучно было с одиним,)

    • @artemignat7764
      @artemignat7764 4 дні тому

      @@SergeiCalabonga Product -сервис каталога товаров. В нём я могу продукт добавлять, удалять, редактировать. Сервис Cart может добавлять продукт, путям обращения к Product и удалять продукт и корзины. На уровне crud запросов, я понимаю как эти сервисы общаются между собой. И понимаю как Cart может получить продукт от Product через MassTransit. Но я не понимаю как мне реализовать три действия: добавление,удаление,редактирование продукта в Product с помощью MassTransit с брокером. Я должен ещё создать микросервис для этого?

    • @artemignat7764
      @artemignat7764 4 дні тому

      @@SergeiCalabonga Product - сервис каталога товаров. Сервис Cart может добавлять и удалять продукт.Он обращается к Product, только для получения продукта через MassTransit.В сервисе Product можно продукт добавлять,удалять,редактировать. Это делается админом через crud запросы к api сервиса Product. То что я описал, считается микросервисной архитектурой или же нужно создавать ещё один микросервис который будет делать эти запросы через MassTransit?

  • @artemignat7764
    @artemignat7764 5 днів тому

    Если я хочу добавить, изменить, удалить пользователя в UserService, кто должен быть продюсером?

    • @SergeiCalabonga
      @SergeiCalabonga 4 дні тому

      А почему должен обязательно быть producer? И что он делает?

    • @artemignat7764
      @artemignat7764 4 дні тому

      @@SergeiCalabonga я уже осознал свою ошибку

    • @artemignat7764
      @artemignat7764 4 дні тому

      @@SergeiCalabonga Для таких задач можно использовать crud запросы, к контроллерам UserService.

  • @shananboiara
    @shananboiara 10 днів тому

    Не ну чат жпт гениально решает задачу генерации описания к коммиту, доктайпит очень даже хорошо, документацию по проету пишет, puml рисует, тестики генерит, так шо зря вы это вот так, зря-зря-зря

    • @SergeiCalabonga
      @SergeiCalabonga 10 днів тому

      Для каждого типа задач свой интеллект? Оригинально! Обучить программу выдавать случайные тексты по теме... это не креатив, это больше аналитика. В любом случае посмотрим... может я и не прав.

  • @denpinkman9057
    @denpinkman9057 11 днів тому

    У Вас наверно самый полезный канал для .NET разработчиков. Спасибо за видео!

    • @SergeiCalabonga
      @SergeiCalabonga 11 днів тому

      Спасибо!!! Я тоже так думаю! 😁

  • @Lehis198
    @Lehis198 11 днів тому

    Спасибо за видео. А в своем облаке вы как храните изображения? В виде файлов или в БД?

    • @SergeiCalabonga
      @SergeiCalabonga 11 днів тому

      В виде файлов на удалённом сервере, взаимодействие через API.

    • @Denis778322877
      @Denis778322877 7 днів тому

      ​@@SergeiCalabonga А minio не приходилось использовать?

    • @SergeiCalabonga
      @SergeiCalabonga 7 днів тому

      @@Denis778322877 Приходилось, но только на рабочих проектах. В частном порядке - это дорогое удовольствие.

    • @Denis778322877
      @Denis778322877 7 днів тому

      @@SergeiCalabonga почему дорогое? Он же вроде бесплатный. Я же его только что в докере поднял это же какой сейчас счёт придёт

    • @SergeiCalabonga
      @SergeiCalabonga 7 днів тому

      @@Denis778322877 пока вы его используете "по-детски" - это будет бесплатно, как только что-то серьёзное потребуется туда положить, то welcome min.io/pricing

  • @LonDevOfficial
    @LonDevOfficial 12 днів тому

    WebAssembly 😢 Кажется мне немного не повезло

    • @SergeiCalabonga
      @SergeiCalabonga 12 днів тому

      Не переживайте! Это не последний раз, когда вам не повезло!

  • @svfits1
    @svfits1 13 днів тому

    Даешь видео про интеграционное тестирование! Можно получить из swagger описания какие методы есть. Но их бывает очень много и они однотипные. Если библиотека что бы можно было сгенерировать тесты по описанию swagger для CRUD например?

    • @SergeiCalabonga
      @SergeiCalabonga 12 днів тому

      Swagger - это частный случай. Рекомендую смотреть в сторону OpenAPI. Библиотек уже хватает. А также появляется интеграция даже Visual Studio.

    • @svfits1
      @svfits1 12 днів тому

      @@SergeiCalabonga я имел ввиду создать интеграционные тесты по описанию что бы их руками не писать

  • @artemignat7764
    @artemignat7764 15 днів тому

    Пишу микросервис по автозапчастям. На русскоязычных сайтах я заметил что , путь к ресурсам в URL описаны русскими словами. Пример ".../maslyanye-nasosy-i-detali-k-nim/" В коммерции так можно делать?

    • @SergeiCalabonga
      @SergeiCalabonga 15 днів тому

      Явного запрета на использование конкретных символов в спецификации нет. Теоретически, можно даже кириллицу использовать. Но разве это красиво? Раз это не несет за собой рой проблем?

    • @artemignat7764
      @artemignat7764 15 днів тому

      @@SergeiCalabonga Спасибо. Буду придерживаться стандарту.

    • @SergeiCalabonga
      @SergeiCalabonga 15 днів тому

      @@artemignat7764 Очень правильное решение!

    • @artemignat7764
      @artemignat7764 15 днів тому

      @@SergeiCalabonga Извините. Вопрос не по теме видео. У автозапчасти есть название, артикул и название производителя. Можно их объединить в value object?

    • @SergeiCalabonga
      @SergeiCalabonga 15 днів тому

      @@artemignat7764 С точки зрения банальной эрудиции, название, артикул и название производителя - это просто свойства для сущности "Автозапчасть", тут и не пахнет Value Object.

  • @konstantinporutchikov5546
    @konstantinporutchikov5546 24 дні тому

    Спасибо за очень познавательное видео для начинающего! Теперь стал лучше понимать DI контейнеры и как их использовать! Надо будет поэкспериментировать теперь самостоятельно. P.S. Хотел еще спросить, какой тулзой вы чертили (поверх кода в студии) поясняющие стрелки , видимо это был какой-то скриншотер?

  • @techbuterbrod
    @techbuterbrod 24 дні тому

    Спасибо, интересные и полезные видео.

  • @artemadeev7444
    @artemadeev7444 25 днів тому

    А в каких случаях уместно использование ?

    • @SergeiCalabonga
      @SergeiCalabonga 25 днів тому

      Если не понимания "когда", то лучше не использовать.

  • @Alexander-ko1od
    @Alexander-ko1od 28 днів тому

    К сожалению вы неправильно поняли мой вопрос, я имел ввиду какие есть альтернативные крутые библиотеки для работы с Apache Kafka, из всех мне известны только MassTransit и Confluent. MassTransit мне показался удобнее (внутри у него тот же Confluent), но все равно спасибо вам за видео

    • @SergeiCalabonga
      @SergeiCalabonga 28 днів тому

      Для Kafka я обычно использую стандартные библиотеки такик как наподобие MassTransit, я не знаю.

  • @timoxa_dev
    @timoxa_dev Місяць тому

    Я бы не советовал использовать Hangfire. Как показала практика, если говно и моча в голове у авторов, то одной только сине-желтой тряпкой в шапке сайта/репозитория авторы могут не ограничиться

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Это вообще про что?

    • @timoxa_dev
      @timoxa_dev Місяць тому

      @@SergeiCalabonga автор Hangfire в 2022 году второпях свалил из РФ в Эстонию, поставил флаг украины в шапке сайпа и разорвал все связи с заказчиками из РФ

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      @@timoxa_dev автор - я! Я до сих пор в РФ! Я никуда не собираюсь! Ни на одном из моих сайтов ничего подобного нет! Откуда такая бредовая информация? Что за хрень?

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x Місяць тому

    Спасибо!

  • @fazleev
    @fazleev Місяць тому

    По 255-му вопросу: Использовал chatGpt для конвертации небольших участков кода из С++ в С# и из Python в С# По логике конечно пробежаться необходимо, в моём случае всё было в порядке. Можно попросить привести стиль кода по гайдлайнам Microsoft, написать xml комментарии к публичным методам Не знаю как сейчас справляется с большими классами, на тот момент chatGpt не справлялся, сгенерированный код обрывался. Если просил что-то новое сделать - то всегда приходилось просить его поправить, это муторно, уж лучше самому с нуля написать

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Ключевой момент - "небольших участков кода" 😃

  • @yungflaeva
    @yungflaeva Місяць тому

    Искал полезный материал в интернете по реализации аутентификации в Swagger (13:00) и наткнулся на это видео, огромное спасибо Вам за полезный видеоролик по реализации аутентификации! :)

  • @guren3246
    @guren3246 Місяць тому

    Спасибо за видео, очень помогло =)) Но анекдот хуйня полная...

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Свои мозги другим не вставишь... впрочем, как и чувство юмора.

  • @sergbo3114
    @sergbo3114 Місяць тому

    Ну а зачем в сервисе(менеджере) принимать entity? Что мешает всю логику разместить в DocumentService и давать на вход только данные. Если данные не валидны сервис ругнется и все. Потому что получилось в подходе с анемичной моделью вы вытянули БЛ в контроллер, но можно было бы делать в сервисе при этом анемичные модели остались.

  • @7-rs8gb
    @7-rs8gb Місяць тому

    выглядит хорошо. но отрегулировать вам эхо микрофона было бы чудно

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p Місяць тому

    Спасибо. Интересные вопросы и интересные ответы

  • @vladhr4083
    @vladhr4083 Місяць тому

    есть интересная библиотека Bogus для сидирования данных. особо может быть хороша в связке с ef

  • @user-ri7mk9ek6e
    @user-ri7mk9ek6e Місяць тому

    Почему бы не померить производительность immutable и mutable?

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Если будете измерять, напишите пожалуйста результаты в комментариях.

  • @_maxim_gr_9056
    @_maxim_gr_9056 Місяць тому

    Когда нибудь я дорасту до уровня применения информации из этого видео, а пока поддержку комментарием.

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Уверен, что это случится очень скоро!!

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x Місяць тому

    Видео длинное, хотя бы обьяснили тогда, что такое паттерн Repository и что за паттерн UnitOfWork, и как эти два паттерна между собой сочитаются. А то взяли и просто подключили свои библиотеки.

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Так если "просто подключили", то что объяснять? Да и а начале видео, я так и сказал, что "покажу, как я это делаю", а не "расскажу про основные паттерны работы DAL, про которые разработчик должен знать и без меня, не говоря уже, что в интернете полно информации". 🙂

    • @ziegimondvishneuski3317
      @ziegimondvishneuski3317 Місяць тому

      Repository - это обстракция, для обеспечения гибкости. Сегодня вы работаете с Posgress, завтра с MSSql, и для облегчения перехода от одного к другому, делают такую вот прослойку. UnitOfWork обеспечивает целостность сохранения данных в разрезе Transaction

  • @user-et8ig8hl7k
    @user-et8ig8hl7k Місяць тому

    А почему при сохранении в БД используется SpecifyKind? Он же не преобразует дату, а только меняет Kind. Если дата была Local, то значение не поменяется. Не логичнее использовать ToUniversalTime?

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      Я пробовал, у меня получилось на тот момент. Попробуйте. Очень интересно, получится или нет.

    • @user-et8ig8hl7k
      @user-et8ig8hl7k Місяць тому

      @@SergeiCalabonga потыкал разные варианты на текущем проекте и получилось следующее. При использовании LinqDynamic для генерации запросов в БД обязательно использовать ToUniversalTime. Иначе сначала либа конвертнет в Local, а затем мы проставим UTC. И в БД появится гап на оффсет даты при сравнениях и фильтрации. А вот если без LinqDynamic работать, то разницы можно сказать и нету

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      О! Это интересная информация. Приму к сведению! Спасибо огромное!

  • @74Photon
    @74Photon Місяць тому

    Вы упомянули, что есть видео про Definition, а ссылки на него не указали. Можно добавить ее в описание под видео?

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      boosty.to/calabonga/posts/9d1be9bb-a117-4a17-877e-252d58be9800?share=post_link

    • @SergeiCalabonga
      @SergeiCalabonga Місяць тому

      boosty.to/calabonga/posts/136c41fd-1c86-47a2-9d26-feee6355cfca?share=post_link

  • @dy0mber847
    @dy0mber847 2 місяці тому

    Спасибо братан, полезное видео

  • @DENDYTWOO
    @DENDYTWOO 2 місяці тому

    а что за расширение, которое показывает какие сущности являются таблицами в бд?

  • @apelsinka18
    @apelsinka18 2 місяці тому

    А почему в шаблоне Domain и Infrastructure это отдельные проекты, а Application это просто папка в Web?

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Потому что реальная жизнь всегда сложнее, чем паттерны с абстрактными правилами. Шаблоны были созданы из реальных проектов, натянуть правила на тот момент не получилось. А потом и смысла не было. Да и нет правил с привязкой контекста к проектов к папкам или целым проектам, или даже solutions. Так что "как прибыли, так и держится" 😅

  • @andreypetrov7637
    @andreypetrov7637 2 місяці тому

    Огромное благодарность за столь ценный источник примеров как нужно писать код!

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Благодарность - это хорошо! Но на хлеб её не намажешь... 😉

  • @user-bz3uv2gy7v
    @user-bz3uv2gy7v 2 місяці тому

    инстолл

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x 2 місяці тому

    Если вы пишите один микросервис, а коллеги пишут другие микросервисы, то как вы локально тестируете свой микросервис, который для работы требует другие? Запускаете в docker compose?

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Unit-тесты, запуск в окружении Staging, запуск локально в Docker (в том числе docker compose)

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p 2 місяці тому

    Спасибо. Интересный урок по API

  • @user-mt2oc1zg4p
    @user-mt2oc1zg4p 2 місяці тому

    Здравствуйте, может быть расскажите в видео про ConfigureAwait()?

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Кажется "изжёванная" тема. Куча информации в интернете.

  • @user-qg6fn3qx9m
    @user-qg6fn3qx9m 2 місяці тому

    Не понимаю, почему не сделать отлов exception с переводом его в коды ответов , один раз сделали и везде используем не извращаясь над бизнес логикой. Да exception нельзя использовать вываливая исключения как постоянные ответы , но ведь это исключения на нештатные ситуации которых не должно быть. Если разраб бомбит api невалидными данными, то надо решать кривизну его рук)

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Делай как нравится, я тоже так делаю. Я же не заставляю делать как я. Я просто поделился опытом. Сделай видео о своём опыте - посмотришь комментарии о нем, всё сразу станет на место. 😁

    • @arfreekiller
      @arfreekiller 2 місяці тому

      @@SergeiCalabonga а если без холиваров, то чем плох такой подход?

    • @user-im6lx5yb7e
      @user-im6lx5yb7e 2 місяці тому

      При таком подходе, каждый раз, при выбросе исключения будет собираться стектрейс, что довольно накладно и будет замедлять работу приложения (критично для хайлоад)

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      @@user-im6lx5yb7e дык, не выбрасывать тогда! Класс исключения показан только в качестве демонстрации. Создай свой класс DTO и выкидывай его. Забудьте вы уже прл исключения, видео не об этом.

    • @andrey_aka_skif
      @andrey_aka_skif 2 місяці тому

      Как я понял, автор делает упор на способ правильно вернуть результат из контроллера. Т.е. вместо IEnumerable<Item> он возвращает IActionResult. По идее, можно вернуть ActionResult<IEnumerable<Item>>. Но суть та же. Это не голые данные, а контейнер, который содержит и данные и дополнительную информацию. Например, описание ошибки. Однако, чтобы не засорять контроллеры бизнесовой логикой, он вынес её в сервис. И для удобства возвращает Operation.Result. Как я понимаю, у Вас возникли вопросы именно к этому? В таком подходе фактически используется паттерн Result. Он ещё напоминает монаду (но не готов обсуждать подробнее). Идея в том, что Exception это исключительная ситуация, с которой хз что делать. Обычно "ошибка" сервиса вполне осмысленная, а то и вовсе не ошибка. Например, 409 Conflict никакая не исключительная ситуация. Абсолютно рядовая ситуация при дублировании имени пользователя. Зачем нам падать? Можно вернуть объект, содержащий или данные или сообщение с подробностями. Т.е. работая с сервисом, который возвращает Result, мы уверены, что в нем не возникнет Exception. И нам не нужно дополнительно оборачивать его в try/catch. При этом в самом сервисе try/catch очень даже могут быть. Но свои ошибки сервис отлавливает сам. А контроллер его спокойно пользуется.

  • @andrey_aka_skif
    @andrey_aka_skif 2 місяці тому

    Не совсем понял, можно ли с помощью Вашего пакета возвращать что-то, кроме 200? Например, 201 Created или 204 No Content. Это ведь тоже Success результат. Кстати, встречал реализацию, в которой сервисы возвращают специализированные наследники Result, соответствующие некоторому бизнес-результату - Success, Created, NoMoney и т.д. И для них созданы методы расширения, которые конвертируют такой Result в ActionResult. Т.е. контроллер становится ещё короче. Сводится к чему-то типа return _service.GetData().ToActionResult(); Что думаете о таком подходе? Возможно, он есть в других Ваших пакетах.

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Я думаю, что чем проще, тем лучше. Работаю в командах, где есть разработчики с разным уровнем знаний. Поэтому, ещё раз, чем проще, тем лучше. Мне кажется, мой подход очень прост.

    • @andrey_aka_skif
      @andrey_aka_skif 2 місяці тому

      @@SergeiCalabonga спасибо за ответ!

    • @yuryermolov13
      @yuryermolov13 2 місяці тому

      Судя по исходному коду реализаций для этих статусов нет.

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      @@yuryermolov13 осталось только определиться - нет статусов чего?

    • @yuryermolov13
      @yuryermolov13 2 місяці тому

      @@SergeiCalabongaДля 201 Created или 204 No Content

  • @salov_ev
    @salov_ev 2 місяці тому

    Прикольный подход :) я обычно просто респонс объект возвращаю но тут круто что можно вернуть разные значения и к тому же минимум кода и модификаций

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Мне тоже очень нравится. А ещё это соответствует Single Responsibility Principle (SRP). И это практика из большого опыта.

  • @mr.pidrum1488
    @mr.pidrum1488 2 місяці тому

    Топовый контент.

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Я тоже так думаю, спасибо!

    • @mr.pidrum1488
      @mr.pidrum1488 2 місяці тому

      @@SergeiCalabongaВам спасибо большое

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      @@mr.pidrum1488 всегда пожалуйста

  • @user-zf6ur9xc5i
    @user-zf6ur9xc5i 2 місяці тому

    А в чём разница? Лучше объясни разницу в этих трёх терминах.

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Если не понимаешь, то объяснение не поможет. 😔

    • @user-zf6ur9xc5i
      @user-zf6ur9xc5i 2 місяці тому

      @@SergeiCalabonga то есть ты тоже не знаешь.

    • @SergeiCalabonga
      @SergeiCalabonga 2 місяці тому

      Знаю, но тебе не скажу. Подрастешь - сам поймёшь... наверное.

  • @evgenasd8892
    @evgenasd8892 3 місяці тому

    Здравствуйте Сергей, подскажите как вы нашли золотую середину между качеством кода и быстротой разработки. Подробнее: года 3 назад я справлялся с задачами в срок, все было хорошо, но не устраивало то что модификация функционала тянула за собой то что во многих местах нужно было внести одинаковые изменения. При изменении одной логики ломалось и чтото отваливалось в совсем других не предсказуемых местах. Для добавления/расширения функционала требовалось раза в три-четыре дольше времени чтобы внести в существующую систему (чем если бы это был новый проект) такие и еще другие моменты натолкнули меня на поиски (истины) хотябы того что могло помочь и разрешить эти проблемы. И я нашел)) этим оказалась обьектно ориентированная парадигма программирования. Начав изучать мне очень понравились все ее преимущества (и плюшки как говорят) . Но вот что изменилось в дальнейшем: сроки на разработку я начал просрачивать в двое а то и в трое намеченных руководством. Я пытаюсь построить «чистую архитектуру» с распределенными обязанностями между сущностями, ну вопщем загорелся клин кодом поинципами солид, и паттернами проектирлвания. Первое что я хлебнул это то что не стоит строить на основе паттерна что либо. Только когда возникнет потребность тогда и применять а тначе очень усложнеяшь что то и не пригодится возможно в дальнейшем. Но ни как не получается строить системы которые будут масштабируемыми в дальнейшем. Строить из говна и палок, не хочу, лишь бы работало прям щас, . Я понял что делать пистолет с возможностью трансформации в робота не нужно если нет такого требования, и ты сам предполагаешь вдруг пригодится, да не нужно. И реализовыватьв срок не получается. Вопрос: какую сложность системы /ее декомпозицию нужно заложить в самом начале, чтобы позже при необходимости можно было легко расширять а не изменять существующий код(как дядя боб сказал, Нуда ладно) потому что п процедурном стиле уже точно не хочу писать и копи пастить все подряд, но и на продумывание в глубину архитектуры, поведения сущностей, и распределения обязанностей, не хватает времени. Хочу успевать сдавать проекты в срок. Можете дать консультацию?

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      Могу .

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      Могу поделиться опытом. Могу снять короткое видео об этом. Если коротко, то паттерны - это хорошо. Но реальность - реальнее.

    • @evgenasd8892
      @evgenasd8892 3 місяці тому

      @@SergeiCalabonga можно вам позвонить?

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      @@evgenasd8892 консультации в порядке очереди, по субботам.

    • @evgenasd8892
      @evgenasd8892 3 місяці тому

      @@SergeiCalabonga запишите меня пожалуйста, или нужно самому где то записаться?

  • @semenivanoff8615
    @semenivanoff8615 3 місяці тому

    Так масстранзит он же для дотнета. Кто им пользуется сегодня то?

  • @semenivanoff8615
    @semenivanoff8615 3 місяці тому

    Сишарп? Асп нет? Сегодня? Фуууууу

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      В кривых руках и калькулятор зависает 😂

  • @andreypetrov7637
    @andreypetrov7637 3 місяці тому

    Во истину супер определение

  • @Vova_Nesolenov
    @Vova_Nesolenov 3 місяці тому

    Подскажите пожалуйста, какие продукты ришарпера нужны для веб разработчика!?

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      Те, которыми будете пользоваться

  • @alex-zc4cq
    @alex-zc4cq 3 місяці тому

    Спасибо

  • @HeyWhoTheFuckAreYou
    @HeyWhoTheFuckAreYou 3 місяці тому

    Эх, было бы у OpenIddict ещё документация адекватная на уровне Identity Server, цены бы ему не было. А так для того, кто вообще ни разу не работал с подобными сервисами аутентификации/авторизации очень сложно вникнуть во всё происходящее.

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      нет у меня такой документации

  • @masdaiable
    @masdaiable 3 місяці тому

    Когда, вижу на видео лого твоего бренда сразу понятно, что видео стоящее

    • @SergeiCalabonga
      @SergeiCalabonga 3 місяці тому

      Приятно понимать, что кому-то полезное видео я создаю. Спасибо.