У меня 15+ лет опыта в .Net и моя оценка: Кирилл мега-крутой специалист, обладающий одновременно и глубиной понимания и способностью объяснять так, что будет понятно даже новичку. По большинству IT-ютуберов очевидно, что они даже не джуны, но почему-то решили, что могут кого-то учить. Кирилл, спасибо за твой труд, буду отправлять .Net-джунов на твой канал, ты очень крутой!
Бро, сделай, пожалуйста, видос по микросервисам, на примере простого проекта. Думаю многим зайдет, так как тема довольно таки актуальная. Спасибо за твой труд.
Такое приятное ощущение, я с месяц назад смотрел этот ролик и мало чего понял, сейчас после практики и немного теории понимаю ролик на лету, те кто не понял ролик прсото пересмотрите его позже через неделю, через 2 и всё будет хорошо, кто не сильно понял ролик не переживайте. Автору большое спасибо!
Очень годно и наглядно объясняешь и показываешь многие важные моменты. Не скажу, что это будет доступно тем, кто не пытался ознакомиться и понять чтиво, но если более менее в контексте - очень полезно. Лойс
Хорошая подача материала, прекрасно всё объясняете! Занимаюсь геймдевом (на Unity), но есть желание переквалифицироваться в биздев... Читаю статьи, смотрю ролики и афигеваю от того на сколько тут в целом всё архитектурно более продуманно можно сказать из коробки) Чтобы правильно понять применение DI-контейнеров и изучить соответствующие фреймворки в Unity пришлось прям напрячься, а тут всё гораздо лаконичнее и понятнее сразу, красота прям!
Отлично объясняешь, делаю видео в так же духе. В качестве следующих тем предложу Паттерны, Микросервисы, Rabbit, Асинхронное/параллельное/многопоточное программирование, ну и конечно же примитивы синхронизации.
Супер контент! Доходчиво и понятно. Кирилл, есть предложение. Почему бы тебе на Boosty не сделать pet-проект по актуальному стеку: asp, postgres, rabbit, redis, unit тесты и т.д. Пусть он будет небольшой, но работоспособный. Думаю, многие подпишутся на такой контент, я уж точно)
хотелось бы узнать как что произойдет если зарегать 2 реализации одного и того же интефейса и как выбрать нужную в конструкторе . В начале видео было про 2 реализации IMessageService но так и не раскрылось. Так же интересно что будет если конструкторов несколько, какой конструктор выберет DI контейнер.
Проработал доступную подачу на практических примерах. Спасибо за материал. Кстати, какую платформу используешь на видео для рисования контейнеров, линий, стрелочек?
немножко не понял нужно почему внутри Worker нужен будет сервис Scope?) Точнее было бы классно если объяснили бест практики, зачем и когда это делается в каких моментах) Спасибо))
Видео отличное! Подскажи, пожалуйста, в случае, если у меня есть один интерфейс и две его реализации. Обе я регистрирую в DI. Потом мне нужно будет получать в разных местах разнве реализации. Но я буду получать только ту, которую зарегестрировал последней. Я могу создать еще по одному интерфейсу для каждой реализации. Подскажи, пожалуйста, какие хорошие практики естт для решения данной задачи.
Либо добавить еще ро интерфейсу, либо использовать метод в di AddKeyed и доставать потом по ключу, либо сделать отдельный класс, который будет резолвить и выдавать нужную зависимость. Погугли di multiple implemententions, есть несколько способов, но я бы добавил ещё интерфейсов
В C# (да и в любом ДРУГОМ объектно ориентированном языке) класс - ТОЖЕ АБСТРАКЦИЯ! Вот так новость! Само понятие "абстракция" - это берём объект реального мира, и переносим его в программный класс, выкидывая свойства и методы, которые нам не нужны в текущей контекстной области и оставляя/создавая/программируя те свойства и методы, которые нам нужны. В этом то и суть абстракции - выкидывать то что в данном контексте нам НЕ нужно. Банальный пример - класс Машины в игре и в CAD системе будут отличаться уровнем детализации (в игре попроще, в CAD системе - всё будет передано до последнего болта), но и там и там они - АБСТРАКЦИИ, потому что в игре не нужна слишком сильная детьализация, а в CAD системе - не найдётся места нереальным полётам на машине с обрыва. А в принципе полная детализация, без абстракции - невозможна в принципе, потому что она включает всё до молекулярного состояния реальных материалов и нет системы, на которой можно было бы потянуть НЕабстрактную модель машины. Есть УРОВНИ абстракции - интерфейс и абстрактный класс, которые служат определённым целям: 1. Интерфейс - для горизонтальной и СЛАБОЙ связи объектов (low coupling), которые в принципе не связаны, но имеют общие свойства и методы: т.е. объекты тотально разные, но нам как-то надо вызвать их методы: Дверь и банка - и метод Open() для обоих объектов может называться одинаково, но быть тотально другим по имплементации (и ХЗ зачем это обрабатывать в одной программе). 2. Абстрактный класс - для вертикальной СИЛЬНОЙ связи объектов (high coupling), чтобы переносить детализацию и конкретику выполнения в дочерние классы и продолжать иметь возможность использовать абстрактный класс, как связывающий элемент, для вызова конретного поведения в классах потомках. Именно поэтому полной детализации в абстрактном классе может и не быть, но в потомках - она ОБЯЗАТЕЛЬНО (или они тоже помечаются, как абстрактные), потому что при вызове этого метода - flow пойдёт в конкретного потомка и вызовет конкретный и реализованный метод, который в абстрактном родителе всего лишь описан, но без какого либо тела.
Все бы вот хорошо, но повторение ошибочной трактовки "принципа единичной ответственности" прямо бросается в глаза. Тот принцип про который вы говорите, немного про другое и не имеет отношение к SOLID. Впрочем сложно вас винить, так как это очень популярное заблуждение - даже гугл выдаёт неправильную трактовку. Обратитесь к первоисточнику - Роберту Мартину. Цитируя его "Модуль должен отвечать за одного и только за одного актора". Согласитесь, это всё же о другом. Надеюсь моё замечание не заденет вас, просто бросается в глаза.
Мой телеграмм канал - t.me/sachkov_blog
при возможности будем рады если будет видео про OOP & SOLID, это будет прям очень круто вы хорошо все объясняете!!!МОЛОДЕЦ
У меня 15+ лет опыта в .Net и моя оценка: Кирилл мега-крутой специалист, обладающий одновременно и глубиной понимания и способностью объяснять так, что будет понятно даже новичку. По большинству IT-ютуберов очевидно, что они даже не джуны, но почему-то решили, что могут кого-то учить. Кирилл, спасибо за твой труд, буду отправлять .Net-джунов на твой канал, ты очень крутой!
Кто из телеги ставьте тут лайк, посмотрим сколько нас
ОГРОМНОЕ СПАСИБО, долго искал канал с таким контентом, все очень доходчиво
круто все объяснил, спасибо за ваш труд!!!
Бро, сделай, пожалуйста, видос по микросервисам, на примере простого проекта. Думаю многим зайдет, так как тема довольно таки актуальная. Спасибо за твой труд.
Доходчево объяснять и демонстрировать требует не мало усилий и компетенций. Спасибо! Лайк! Успехов!
Такое приятное ощущение, я с месяц назад смотрел этот ролик и мало чего понял, сейчас после практики и немного теории понимаю ролик на лету, те кто не понял ролик прсото пересмотрите его позже через неделю, через 2 и всё будет хорошо, кто не сильно понял ролик не переживайте. Автору большое спасибо!
Я из GameDev и сразу научился пользоваться библиотекой Zenject. Смотрю до середины и понимаю что принципы очень похожи))) Спасибо за урок!
Очень годно и наглядно объясняешь и показываешь многие важные моменты. Не скажу, что это будет доступно тем, кто не пытался ознакомиться и понять чтиво, но если более менее в контексте - очень полезно. Лойс
Хорошая подача материала, прекрасно всё объясняете! Занимаюсь геймдевом (на Unity), но есть желание переквалифицироваться в биздев... Читаю статьи, смотрю ролики и афигеваю от того на сколько тут в целом всё архитектурно более продуманно можно сказать из коробки) Чтобы правильно понять применение DI-контейнеров и изучить соответствующие фреймворки в Unity пришлось прям напрячься, а тут всё гораздо лаконичнее и понятнее сразу, красота прям!
Отличные примеры. Объяснено очень доступно) Буду младшим коллегам отправлять ссылку для ознакомления) Спасибо за труды.
Спасибо за видео. Очень хотел сравнение со спрингом джавы. И вот получил все ответы на свои вопросы
лучший канал по дотнету!
Смотрю уже втрой гайд от тебя, контент крутой)
Спасибо за подробный разбор этой темы.
Большое спасибо, теперь я понял что такое DI и с чем его едят)
Спасибо. Очень доходчиво объяснил
Очень классное объяснение! Спасибо за труд!
Спасибо за труды!!! Очень полезная тема
Как всегда отличное обьяснение
Я наконец то понял scoped)
Большое спасибо!
большое спасибо за видео, ждем по ассинхроности видео)
Красавчик! Спасибо за доходчивое и простое объяснение!
+Подписка :3
+Лайк :)
Спасибо большое за видосики, все очень круто!! Продолжай в том же духе!
Спасибо. Очень доходчиво объяснил.
Спасибо большое за видео 🤗
Очень четко объяснил всё 🔥🔥
Классное видео. Прямо доходчиво все рассказал.
отличный ролик, спасибо!
Отлично объясняешь, делаю видео в так же духе. В качестве следующих тем предложу Паттерны, Микросервисы, Rabbit, Асинхронное/параллельное/многопоточное программирование, ну и конечно же примитивы синхронизации.
Очень круто, продолжай!
Супер контент! Доходчиво и понятно. Кирилл, есть предложение. Почему бы тебе на Boosty не сделать pet-проект по актуальному стеку: asp, postgres, rabbit, redis, unit тесты и т.д. Пусть он будет небольшой, но работоспособный. Думаю, многие подпишутся на такой контент, я уж точно)
Очень полезно, спасибо!
Крутое видео, спасибо, Кирилл!
Кирилл как всегда на высоте
очень подробно ясно все объяснил, спасибо продолжай в том же духе
Как всегда на высоте🔥
Спасибо
Смотрим стоя
Коммент для продвижения видео. Как всегда топ! 😅
хотелось бы узнать как что произойдет если зарегать 2 реализации одного и того же интефейса и как выбрать нужную в конструкторе .
В начале видео было про 2 реализации IMessageService но так и не раскрылось.
Так же интересно что будет если конструкторов несколько, какой конструктор выберет DI контейнер.
Привет, запиши пожалуйста видео где показываешь как нужно реализовывать аутентификацию через соц сети пожалуйста!!!!
Проработал доступную подачу на практических примерах. Спасибо за материал. Кстати, какую платформу используешь на видео для рисования контейнеров, линий, стрелочек?
excalidraw
немножко не понял нужно почему внутри Worker нужен будет сервис Scope?) Точнее было бы классно если объяснили бест практики, зачем и когда это делается в каких моментах) Спасибо))
Ну допустим тебе с бд надо взаимодействовать, а это scope сервис
Сохранил в избранное
Крайне несогласен с важнейшестью DIP в SOLID. Важнейший принцип это SRP, другие принципы скорее ему в подмогу
Видео отличное!
Подскажи, пожалуйста, в случае, если у меня есть один интерфейс и две его реализации. Обе я регистрирую в DI. Потом мне нужно будет получать в разных местах разнве реализации. Но я буду получать только ту, которую зарегестрировал последней. Я могу создать еще по одному интерфейсу для каждой реализации. Подскажи, пожалуйста, какие хорошие практики естт для решения данной задачи.
Либо добавить еще ро интерфейсу, либо использовать метод в di AddKeyed и доставать потом по ключу, либо сделать отдельный класс, который будет резолвить и выдавать нужную зависимость. Погугли di multiple implemententions, есть несколько способов, но я бы добавил ещё интерфейсов
@@SachkovTech спасибо)
Имба
Крутяк
Про принцып O.C.P будет?
В C# (да и в любом ДРУГОМ объектно ориентированном языке) класс - ТОЖЕ АБСТРАКЦИЯ! Вот так новость!
Само понятие "абстракция" - это берём объект реального мира, и переносим его в программный класс, выкидывая свойства и методы, которые нам не нужны в текущей контекстной области и оставляя/создавая/программируя те свойства и методы, которые нам нужны. В этом то и суть абстракции - выкидывать то что в данном контексте нам НЕ нужно.
Банальный пример - класс Машины в игре и в CAD системе будут отличаться уровнем детализации (в игре попроще, в CAD системе - всё будет передано до последнего болта), но и там и там они - АБСТРАКЦИИ, потому что в игре не нужна слишком сильная детьализация, а в CAD системе - не найдётся места нереальным полётам на машине с обрыва. А в принципе полная детализация, без абстракции - невозможна в принципе, потому что она включает всё до молекулярного состояния реальных материалов и нет системы, на которой можно было бы потянуть НЕабстрактную модель машины.
Есть УРОВНИ абстракции - интерфейс и абстрактный класс, которые служат определённым целям:
1. Интерфейс - для горизонтальной и СЛАБОЙ связи объектов (low coupling), которые в принципе не связаны, но имеют общие свойства и методы: т.е. объекты тотально разные, но нам как-то надо вызвать их методы: Дверь и банка - и метод Open() для обоих объектов может называться одинаково, но быть тотально другим по имплементации (и ХЗ зачем это обрабатывать в одной программе).
2. Абстрактный класс - для вертикальной СИЛЬНОЙ связи объектов (high coupling), чтобы переносить детализацию и конкретику выполнения в дочерние классы и продолжать иметь возможность использовать абстрактный класс, как связывающий элемент, для вызова конретного поведения в классах потомках. Именно поэтому полной детализации в абстрактном классе может и не быть, но в потомках - она ОБЯЗАТЕЛЬНО (или они тоже помечаются, как абстрактные), потому что при вызове этого метода - flow пойдёт в конкретного потомка и вызовет конкретный и реализованный метод, который в абстрактном родителе всего лишь описан, но без какого либо тела.
С ходу лайк
А есть дли данная DI-библиотека в Unity?
Есть другая, Zenject например
кайф
сколько у Вас опыта разработки?
Коммерческого - почти 3 года
@@SachkovTech фул стек или бекенд?
+
КАНАЛ ЗАБРОСИЛСЯ?
Нет, смотрите телеграм канал, сейчас занят другим делом, но скоро видео будут выходить чаще
Все бы вот хорошо, но повторение ошибочной трактовки "принципа единичной ответственности" прямо бросается в глаза. Тот принцип про который вы говорите, немного про другое и не имеет отношение к SOLID. Впрочем сложно вас винить, так как это очень популярное заблуждение - даже гугл выдаёт неправильную трактовку. Обратитесь к первоисточнику - Роберту Мартину. Цитируя его "Модуль должен отвечать за одного и только за одного актора". Согласитесь, это всё же о другом.
Надеюсь моё замечание не заденет вас, просто бросается в глаза.
конструктор пишется сверху !!!
Я панк
@@SachkovTech 😎
@@SachkovTech ( •̀ - •́ )
Микрафон на букву С фонит
Спасибо