- 158
- 504 337
Архитектор ПО. Александр Желнин
เข้าร่วมเมื่อ 22 ต.ค. 2011
Fullstack: C#, Angular, Micro service. И сопутствующие технологии.
Использование терминов при общении
#программирование
Обсудим как использовать термины
В своём видео я больше говорю, не то что программисты говорят друг другу, а например, мы работаем по скраму и у нас каждый день общие мероприятия, как между собой, так и с участием заказчика, например: каждый день с утра "стендап" где разработчики рассказывают что сделала и что будут делать сегодня (на этой встрече кучу людей не только разработчики. 1н раз в неделю "груминг" это когда с заказчиком разбираем что конкретно нужно делать в задачах из бэклога. 1н раз в 2е недели мы делаем демонстрацию что было сделано, тут вообще кучу людей от заказчика. Я молчу что на всех встречах аналитики, разные руководители и т.д. И ТЕПЕРЬ ПРЕДСТАВЛЯЕТЕ РАЗРАБОТЧИК НАЧИНАЕТ С ЭТИМИ ЛЮДБМИ ГОВОРИТЬ КАК НА КОРЕЙСКОМ? Они ничего не понимают. Поэтому даже если в в общении между собой будете говорить простыми словами - это только улучшит ваше общение между разработчиками, не говоря об общении с аналитиками, заказчиками, руководителями.
Обсудим как использовать термины
В своём видео я больше говорю, не то что программисты говорят друг другу, а например, мы работаем по скраму и у нас каждый день общие мероприятия, как между собой, так и с участием заказчика, например: каждый день с утра "стендап" где разработчики рассказывают что сделала и что будут делать сегодня (на этой встрече кучу людей не только разработчики. 1н раз в неделю "груминг" это когда с заказчиком разбираем что конкретно нужно делать в задачах из бэклога. 1н раз в 2е недели мы делаем демонстрацию что было сделано, тут вообще кучу людей от заказчика. Я молчу что на всех встречах аналитики, разные руководители и т.д. И ТЕПЕРЬ ПРЕДСТАВЛЯЕТЕ РАЗРАБОТЧИК НАЧИНАЕТ С ЭТИМИ ЛЮДБМИ ГОВОРИТЬ КАК НА КОРЕЙСКОМ? Они ничего не понимают. Поэтому даже если в в общении между собой будете говорить простыми словами - это только улучшит ваше общение между разработчиками, не говоря об общении с аналитиками, заказчиками, руководителями.
มุมมอง: 1 617
วีดีโอ
Горячий ключ. Едем на вершину на моноколесах 05.11.2023
มุมมอง 429ปีที่แล้ว
#моноколеса #моноколесо #краснодар #горячийключ #insta360
Обалденные покатушки на моноколесе. Краснодар 16.07.2023
มุมมอง 643ปีที่แล้ว
#краснодар #euc #моноколесо
Как устроена многопоточность в .net
มุมมอง 8Kปีที่แล้ว
#csharp #greenthread #threadpool #backend #multithread В этом видео объясню внутреннее устройство многопоточности в .net Сравню подходы GreenThread и ThreadPool 00:00 - Вступление 04:58 - Разбиение на блоки кода для параллельной работы 06:45 - Планировщик Task Scheduler 09:50 - Исходный код .net Task, ThreadPool 11:54 - Упрощённый пример как работает "внутри" 14:17 - Упрощённая реализация Task ...
Сжатие данных при отправке с Frontend на Backend
มุมมอง 3.6Kปีที่แล้ว
#angular #frontend #backend #typescript #csharp #netcore В этом видео расскажу как сделать сжатие данных со стороны Frontend и что вам нужно сделать на Backend для того что бы принять эти сжатые данные и что бы всё другие подсистемы даже не догадались что вы передавали сжатые данные. Установка библиотеки для компрессии npm i -D @types/pako npm i pako 00:00 - Обоснование 01:26 - Сжатие со сторон...
Моноколесо Краснодар 20.05.2023
มุมมอง 932ปีที่แล้ว
#краснодар #euc #моноколесо Катаемся по краснодару, иногда даже в неожиданных местах. Я первый раз с ребятами сегодня. Они ещё большее расстояние в итоге прокатали чем я в этом ролике, с учётом того что я 5ч30м катался. В общем молодцы, кто из Краснодара присоединяйтесь.
Angular Signals. А точно ли нужен? Как работает магия сигналов
มุมมอง 10Kปีที่แล้ว
#angular #frontend В этом видео расскажу про сигналы в Angular, как они работают, сравню с RxJS Исходный код из видео: github.com/AlexanderZhelnin/Angular-Signal 00:00 Вступление 00:65 Что такое Signal 05:42 Магия Signal 12:56 Интеграция с RxJS 14:00 Отличия Signal от BehaviorSubject 19:45 Как в RxJS сделать поведение аналогично Signal 20:38 Почему Signal это не революция 24:56 Заключение
.net7 C# vs Golang. Сравнение производительности
มุมมอง 9Kปีที่แล้ว
#csharp #golang #программирование #backend В этом видео продолжу серию роликов сравнения производительности. Сравним C# и Golang Исходный код Golang github.com/AlexanderZhelnin/Golang-vsCSharpNet7vsNodeJs Исходный код CSharp github.com/AlexanderZhelnin/C-net7vsNodeJs Быстрый алгоритм float, double в строку github.com/ulfjack/ryu Классный канал для разработчика Golang (а может и других языков) w...
C# Работаем с PDF удобно
มุมมอง 5Kปีที่แล้ว
#csharp #pdf #программирование #backend #dotnet В этом видео расскажу о полезной библиотеке для формирования PDF документов - IText Исходный код из видео: github.com/AlexanderZhelnin/CSharp-Export-pdf Документация библиотеки IText: itextpdf.com/ kb.itextpdf.com/home/it5kb/examples api.itextpdf.com/iText7/dotnet/7.2.5/ Исходный код IText github.com/itext/itext7-dotnet
Делаем из своего телефона машину для разработки
มุมมอง 3.3Kปีที่แล้ว
#программирование #vscode #android #angular В этом видео я расскажу как вам превратить свой смартфон в рабочую машину для разработки. Буду показывать на примере Angular github.com/vhqtvn/VHEditor-Android
Как пройти собеседование
มุมมอง 9Kปีที่แล้ว
#angular #interview В этом видео расскажу о том как пройти собеседование, а так же базовые вопросы на собеседовании разработчика Angular th-cam.com/video/n4DCwgdHoeU/w-d-xo.html&si=EnSIkaIECMiOmarE habr.com/ru/post/137588/ learn.javascript.ru/ developer.mozilla.org/ru/docs/Web
Node.js vs .net7 C# Ответы на вопросы
มุมมอง 4Kปีที่แล้ว
#nodejs #js #csharp В этом видео отвечу на вопросы по сравнению платформ node.js и .net7 c# и проведу сравнение с учётом замечаний и предложений с предыдущего видео th-cam.com/video/xTe-UKiMkBg/w-d-xo.html&si=EnSIkaIECMiOmarE Исходный код: github.com/AlexanderZhelnin/C-net7vsNodeJs.git github.com/AlexanderZhelnin/JS-net7vsNodeJs-.git для тестов запускать без отладки
Angular. Tree shaking. Особенности работы
มุมมอง 3.7Kปีที่แล้ว
#angular В этом видео расскажу как код исключается из результата и что на это влияет Angular: полное руководство для «Внедрения зависимостей» habr.com/p/586874/
Каждый web разработчик и тестировщик должен это уметь. Chrome DevTools
มุมมอง 8Kปีที่แล้ว
Каждый web разработчик и тестировщик должен это уметь. Chrome DevTools
Angular. Как правильно рабать с входными и выходными данными. Библиотека class-transformer
มุมมอง 3.6K2 ปีที่แล้ว
Angular. Как правильно рабать с входными и выходными данными. Библиотека class-transformer
C# Humanizer. Полезная библиотека для преобразования к "человеческому"
มุมมอง 2.5K2 ปีที่แล้ว
C# Humanizer. Полезная библиотека для преобразования к "человеческому"
Angular. Типизированные шаблоны (ng-template)
มุมมอง 3.4K2 ปีที่แล้ว
Angular. Типизированные шаблоны (ng-template)
Angular apollo. Установка и автоматизация GraphQL для Angular
มุมมอง 2.9K2 ปีที่แล้ว
Angular apollo. Установка и автоматизация GraphQL для Angular
Mapster. Автоматизация сопоставления типов
มุมมอง 4.7K2 ปีที่แล้ว
Mapster. Автоматизация сопоставления типов
Полезная функция для обучения из Яндекс браузера
มุมมอง 7252 ปีที่แล้ว
Полезная функция для обучения из Яндекс браузера
Катаюсь на моноколесе. Краснодар парк Галицкого
มุมมอง 6632 ปีที่แล้ว
Катаюсь на моноколесе. Краснодар парк Галицкого
Катаюсь на моноколесе Краснодар, набережная перед "Затон"
มุมมอง 9342 ปีที่แล้ว
Катаюсь на моноколесе Краснодар, набережная перед "Затон"
Angular. Обязательные свойства компонента
มุมมอง 2.2K2 ปีที่แล้ว
Angular. Обязательные свойства компонента
огонь лучший просто , обьясняет по лучше курсов всяких дорогих
Добрый день. Спасибо за видео предельно все понятно. Но хотелось бы увидеть как отправить сообщение конкретным пользователям.
@@zluka4636 привет, как вариант с помощью динамических топиков. Если не разберёшься, то сделаю видео (что-то давно не делал 😜)
Тема наследования для отношения 1-к-0..1 не раскрыта. BookDetails можно наследовать от Book. Если в DbContext будут DbSet обоих типов, то Books.ToList вернёт сущности "правильных" типов, с учётом наследования. Т.е. коллекция будет содержать как экземпляры класса Book, так и BookDetails.
А как ограничить максимальное число записей страницы, которое может прислать клиент?
@@morozov7827 Самый простой вариант это при получении данных из entity ограничить количество получпемых данных (пишем .take(count) это из бд выберет не больше этого количества, а потом будет разбивать на страницы)
вместо комбайнЛейтест можно было бы зип юзануть
Не знаю почему, но это не скучно слушать, в отличии от других авторов, короче топ, и заебись по глубине
Спасибо, очень доступно и классные примеры!
Он сделал 2 раза для каждого типа, для json ответа и текстового. Скорее всего наворотил с атрибутами потому что по коду он считывает в одном случае текст в другом json.
Angular - СИЛА!!! React - аццтой!!! Видео - ТОП!!!
Видео бесполезно, все браузеры и так умеют сжимать. Почитайте про Accept-Encoding и content-encoding заголовки
@@nekitos501 видео было сделано, когда у нас общая подсистема прекратила пропускать большие пакеты, и тут либо нужно было сделать именно сжатие. Вы пишете о сжатых данных, которые приходят с бека, А Я ПИШУ ПРО СЖАТИЕ ОТПРАВЛЯЕМЫХ ДАННЫХ С ФРОНТА НА БЭК. Данные с фронта не сжимаются браузером
@@Kulibins1 согласен, зря быканул, не разобрался в вопросе достаточно
спасибо !
Мутации. Звучит страшно)
@@user13496 😜
С собаками не совсем верная картинка, если одно ядро,то как они съедят быстрее корм, каждому собакену будет выделен квант времени процессора, и так все собаки все равно будут по очереди съедать корм
@@glorglorsky7987 🤣
Подскажите как добавить директиву @inaccessible
@@gijduvon6379 На сколько я понял это директива сервера апполо, готовой такой же в горячем шоколаде не. Тут если написать свою аналогичную. Точно ли есть необходимость?
@@Kulibins1 добавили пакет апполо и там он есть
@@gijduvon6379 таг горячий ш-ш-ш околад об этом не знает ничего. Или именно для него появилось?
@@Kulibins1 вот здесь появилось graphql-platform/src/HotChocolate/ApolloFederation/src/ApolloFederation/Types/Directives/InaccessibleAttribute.cs
не могу найти ролик про подключение к фронту...
@@user-888azim-97 github.com/AlexanderZhelnin/angular-sat-auth-lib посмотри, как я делал авторизацию в своей библиотеке. Так же есть другие подобные
Программирование должно быть только на англ, на русском все таки смешно. Особенно комментарии на русском в коде, это, конечно дно адовое. Нравится русский - пишите на 1С. Вся литература и цивилизованный мир говорит на английском. Лично, я, когда входил в программирование уже свободно владел английским. Return переводят на русский, как возвращать. Т.е. что-то брало в долг и затем возвращало. Поэтому, чтобы не возникало такого идиотизма нужен английский. Русский и программирование - это как молоток из пластилина. С русскими/российскими компаниями вообще лучше не связываться, хотят платить в деревянных и даже слышать о USDT не хотят.
@@exactly4234 а почему я должен писать комментарии на английском? в коде который никогда не будет использоваться в международном проекте? Кроме того я не носитель английского, как и многие. Я даже больше скажу 1) у нас служба безопасности завернула всех соискателей кто был релокантом и вернулся, 2) кто даже просто работал на иностранную компанию. И кстати есть требование к коментированию кода, комментирая на английском 100% команды должно свободно владеть английским писменным, что не реализуемо, я провёл >100 собеседовпний и народ на элементарные вопросы не отвечает, не то что свободное знание английского. ЗЫ: комментарии не пишутся: "цикл", "возвращать" и т.д.
Мужик спасибо за видео. Контент годный 100 процентов! Продолжайте пожалуйста радовать людей больше!
А вот как сделать чтобы в каждом проекте был свой конфигурациооный файл для каждого инфраструктурного сервиса? Как эти конфигурации применять для запуска итеграционных тестов? Напимер есть сервис который общается с grpc серисом , есть который с редисом, есть проект с тестами который зовет grpc и смотрит что там в редисе и есть web апи которы используют эти снрвисы, и нужно собирать это всё в разных конфигурациях. У вас в конфигурации всё в одном файле, а хочется чтобы было много маленьких конфигураций для каждого инфраструктурного сервиса. И каждая конфигурация выбиралась redisSevice,localHostTestBench.json в зависимости от выбранной конфигурации
@@АлександрШмыков-ж4тУ нас множество способов установки конфигурации. Например переменные среды, для тестов задаём их. Самое главное что система все источники конфигурации интегрирует в один интерфейс, и при работе можно и не знать откуда у нас то или иное значение конфигурации
Вот конфигурация обычно это не ключ - значение это более сложные структуры интерфейс IConfiguration - какойто не понятный и предлагает мне по сути безтиповые значения. вот например я сделал такой хелпер /// <summary> /// инъектирует конфигурации из файла Json файла который ищет в папке Config /// </summary> /// <typeparam name="TIConfiguration"> Тип интерфейса конфигураций</typeparam> /// <typeparam name="TConfiguration"> Тип класса имплементирующего тип интерфейса конфигурации </typeparam> /// <param name="services"> колекция сервисов</param> /// <param name="jsonFileName"> имя файла кофигурации в формате с расширением например "GrpcClsServiceConfig.json" </param> /// <returns></returns> /// <exception cref="Exception"></exception> public static IServiceCollection AddConfigurationFromJsonFile<TIConfiguration, TConfiguration>(this IServiceCollection services, string jsonFileName) where TConfiguration : class, TIConfiguration where TIConfiguration : class => services.AddSingleton<TIConfiguration, TConfiguration>(servicesProvider => { var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @$"Config", jsonFileName); if (File.Exists(path)) { string json = File.ReadAllText(path); var config = JsonConvert.DeserializeObject<TConfiguration>(json); if (config != null) return config; throw new Exception($"Проблема с Json диссерилизацией {path}"); } throw new Exception($"Файл конфигурации сервиса {nameof(TConfiguration)} файл конфигурации не найден в ожилдаемом месте:{path}"); } ); и собствено в конструктор имплементацию сервиса он просунет соответсвующую типизированую конфигурацию : при запуске приложения както так builder.Services.AddConfigurationFromJsonFile<IGrpcClsServiceConfig, GrpcClsServiceConfig>($"{nameof(GrpcClsService.GrpcClsService)}Config.{builder.Environment.EnvironmentName}.json"); он выберет соответсвующий конфиг из папки Config И просовывает его в конструктор сервиса public GrpcClsService(IGrpcClsServiceConfig config) { _config = config; } Мне нравится этот придуманый велосипед что в папке конфиг всегда есть нужный набор маленьких конфигов под для нужного приложения или для тестов или для webapi - не нравится что это велосипед , и файлы конфигов - не перезаписывают секции как у вас в примерах а нужно всёю нужную секцию иметь
Спасибо большое
Спасибо вам, Александр!
Спасибо! Очень классно 🙏
Все дело в сериализаторах. Хорошо написанный (желательно отдельной внешней либой на С) сериализатор даст аналогичный с GraphQL результат. Однако, с этим новомодным GraphQL придется кучу логики на бэкенде делать (схемы всякие, обработкичики).
@@evgen86n вот именно не нужно изобретать велосипед
сделай плиз ролик про rxdb
@@alekscosevoi4157 интересноя штука, сам еще не использовал, поизучаю
Шарп хуже
@@вапвапвапвапва-ж1и хуже чего? 🤣
Чуть Диз за джаву не влепил
Хм, на net так легко делается, если сравнивать с другими языками)
@@alex-0x6b На других языках не пробовал
асинк-авэйт впервые появились в f#. а не c#
@@naugad2 Буду знать. Да в f# на 2 года раньше появились
кто знает как на 20:29 так переменную переименовывать?
@@user-qm5fv5by5z если стоит хоткеи как в Visual studio, то ctrl + r + r
@@Kulibins1 спасибо, у меня стандартные, но я уже пдфку с хоткеями начал смотреть, очень хотелось бы тоже использовать)
Твоя Ангулара хоть и быстра но сливной бачек для любого браузера она сольет данные клиента браузер , радуйся
Чуваки пытаються сделать безопасную шморгалку , где браузер не будет считывать данные с клиента , а только связь клиент сераер , а браузер слеп
Чувак а ты думал о безопасности , сам браузер начиная с yandex, share , являеться программой которой владеют третие лица
@@Котован-м9и Не знаю яндекс браузер считается сертифицированным в России
Сравнили с React?
@@sehrgutlocj Если делать оптимизированный код, то результат будет +/- идентичный
@@Kulibins1у нас сейчас в проект выбирают или react или blazor
@@sehrgutlocj Ничего не имею против вашего выбора
У меня почему-то срабатывает только один раз. Например в форме есть несколько элементов не прошедших валидацию. Прокручивает всего один раз, при повторных срабатываниях не прокручивает. Пробовал немного другое решение firstInvalidControl.scrollIntoView({ behavior: 'smooth', block: 'center' }); firstInvalidControl.focus({ preventScroll: true }); но в некоторых сценариях приводит к глюкам - блок(форма) уезжает вверх
@@raprap630 Что-то мне подсказывает, что вопрос именно в скроллинге, нодо смотреть ваш пример
только что наткнулся на канал пока искал ноуд листы на с# хорош мужик, крутые видео
на нет 8 или 9 не пробовали перезапустить?
@@silaevanton1844 на 8 пробовал, ссылки на исходники в описании, так что можно и на 9 запустить.
+
Мужик спасибо,мало роликов на эту тему,а тут внятно все объяснил показал,молодец
Крутой чел! Интересно смотреть❤
Если искать информацию " Где используются микросервисы?", то обычно в качестве примера, это маркетплейсы с большим трафиком. Где ещё их можно применить помимо магазинов?
Везде, где высоконагруженная большая система, Например системы мониторинга, картографии, банковские системы и т.д.
А при чем сдесь angular, скорее typescript
причём тут TS ? ts всё равно в js преобразуется, тут именно плахая работа wasm, т.к. виртуалка поверх виртуалки, как результат обычный js быстрее
@@Kulibins1 в итоге конечно js, в ts в плане написания кода
@@hap123qwe код максималтно идентичный и там и там
я в программировании самоучка, очень не хватает на русско-язычном ютубе именно таких специалистов ,интересные темы , очень хорошая подача материала . Спасибо.
всегда пожалуйста
можете 1) отсортировать этот плейлист в правильном порядке - от старого к новому? 2) сделать видео про MVC, MVP, MVVM на Win Forms. Какие есть способы реализации этих паттернов и как это делать (что в каких папках должно быть, чего где не должно быть)? Также не понял MVC - есть куча каких то разных MVC с разными схемами; MVP, MVVM - это виды MVC или нет?
Виде по winforms точно не будет. Кстати по всяким патернам у Сергея Колобонги есть хорошие видео
Хуевый пример про шенков) Извините за мой францзуский...
Перегрузка.
Вы говорите, что в Java не придумали async/await. Но чем концетуально условный `await MyTask` в C# отличается от условного `myCompletableFuture.get()` в Java который там с 2014 года ?
Штопаные индусы... Нельзя просто увеличить масштаб интерфейса и непонятно, какой шрифт стоит по умолчанию - тупо показывает "Авто". Оказывается, Segoe UI
В чистой архитектуре, на каком слое он должен реализовываться?
немного не понял про слои. это преобразование из одного типа данных в другой, если говорить терминами патернов, то это врапер. И преобразование делается сразу как оно понадобилось, я не видел, что бы выносили в какие либо слои.
@@Kulibins1 Я видел пример, в слое Infrastructure, в папке Utils хранился автомаппер. Преобразование из ProductContext в доменную модель
@@artemignat7764 теперь понял про какие слои. Это условность, иногда делают Tools иногда Shared. Все методологии носят рекомендательный характер. Конечно если у вас на предприятии это стандарт, то его нужно выполнять
Пишу микросервис по автозапчастям. На русскоязычных сайтах я заметил что , путь к ресурсам в URL описаны русскими словами. Пример ".../maslyanye-nasosy-i-detali-k-nim/" В коммерции так можно делать?
А кто запрещает? им как удобно так и делают. Главный критерий это что бы код работал без багов, 2) это масштабируемость 3) это производительность. А уж формализованность по возможности, но это моё мнение, кто-то меня за это дико раскритекует
@@Kulibins1 Спасибо.
Интеропы из WebAsm в JS и обратно - очень медленно работают. Если делать на WebAsm - то делать надо все на вебасм, без канвасов, а используя Blazor библиотеки, тот же SyncFusion к примеру - тогда норм будет.
Как раз я оценил именно без туда-обратно, а вот если ещё и туда-обратно вообще катастрофа. Может если на C или Rust написать wasm будет получше, но тут всё плохо
@@Kulibins1 благодарю за ваше исследование - было интересно.
очень полезное видео, полностью согласен с вашими мнениями. спасибо за наконец-то нормальную точку зрения среди остальных ютуберов