подскажите пожалуйста, а как поведет себя класс синглтон, который хранит в себе уже какие то данные, если к нему обратится с разных клиентов? Они оба будут видеть одно и тоже? Если да, то как сделать чтоб для каждого клиента был свой экземпляр класса?
@AndreyShyrokoriadov7 күн бұрын
>> Они оба будут видеть одно и тоже? Да. >> Если да, то как сделать чтоб для каждого клиента был свой экзамен маляр класса? Если у каждого клиента будет свой экземпляр класса, то это уже не будет синглтон. В библиотеке Autofac зарегистрированные зависимости по умолчанию не являются синглтонами. Если Вы хотите сделать дать зависимость синглтонам (всегда будет возвращать тот же самый экземпляр класса), то необходимо добавить метод .SingleInstance() к регистрации зависимости. В чистом .Net Core для регистрации синглтонов необходимо вызывать метод .AddSinglton(), а если синглтон не нужен то методы .AddTransient() или AddScoped().
@LM-nf1hf6 күн бұрын
@@AndreyShyrokoriadov спасибо за ответ
@eliseyworker7 күн бұрын
спасибо за объёмное видео!
@kurorin3318 күн бұрын
спасибо большое)
@barbarasam887616 күн бұрын
KAUNAS ❣️ 🇱🇹 😀 👏👏👏👏👏🥰
@it_cat_code18 күн бұрын
Спасибо больше за объяснение! самое понятное объяснение
@user-dm9mk6tc7p18 күн бұрын
У вас тут каждое видео важно для повседневной работы
@ookhands384324 күн бұрын
В видео описаны примеры использования готовых атрибутов. А есть пример реальной задачи которую можно решить с помощью самодельного атрибута? Спасибо.
@AndreyShyrokoriadov23 күн бұрын
Спасибо за вопрос. Вот пример использования самостоятельно созданного атрибута. Предположим у Вас есть некоторая модель, которую необходимо записывать в файл CSV. Заголовки файла CSV - это названия свойств модели. Предоположим, что наша модель это класс с 3-мя свойствами: имя, фамилия, возраст. Заказчик в спецификации указал, что загаловки должны быть на английском языке: Name, Surname, Age. Однако, оказалось, что код разрабатывался немецкой компанией и названия свойств всех моделей были на немецком языке. Приложение большое, менять названия свойств нельзя, чтобы избежать ошибок. Здесь мы можем использовать атрибуты, так как они не влияют на уже существующий код. Тогда алгоритм будет следуюший: 1. возьми класс, который небходимо записать в файл CSV. 2. прочитай атрибут названия заголовка в каждом свойстве класса. 3. запиши первую строчку с прочитанными заголовками из атрибутов в файл CSV. 4. запиши остальные данные в файл CSV. Пример класса с немецкими названиями свойств: public class User { [CsvHeader("Name")] public string Vorname { get; set; } [CsvHeader("Surname")] public string Nachname { get; set; } [CsvHeader("Age")] public int Alter { get; set; } } Пример класса атрибута: public class CsvHeaderAttribute : Attribute { public CsvHeaderAttribute(string header) { Header = header; } public string Header { get; set; } } Атрибуты читаются рефлексией. Данные в файл записываются стандартными функциями из пространства имен System.IO.
@araslanrusАй бұрын
Все конечно интересно, но кому это интересно кроме собеседуещего, за годы работы ни разу эта информация не понадобилась, вспоминаешь ее только на собесах
@AndreyShyrokoriadovАй бұрын
Согласен с Вами на 💯 процентов.
@kl45gpАй бұрын
спасибо
@ookhands3843Ай бұрын
Спасибо. Можно пример из жизни, когда длл дергается рефдексией. В ролике объяснение не понятное. Спасибо.
@AndreyShyrokoriadovАй бұрын
В современных приложениях нет необходимости дергать длл рефлексией… поэтому примеров нет. Теория, которая когда-то была практикой.
@sehrgutlocjАй бұрын
Сегодня вопрос на собеседовании что делает Getenumerator(){ yield return 1; yield return 2; yield return 3; yield return 4;}
@redice8928Ай бұрын
А как async await раскрывается под капотом, и можно ли получить резалт без использования этих ключевых слов и без блокировки основного потока
@sehrgutlocjАй бұрын
При всем увжении тут поплыли и все в кучу и анонимные типы и linq
@sehrgutlocjАй бұрын
Бестолковое объяснение, бессистемная и непонятная, броски по тексту
@AndreyShyrokoriadovАй бұрын
Хотелось бы услышать / увидеть Ваше объяснение, но я ничего не нашел 🤦♂️
@sehrgutlocjАй бұрын
@@AndreyShyrokoriadov дедактики не хватает. Я не обучаю программированию
@AndreyShyrokoriadovАй бұрын
@@sehrgutlocj у Вас в слове «Дидактика» ошибка…
@sehrgutlocjАй бұрын
@@AndreyShyrokoriadov я малограмотный
@HeIvisАй бұрын
отличное видео, спасибо большое!!
@prethink-devАй бұрын
Спасибо, полезный материал.
@of_youtubeАй бұрын
2:30 неправильно
@bebronuh222Ай бұрын
а как правильно?
@of_youtubeАй бұрын
@@bebronuh222 Автор сказал - объекты на куче, на которые нет ссылки в стеке будут удалены Это не правильный ответ Если у тебя в стеке есть ссылка на объект Person, но нет ссылки на объект Hand, в то время как Hand является частью Person, то объект Hand из кучи не удалится! Более правильная формулировка - gc удаляет все объекты, на которые нет ссылки из стека И на которые нет ссылки из других объектов кучи, на которые ещё есть ссылка из стека (вложенность может быть больше: Person (есть указатель в стеке), Hand (нет указателя в стеке, но это часть Person), Finger (нет указателя в стеке, но это часть Hand, который часть Person)
@maksa83Ай бұрын
В контексте перегружения (overloading) методов, тип возвращаемого значения НЕ ВХОДИТ в сигнатуру метода. Но в контексте делегатов (о чём вы как раз говорите на 1:52), тип возвращаемого значения ВХОДИТ в сигнатуру метода. Типы возвращаемых значений у делегата и замещающего его (делегат) метода должны совпадать.
@Raakkaa2 ай бұрын
Нужно ещё упомянуть, что операторы сравнения перегружаются всегда парами == и !=, < и >, <= и >=, нельзя просто переопределить !=, тоже самое и про перегрузку true и false.
@Raakkaa2 ай бұрын
Про методы расширения хотелось бы написать, в них this используется со static. Создаётся статический класс, статический метод и this указывается в параметрах метода.
@zenshhir03 ай бұрын
Здравствуйте, вопрос по поводу работы AutoFixture, насколько я понял при вызове метода Create он каждый раз генерирует случайное число, есть ли способ ограничить разброс этих чисел. Спасибо за видео, оказалось очень полезным.
@AndreyShyrokoriadov3 ай бұрын
Доброго времени суток. По ссылке ниже описано как генерируются числовые типы в AutoFixture. github.com/AutoFixture/AutoFixture/wiki/v3.0-Release-Notes#numbers-are-random Мне кажется Вам надо присмотреться к классу RandomNumericSequenceGenerator.
@user-ql9ye5mx6u3 ай бұрын
Круто!
@goldgold5943 ай бұрын
Большое спасибо за ролик!
@user-ok8dp3mt1w3 ай бұрын
Правильно ли будет сказать что смысл патерна "Фасад" в том чтобы сложную систему связанных классов представить в виде простого интерфейса для клиента?
@AndreyShyrokoriadov3 ай бұрын
Да, это главный смысл данного паттерна.
@user-pi4mx6vi8u3 ай бұрын
@@AndreyShyrokoriadov, спасибо
@Ledrunning3 ай бұрын
Спасибо за видео! Но есть момент, зря не показали связку событий и делегатов.
@moon59643 ай бұрын
Отличные ролик
@IPmen100013 ай бұрын
Подскажите пожалуйста никак не могу понять. Есть метод асинхронный в Web API который возвращает какие то данные в методе стоит задержка на 10 сек. Так вот никак не могу понять клиент сразу получит ответ но он будет пустой т.е он получит таску без данных. Или если клиент задержится на странице то данные ему придут через секунд? Спасибо
@AndreyShyrokoriadov3 ай бұрын
данные придут через "икс" секунд. В это время в интерфейсе пользователя будет какая то анимация символизирующая ожидание. То есть клиент ничего сразу не получит. Он получит данные, как только они будут готовы (после выполнения таска). А если таск настолько массивный, что он длится минуты или даже часы, то можно клиенту сразу вернуть статус 201 Accepted (естественно без данных). Когда таск будет выполнен об этом надо как-то проинфирмировать клиента (есть разные способы, например с помощью библиотеки SignalR). Сообщение клиенту будет содержатьинформацию о том, что такс закончился и данные можно скачать без задержек.
@IPmen100013 ай бұрын
@@AndreyShyrokoriadov спасибо большое за разъяснения 🤝
@Leonidn19724 ай бұрын
Thanks a lot, awesome content.
@IPmen100014 ай бұрын
Есть ли у вас лекция про асинк эвейт?
@AndreyShyrokoriadov4 ай бұрын
На сколько я помню, в моих видео нет видео посвященного исключительно ключевым словам async/await
@StroyManosfera4 ай бұрын
Неплохо разложено, и шпаргалочка путёвая.
@user-oo6cz3wp8s4 ай бұрын
❤спасибо за видео.
@saint82835 ай бұрын
10:11 а почему мы ожидали, что (j == 1)? Я не понял. Под капотом i++ сначала происходит возврат исходного значения, а потом увеличение на 1. var i = 0; var j = i++; Тут j будет 0 в любом раскладе, разве нет?
@artemivanov21415 ай бұрын
Кутаиси наверное самый уютный город Грузии
@Lisiy_Lis5 ай бұрын
10:40 мне кажется вы тут ошиблись. Equals проверяет названия свойств, их порядок, их значение. Оператор == проверяет, указывают ли 2 ссылки на один объект в куче. Если бы вы писали и демонстрировали код - эту ошибку легко было бы обнаружить.
@rodiondolgopolov93395 ай бұрын
Отличный материал. Есть в планах записать видео RabbitMQ?
@AndreyShyrokoriadov5 ай бұрын
Нет, такого в планах нет.
@Lisiy_Lis5 ай бұрын
Отличное видео! Единственное что - 13:02 тут в 101 строке опечатка, ее поиск и исправление остались за кадром и в 14:17 "магическим образом" все стало правильно. С дидактической точки зрения так делать не следует (лучше поверх видео добавить комментарий в стиле "а вот тут у меня опечатка").
@user-fu1gf7lp7x6 ай бұрын
Это базовый полиморфизм я правильно понимаю
@sabrdac39246 ай бұрын
Люблю Вильнюс...
@MultiSenis6 ай бұрын
Каунас - город Юнеско. О какой советской оккупации следует говорить? 1500 архитектурных шедевров мирового уровня. Город модернизма. Как Париж, Барселона. Предстоит долгая реставрационная работа.
@user-en7hd8li8p6 ай бұрын
Вопрос возник. А что было такого плохого в технологии COM, что ее решили заменить целой средой разработки?
@user-mk6ku2ol1x6 ай бұрын
Хороший пример min-рефакторинга и max-рефакторинга. Я несколько лет самостоятельно изучаю .Net C#. Ваш видеоурок с источником кода на Github очень помог мне понять, что такое чистый код. Использую для подготовки к собеседованию. Здорово, что профессионалы делятся своими знаниями с начинающими.
@Rueslan6 ай бұрын
чувствую себя говнокодером...
@AndreyShyrokoriadov6 ай бұрын
Самокритика - первый шаг к совершенству.
@user-mc2kn4uo8n6 ай бұрын
Спасибо за видео! Единственное замечание: не называйте, пожалуйста, сервисы услугами. Каждый раз в голове приходится переводить это слово) Ни разу не слышал, чтобы где-то ещё слово "сервисы" заменялось на "услуги"
@user-ii9xe4pu6x6 ай бұрын
Как-то всё очень сумбурно
@ForYouNegative7 ай бұрын
блин бро ток начал видос твой смотреть надеюсь поможет. стоит задачка реально тривиальная в коробку добавить свой модуль в котором просто отрисовывать картинку, но вот как работает маршрутизация не понятно, просто по классам если смотреть полная белеберда, смотрю в примеры и хочется выйти) Еще и коробкой все усложняется, тк отдает ссылки на картинки без расширения на скачивание, то есть в элементарное вью с тегом img уже с лета не воткнуть(.
@bananje27687 ай бұрын
Спасибо большое за серию уроков! Снимите серию видео на тему DDD архитектуры с разбором проектирования домена, реализации доменных событий и прочего.
@faizulla58387 ай бұрын
Зачем общий клас и еще один в примере назвали ОДИНАКОВО? теперь не все понятно...хотябы workerClass2 ...
@AndreyShyrokoriadov7 ай бұрын
О! Magic numbers пошли 😀
@faizulla58386 ай бұрын
@@AndreyShyrokoriadov при чем Магия? вы не ответили, можно second написать вместо 2ки .... не всегда удобно прописывать., ясно ... проскочили ))
@faizulla58387 ай бұрын
а че чел не может снимать свои видео в одной одежде??
@user-pi9cb7wb4e7 ай бұрын
Андрей, добрый день! Не могу найти ссылку на Ваш гитхаб, где можно не найти? :)