Перейти в АйТи
Перейти в АйТи
  • Видео 73
  • Просмотров 82 658
12-факторное приложение на dotnet: CI/CD - (слишком) много теории и Gitlab
В рамках этого цикла видеоуроков мы напишем свое веб-приложение на C#, которое в целом будет заниматься достаточно банальными вещами - поддерживать какой-то онлайн-форум, где пользователи обмениваются текстовыми сообщениями в различных чатах.
По итогам голосования победил вариант с CI/CD, поэтому давайте попробуем автоматизировать те вещи, которые мы запускаем руками, а заодно обсудим, что это вообще за зверь такой CI/CD и зачем он вообще нужен.
Сам у себя буду хлеб отбирать, потому что у меня целый курс есть по DevOps инструментам для разработчиков (slurm.io/devops-tools-to-dev), но все к тому шло :)
Начнем с самого простого - и популярного - Gitlab. Но на этом не остановимся, в дальнейшем ...
Просмотров: 603

Видео

Введение в Vue: Маршрутизация
Просмотров 359Год назад
Введение в Vue: Маршрутизация
Профессиональное развитие в IT: используем возможности компании по максимуму
Просмотров 3242 года назад
Профессиональное развитие в IT: используем возможности компании по максимуму
С новым 2022 годом!
Просмотров 2403 года назад
С новым 2022 годом!
Живая Разработка c Алексеем Колосовым. #01. Разработка бота для Телеграмм на Go, ч. 1
Просмотров 1503 года назад
Живая Разработка c Алексеем Колосовым. #01. Разработка бота для Телеграмм на Go, ч. 1
Решаем алгоритмические задачи с Артёмом Мурадовым!
Просмотров 2543 года назад
Решаем алгоритмические задачи с Артёмом Мурадовым!
Как начинающему разработчику быстро подтянуть английский - советы от Юлии Чухвичевой
Просмотров 6153 года назад
Как начинающему разработчику быстро подтянуть английский - советы от Юлии Чухвичевой
Введение в Линукс от Алексея Колосова
Просмотров 1863 года назад
Введение в Линукс от Алексея Колосова
Code Style: что такое и зачем следовать
Просмотров 1933 года назад
Code Style: что такое и зачем следовать
Решаем алгоритмические задачки с Всеволодом Севостьяновым [17.09.2021]
Просмотров 1053 года назад
Решаем алгоритмические задачки с Всеволодом Севостьяновым [17.09.2021]
Решаем алгоритмические задачи с Дмитрием Астанковым!
Просмотров 2743 года назад
Решаем алгоритмические задачи с Дмитрием Астанковым!
Добро пожаловать на канал "Перейти в АйТи"
Просмотров 6774 года назад
Добро пожаловать на канал "Перейти в АйТи"
Встреча участников проекта "Перейти в Айти" 19.03.2020
Просмотров 2524 года назад
Встреча участников проекта "Перейти в Айти" 19.03.2020
Требования к программисту Java в Европе. Что должен знать Java Developer в Евросоюзе?
Просмотров 5304 года назад
Требования к программисту Java в Европе. Что должен знать Java Developer в Евросоюзе?
Как подготовиться к собеседованию начинающему программисту. Что важно для Junior Developer?
Просмотров 4444 года назад
Как подготовиться к собеседованию начинающему программисту. Что важно для Junior Developer?
Что должен знать Python Developer? Самые востребованные навыки.
Просмотров 7894 года назад
Что должен знать Python Developer? Самые востребованные навыки.
Build and Run Grafana's Simple JSON Backend Datasource
Просмотров 14 тыс.4 года назад
Build and Run Grafana's Simple JSON Backend Datasource
Туториал по Angular с комментариями, часть I
Просмотров 1024 года назад
Туториал по Angular с комментариями, часть I
Что должен знать Junior Java Developer? Самые востребованные навыки.
Просмотров 1,3 тыс.4 года назад
Что должен знать Junior Java Developer? Самые востребованные навыки.
Перейти в Айти: как, когда, зачем. Первое видео проекта.
Просмотров 2634 года назад
Перейти в Айти: как, когда, зачем. Первое видео проекта.
NC=2 RF=3: What happens if I set a keyspace with replication factor of 3 on a cluster of two nodes?
Просмотров 905 лет назад
NC=2 RF=3: What happens if I set a keyspace with replication factor of 3 on a cluster of two nodes?
Cassandra Application Development with Java Workshop: Accessors
Просмотров 365 лет назад
Cassandra Application Development with Java Workshop: Accessors
Cassandra Application Development with Java Workshop: Prepared Statements
Просмотров 1995 лет назад
Cassandra Application Development with Java Workshop: Prepared Statements
Core Cassandra Workshop: Data Availability
Просмотров 435 лет назад
Core Cassandra Workshop: Data Availability
Core Cassandra Workshop: Data Loading
Просмотров 1725 лет назад
Core Cassandra Workshop: Data Loading
Установка и запуск Apache Cassandra v4 до релиза
Просмотров 4135 лет назад
Установка и запуск Apache Cassandra v4 до релиза

Комментарии

  • @arturbo3134
    @arturbo3134 11 минут назад

    Очень интерессно и актуально! Приятно удивился Rider так как сам на нем сейчас )) привет с дождливой Баварии

  • @nadjaparzer976
    @nadjaparzer976 4 дня назад

    Здравствуйте, в где на канале есть видео про RabbitMQ?

  • @СергейК-б6н
    @СергейК-б6н 15 дней назад

    Я наверно не очень интроверт 😅 ну все равно волнение есть каждый раз 😏

  • @СергейК-б6н
    @СергейК-б6н 15 дней назад

    Единственный серьёзный канал про айти 😎 где как то все по взрослому 😎

  • @mpmuradov
    @mpmuradov 2 месяца назад

    Из консоли миграция добавляется такой командой: "dotnet ef migrations add Initial --project TFA.Storage/TFA.Storage.csproj --startup-project TFA.API/TFA.API.csproj" Пути не забудьте правильные поставить

  • @lifemomentums
    @lifemomentums 3 месяца назад

    Это что за ide?

  • @XXIMillenium
    @XXIMillenium 5 месяцев назад

    Поднимаемые темы сложны для понимания, при этом подача материала слишком быстрая и хаотичная. Настолько, что автор сам путается и еще больше путает зрителя. Так же обычно спикеры увеличивают окно где печатают код, плохо видно, особенно при 720p.

    • @ПерейтивАйТи
      @ПерейтивАйТи 2 месяца назад

      В целом весь цикл предполагает кое-какой базовый уровень зрителя, чтобы он не путался в этих сложных темах. Скажем так, не для джунов :) Если подскажете, где я запутался и что-то непонятно/плохо рассказал, то я с удовольствием поправлюсь/попробую уточнить. Окно увеличено, тут приходится искать какую-то золотую середину между мелким шрифтом и тем, чтобы код помещался в экран - все-таки не хелловорлд пишем. Однако вы всегда можете посмотреть исходный в репозитории!

  • @gritsruslan
    @gritsruslan 5 месяцев назад

    Зачем вы пишете пустую команду и пустой валидатор для когда signout ?

    • @ПерейтивАйТи
      @ПерейтивАйТи 2 месяца назад

      Чтобы поддерживать единообразие кода. Сегодня это пустая команда, завтра уже нет. Но также в случае с MediatR вам все равно необходима команда - вы диспатчите какое-то событие, которое будет обработано соответствующим хендлером. В других случаях даже пустая команда будет указывать на тип возвращаемого значения (например, GetCurrentUserQuery : IRequest<MyAmazingUserModel>). Что касается валидатора, то мною было принято судьбоносное решение экстренно падать, если валидатор для команды не зарегистрирован, чтобы гарантированно избежать ситуации, когда кто-то забыл добавить валидатор для команды и теперь любая команда считается валидной. Таким образом, даже для пустых команд приходится добавлять пустой валидатор. Это не обязательно делать так, и, конечно, вы вольны считать команду без валидатора валидной по умолчанию, но я стараюсь поддерживать энтерпрайзные политики zero-trust :D

  • @gritsruslan
    @gritsruslan 5 месяцев назад

    Подскажите, в 59:00 вы добавляете в базу новый Storage.Topic, запрашиваете его из базы, мапите к Domain.Topic и возвращаете. Почему нельзя сразу смапить уже созданый Storage.Topic в Domain.Topic и вернуть его, не делая запрос в бд для поиска?

    • @ПерейтивАйТи
      @ПерейтивАйТи 2 месяца назад

      Так тоже можно! Но есть нюансы: 1. Сегодня мы создаем идентификатор топика на сервере, а завтра захотим, чтобы этим занималась БД, вместе с проставлением CreatedAt/UpdatedAt. В случае с идентификатором, если мне не изменяет память, подход маппинга созданного энтри продолжит работать, но вот с остальными значениями я уже не уверен. Проверю! 2. Сегодня доменная модель вот такая элементарная, а завтра окажется, что ей требуются дополнительные данные, которые нужно доставать через всякие JOIN операторы итп. Например, нужно не просто вернуть топик, но и его автора с аватаркой, именем юзера и ролью. Такое тоже можно было бы делать, доставая маппинг из текущего юзера, но это уже становится не так стабильно - а что если текущий юзер это не автор, например? Или что если я не хочу в контексте моего запроса держать ссылку на аватарку текущего юзера? Если коротко, в скоупе того, что мы сделали на видео - вы полностью правы, достаточно мапить то, что было в памяти. Я сделал преждевременную оптимизацию :)

  • @Gal_larate
    @Gal_larate 6 месяцев назад

    видос интересный, но смотреть на код в шакальном качестве - очень сложно

    • @Gal_larate
      @Gal_larate 6 месяцев назад

      шакальное качество видео, а не кода)

    • @vquilin
      @vquilin 6 месяцев назад

      @@Gal_larate ахахах, да, тут мой косяк, надо было попросить зум сделать по полной программе. В райдер все еще не подвезли кодколлаб, а то может быть можно было бы без хитрожопостей обойтись.

  • @antoniusupov
    @antoniusupov 6 месяцев назад

    Привет! Очень интересно тебя слушать. Как раз очень актуально для меня - новая работа, где придется больше девопсить, нежели в бигтех кормушке. Продолжай в том же духе! Где твои стримы проходят?

    • @ПерейтивАйТи
      @ПерейтивАйТи 6 месяцев назад

      Спасибо, очень приятно, и за вас рады! Все стримы прямо тут, на ютубе. Обычно по четвергам, но не всегда получается стабильно их проводить :)

  • @antoniusupov
    @antoniusupov 6 месяцев назад

    Привет! Очень интересно тебя слушать. Как раз очень актуально для меня - новая работа, где придется больше девопсить, нежели в бигтех кормушке. Продолжай в том же духе!

  • @freyatales9996
    @freyatales9996 6 месяцев назад

  • @sashaLaPerla
    @sashaLaPerla 6 месяцев назад

    Кайф!

  • @ПерейтивАйТи
    @ПерейтивАйТи 6 месяцев назад

    Извиняемся за проблемы с микрофоном, видео начинается с 0:01:18 по этой причине :D

  • @nikys9075
    @nikys9075 6 месяцев назад

    Спасибо за труды, обязательно пересмотрю

  • @kervenjumayev4931
    @kervenjumayev4931 7 месяцев назад

    Очень полезно, спасибо!

  • @ДмитрийГанзюк
    @ДмитрийГанзюк 7 месяцев назад

    Только начал смотреть,подскажите в этом курсе будем микросервисная архитектура?

    • @ПерейтивАйТи
      @ПерейтивАйТи 6 месяцев назад

      Извиняюсь за долгий ответ! Да, будет, в какой-то форме. Это все-таки цикл скорее о том как проектировать приложения, готовые к микросервисной архитектуре, но сам домен мало располагает к ней :)

  • @EuegenTv
    @EuegenTv 9 месяцев назад

    Супер ;) Так держать ;)

  • @timur2887
    @timur2887 9 месяцев назад

    Любопытно, почему ограничения на дженерик типы именно struct?

  • @ИльясЖунусов-э6ч
    @ИльясЖунусов-э6ч 9 месяцев назад

    Привет спасибо за контент, будешь ли делать чат? Хотелось бы увидеть как ты работаешь в веб-сокетами!

    • @ПерейтивАйТи
      @ПерейтивАйТи 9 месяцев назад

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

    • @anton-kharchenko-job
      @anton-kharchenko-job 9 месяцев назад

      ​@@ПерейтивАйТиПривет, спасибо за контент. Будет ли в проект добавлен кэш? По типу Redis or Memcached?

    • @nouchance
      @nouchance 9 месяцев назад

      @@ПерейтивАйТи Спасибо брат!

  • @tetra_Pako
    @tetra_Pako 9 месяцев назад

    Здравствуйте, будете ли вы продолжать трансляции?

  • @AEF23C20
    @AEF23C20 9 месяцев назад

    о боже уже 100 мультов строк не могут организовать без десяти никому не нужных прокладок это пипец...

  • @АнатолийЯ-ы7т
    @АнатолийЯ-ы7т 10 месяцев назад

    что со звуком ?

  • @fedorovnikolay8033
    @fedorovnikolay8033 10 месяцев назад

    Спасибо!

  • @montecristo31
    @montecristo31 11 месяцев назад

    Спасибо большое !💗

  • @xtargetplus
    @xtargetplus 11 месяцев назад

    Ждем продолжение)

  • @AlexandrSpirit
    @AlexandrSpirit Год назад

    Можете записать видео о асинхронном взаимодействии rest API (например на http или FastApi) как getaway и микросервисов. Когда требуется вернуть обработанный в 1+ микросервисах сообщение, конкретному запросу на роутере.

    • @ПерейтивАйТи
      @ПерейтивАйТи Год назад

      Можно подумать на эту тему, но если честно пока нет возможности. Как закончим со стримами по дотнету, попробуем вернуться к теме.

  • @fresh_wind87
    @fresh_wind87 Год назад

    Жаль что си шарп, Python мой

    • @ПерейтивАйТи
      @ПерейтивАйТи Год назад

      Ну на питоне все плюс-минус то же самое, только дока по aiopika похуже, имхо. Но может когда-нибудь и созреем повторить на питоне (когда автор выучит питон, хехе).

  • @AlexandrSpirit
    @AlexandrSpirit Год назад

    Для обратной связи Вопрос-Ответ, почему не использовать Correlation_ID ?

    • @ПерейтивАйТи
      @ПерейтивАйТи Год назад

      RPC в RMQ предполагает использование токена корреляции, действительно. В тех примерах, о которых я говорил, обратная связь не нужна, поскольку они асинхронные по своей природе, и поэтому нам и не было это нужно. Кейсы где RMQ заменяет собой более традиционные транспорты, типа HTTP или gRPC я не рассматривал, да и в целом скептически к ним отношусь.

    • @AlexandrSpirit
      @AlexandrSpirit Год назад

      @@ПерейтивАйТи но кейс с функционалом поисковика, разве не работает по связи вопрос-ответ? Т. Е. Вопрос от продюсера консюмеру: дай мне данные по параметру. Далее, как мне кажется, они меняются местами. Продюсер возвращает результат консюмеру (который до этого был продюсером). И тут мне непонятно, как консюмер узнает какой канал слушать? Ведь когда он создавал канал для отправки ответа, консюмер его получил и канал закрылся. Может нужно каждый раз создавать уникальный канал с именем uuid4, по которому сервису придёт запрос. Затем сервис создаст такой же для отправки ответа... Вот это мне непонятно...

  • @AlexandrSpirit
    @AlexandrSpirit Год назад

    Немного не разобрался в примерах Жаль не на пайтоне

    • @ПерейтивАйТи
      @ПерейтивАйТи Год назад

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

    • @Kopeuko
      @Kopeuko 10 месяцев назад

      @@ПерейтивАйТи странное происходит с вашим "чатом". Вроде только зашел, пишу вопрос, но меня выкидывает и и пишет "группа недоступна"

  • @ShymkoDmytro
    @ShymkoDmytro Год назад

    Владислав, все круто. Но очень тихий звук

    • @vquilin
      @vquilin Год назад

      Спасибо за комментарий! Для новых выпусков я специально прикупил себе хороший микрофон, так что со звуком должно быть все плюс-минус хорошо в дальнейшем :)

  • @АндрейГорохов-ы9ю

    Спасибо, продолжайте

  • @Евгений-х8с3г
    @Евгений-х8с3г Год назад

    Прекрасная подача материала. Автор большой молодец!

  • @eddypartey1075
    @eddypartey1075 Год назад

    Спасибо, Владислав, дал отправную точку в понимании кролика)

  • @expecto_patrronum
    @expecto_patrronum Год назад

    Так то Рэбит это глава мафии из сериала Банши

  • @qrthack
    @qrthack Год назад

    привет, что посоветуешь начинающему, стоит ли изучать c# для бэкэнда? сейчас выбираю между шарпами, го и джавой

    • @vquilin
      @vquilin Год назад

      Я конечно буду рекомендовать шарпы, но я предвзят :) Джава тоже ничего, как платформа, но язык, на мой взгляд, так себе. Но к счастью у них есть котлин.

  • @catdog_ussr317
    @catdog_ussr317 Год назад

    Спасибо большое!

  • @catdog_ussr317
    @catdog_ussr317 Год назад

    Спасибо! Супер формат курса. Спокойно, доступно, последовательно! Ждём продолжения!

  • @vquilin
    @vquilin Год назад

    Получилось очень мало нового, только банальное фичаклепание, и то не очень бодрое. Скажите, нужно ли иногда таким разбавлять стримы или лучше такой контент делать за кадром и просто бегло про него рассказывать?

    • @MZ-rn1kf
      @MZ-rn1kf Год назад

      Все ок. Продолжай!

    • @ShymkoDmytro
      @ShymkoDmytro Год назад

      Конечно, это тоже нужно.

  • @Enigma-mv6ss
    @Enigma-mv6ss Год назад

    Еще вопросы ,у меня в domain хранится модель для бд и дто а для бизнес логики слой service где я из repository получаю модель парсю на dto и отдаю к api , получается у меня domain это где просто хранится модели на сколько это хорошо?

    • @vquilin
      @vquilin Год назад

      У нас пока очень простой домен, так что в каких-то случаях он действительно "тупой". Чем дальше, тем больше в нем будет логики. Но не забывайте, что помимо моделей у нас в домене еще и юзкейсы находятся. И они бывают довольно сложными. Если бы домен больше к этому располагал, то можно было бы писать вообще в стиле DDD, но я в этом цикле хотел сфокусироваться только на "чистой архитектуре" и периферии, которая необходима для удобной эксплуатации.

  • @Enigma-mv6ss
    @Enigma-mv6ss Год назад

    У storage есть модели для бд , у domain модели и у API модели, думал нужно всего ли лишь 2 модели это для бд и для api 🤔

    • @vquilin
      @vquilin Год назад

      Как правило, каждому адаптеру нужны свои модели. Иначе ваши адаптеры начинают друг о друге знать (чтобы конвертировать модели друг друга туда-сюда). В первых видео я еще вольготно обращаюсь с этим, но к пятому видео у меня уже все полностью отгорожено :)

    • @vquilin
      @vquilin Год назад

      И спасибо за ваши комментарии и вопросы!

  • @Колобуд
    @Колобуд Год назад

    Вооот...

  • @MaryJane0801
    @MaryJane0801 Год назад

    А если я проджект менеджер, кого я могу удивить? 😅

    • @vquilin
      @vquilin Год назад

      Скажем так, опыт подсказывает, что обычно когда проджекты начинают делиться своей экспертизой в технологии с разработчиками - сюрприз это скорее неприятный. Доверяйте разработчикам и полагайтесь на их экспертизу :)

    • @halforhalf-fo4fe
      @halforhalf-fo4fe Год назад

      удиви отсутствием микроменеджмента)

  • @vquilin
    @vquilin Год назад

    Обозвал OIDC - OICD. Извиняюсь :)

  • @exsey4010
    @exsey4010 Год назад

    Очень надеюсь что Вы в скорейшем времени сделаете стрим продолжение, спасибо вам

    • @ПерейтивАйТи
      @ПерейтивАйТи Год назад

      Добавляйтесь в наш чат, там есть анонсы грядущих выпусков и возможность пообщаться со спикером :)

    • @exsey4010
      @exsey4010 Год назад

      @@ПерейтивАйТи правда? А где могу его найти?

  • @topalek
    @topalek Год назад

    Огонь!!!

  • @АндрейГорохов-ы9ю

    Докладчику большой респект, все понятно. Спасибо!

  • @KimarTV
    @KimarTV Год назад

    А где прошлые видео по vue?