- Видео 158
- Просмотров 513 342
Архитектор ПО. Александр Желнин
Добавлен 22 окт 2011
Fullstack: C#, Angular, Micro service. И сопутствующие технологии.
Использование терминов при общении
#программирование
Обсудим как использовать термины
В своём видео я больше говорю, не то что программисты говорят друг другу, а например, мы работаем по скраму и у нас каждый день общие мероприятия, как между собой, так и с участием заказчика, например: каждый день с утра "стендап" где разработчики рассказывают что сделала и что будут делать сегодня (на этой встрече кучу людей не только разработчики. 1н раз в неделю "груминг" это когда с заказчиком разбираем что конкретно нужно делать в задачах из бэклога. 1н раз в 2е недели мы делаем демонстрацию что было сделано, тут вообще кучу людей от заказчика. Я молчу что на всех встречах аналитики, разные руководители и т.д. И ТЕПЕРЬ ПРЕДСТ...
Обсудим как использовать термины
В своём видео я больше говорю, не то что программисты говорят друг другу, а например, мы работаем по скраму и у нас каждый день общие мероприятия, как между собой, так и с участием заказчика, например: каждый день с утра "стендап" где разработчики рассказывают что сделала и что будут делать сегодня (на этой встрече кучу людей не только разработчики. 1н раз в неделю "груминг" это когда с заказчиком разбираем что конкретно нужно делать в задачах из бэклога. 1н раз в 2е недели мы делаем демонстрацию что было сделано, тут вообще кучу людей от заказчика. Я молчу что на всех встречах аналитики, разные руководители и т.д. И ТЕПЕРЬ ПРЕДСТ...
Просмотров: 1 682
Видео
Горячий ключ. Едем на вершину на моноколесах 05.11.2023
Просмотров 439Год назад
#моноколеса #моноколесо #краснодар #горячийключ #insta360
Обалденные покатушки на моноколесе. Краснодар 16.07.2023
Просмотров 648Год назад
#краснодар #euc #моноколесо
Как устроена многопоточность в .net
Просмотров 9 тыс.Год назад
#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,7 тыс.Год назад
#angular #frontend #backend #typescript #csharp #netcore В этом видео расскажу как сделать сжатие данных со стороны Frontend и что вам нужно сделать на Backend для того что бы принять эти сжатые данные и что бы всё другие подсистемы даже не догадались что вы передавали сжатые данные. Установка библиотеки для компрессии npm i -D @types/pako npm i pako 00:00 - Обоснование 01:26 - Сжатие со сторон...
Моноколесо Краснодар 20.05.2023
Просмотров 937Год назад
#краснодар #euc #моноколесо Катаемся по краснодару, иногда даже в неожиданных местах. Я первый раз с ребятами сегодня. Они ещё большее расстояние в итоге прокатали чем я в этом ролике, с учётом того что я 5ч30м катался. В общем молодцы, кто из Краснодара присоединяйтесь.
Angular Signals. А точно ли нужен? Как работает магия сигналов
Просмотров 10 тыс.Год назад
#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. Сравнение производительности
Просмотров 9 тыс.Год назад
#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 удобно
Просмотров 5 тыс.Год назад
#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,4 тыс.Год назад
#программирование #vscode #android #angular В этом видео я расскажу как вам превратить свой смартфон в рабочую машину для разработки. Буду показывать на примере Angular github.com/vhqtvn/VHEditor-Android
Как пройти собеседование
Просмотров 10 тыс.Год назад
#angular #interview В этом видео расскажу о том как пройти собеседование, а так же базовые вопросы на собеседовании разработчика Angular ruclips.net/video/n4DCwgdHoeU/видео.html&si=EnSIkaIECMiOmarE habr.com/ru/post/137588/ learn.javascript.ru/ developer.mozilla.org/ru/docs/Web
Node.js vs .net7 C# Ответы на вопросы
Просмотров 4,1 тыс.Год назад
#nodejs #js #csharp В этом видео отвечу на вопросы по сравнению платформ node.js и .net7 c# и проведу сравнение с учётом замечаний и предложений с предыдущего видео ruclips.net/video/xTe-UKiMkBg/видео.html&si=EnSIkaIECMiOmarE Исходный код: github.com/AlexanderZhelnin/C-net7vsNodeJs.git github.com/AlexanderZhelnin/JS-net7vsNodeJs-.git для тестов запускать без отладки
Angular. Tree shaking. Особенности работы
Просмотров 3,7 тыс.Год назад
#angular В этом видео расскажу как код исключается из результата и что на это влияет Angular: полное руководство для «Внедрения зависимостей» habr.com/p/586874/
Каждый web разработчик и тестировщик должен это уметь. Chrome DevTools
Просмотров 8 тыс.2 года назад
Каждый web разработчик и тестировщик должен это уметь. Chrome DevTools
Развенчиваем мифы .net 7 vs Node.js 19
Просмотров 25 тыс.2 года назад
Развенчиваем мифы .net 7 vs Node.js 19
Angular. Как правильно рабать с входными и выходными данными. Библиотека class-transformer
Просмотров 3,7 тыс.2 года назад
Angular. Как правильно рабать с входными и выходными данными. Библиотека class-transformer
C# Humanizer. Полезная библиотека для преобразования к "человеческому"
Просмотров 2,5 тыс.2 года назад
C# Humanizer. Полезная библиотека для преобразования к "человеческому"
Angular. Типизированные шаблоны (ng-template)
Просмотров 3,5 тыс.2 года назад
Angular. Типизированные шаблоны (ng-template)
Angular apollo. Установка и автоматизация GraphQL для Angular
Просмотров 2,9 тыс.2 года назад
Angular apollo. Установка и автоматизация GraphQL для Angular
Mapster. Автоматизация сопоставления типов
Просмотров 4,8 тыс.2 года назад
Mapster. Автоматизация сопоставления типов
Полезная функция для обучения из Яндекс браузера
Просмотров 7282 года назад
Полезная функция для обучения из Яндекс браузера
Катаюсь на моноколесе. Краснодар парк Галицкого
Просмотров 6672 года назад
Катаюсь на моноколесе. Краснодар парк Галицкого
Катаюсь на моноколесе Краснодар, набережная перед "Затон"
Просмотров 9342 года назад
Катаюсь на моноколесе Краснодар, набережная перед "Затон"
Angular. Обязательные свойства компонента
Просмотров 2,2 тыс.2 года назад
Angular. Обязательные свойства компонента
Из этого видео я понял что такое Promise, Async, а вот RXJS вообще не понял. Ещё понял что автор где то много ещё что-то делал, но сейчас про это не будет рассказывать. Поиск нормального объяснения продолжается.
@@iHorus что по rxjs непонятно? может подскажу
Так когда продолжение?
@@ivanvoyager Есть пару материалов на эту тему. На новогодних праздниках буду записывать
Большая редкость настолько наглядная и продуманная подача материала! Невероятно ценно!! ❤🔥
Охренеть! Очень круто! Огромное спасибо!!!
Видео полезное, спасибо. Но откуда вы, блин, берете этот СЕРВАЙС? Уши режет прям бррр
@@Ghost2012qte я не носитель языка, и многие так говорят. Боюсь даже рассказать про варианты html, xml и т.д. как народ обзывает 🤣
@@Kulibins1 Надеюсь, не сочтете это за грубость. Нисколько не обесцениваю вашу работу, просто, да, режет слух. Еще раз спасибо за полезный контент!
Видео очень понятное, хорошее сравнение промисов и rxjs, хорошие "жизненные" примеры кода. Мне как имеющему опыт работы с rxjs было легко понять и структурировать какие-то знания об rxjs. Но новичку наверное будет немного сложнее сходу въехать в тему
@@НовиковаНадежда-щ2е я видосики больше для продвинутых делаю.
Не понимаю, как интерпретируемый язык может быть быстрее компилируемого 🤔. Это, наверное, в тех местах, где нет обращения к runtime-инфраструктуре и библиотекам
@@lofipolis А какой из рассмотренных язык интерпретируемый? Даже не знаю откуда растут эти заблуждения
@@Kulibins1 Может, чуть неправильно выразился. Имею в виду, Go компилируется, а у C# есть среда выполнения, как прослойка междуя байт-кодом и ОС для кросплатформенности
@lofipolis c# в итоге тоже компилируется. компиляция идёт в 2 этапа,но можно откомпилировать сразу полностью. Но с точки зрения эффективности 2йной этап лучше, т.к. код может быть оптимизирован с учётом возможностей процессора, а лишний код удалён (те же simd на разных процах могут быть разные, в коде есть оптимизации под разные simd). Сейчас даже js давно не чистый интерпретатор 😜
@@Kulibins1 Ого, не знал, давненько на нем не писал код, спасибо за инфу
@lofipolis так c# никогда не был интерпритируемым - с 1х версий
спасибо за то что делитесь опытом. а чисто интересно, какие библиотеки используют игровые студии для логов? например такая крупная игра ммо как new world она ведь по любому логирует сотни событий, как они хранят эти данные? ну с большой вероятностью все логи пишутся по сети на отдельный сервер, что бы не грузить основную серверную часть. Но вряд ли ж постгре это все сливают...
@@maksikgregory4988 Я играми не занимаюсь, поэтому ответить не смогу
База .
спасибо за видео! очень информативно и полезно что касается преобразования double/float64 в текст, справедливо бы было использовать один и тот же алгоритм (например тот же ryu)
@@sadeathoughts согласен
Все это знал, но Memory как-нибудь опробую, спасибо. Могу еще добавить про то, что не рассказано. Можно менять вид под разные девайсы для проверки адаптивности, эмулировать скорость интернет соединения во вкладке Network, тут же можно копировать запросы, выполнять их повторно и тд, Performance и Lighthouse вообще расскажет и покажет все причины тормознутости интерфейса, куки также можно менять на лету, для постмана например еще есть расширение которое позволяет копировать куки прямо с браузера... Про GraphQL хотел спросить, коль его увидел, извините, что не по теме, просто не понимаю как и зачем его можно использовать. Это же по сути бэкдор в базу. Сам по себе это инструмент, который нарушает как минимум принцип единой ответственности, перекладывая всю бизнес логику на клиент, который решает какие данные и в каком объеме гонять по сети. Что в этом хорошего? Если надо запилить по быстрому прототип или mvp, где есть ограничения ресурсов в часах и тупо не хватает бэкенд разработчиков, то ок, но в крупных коммерческих проектах от него вреда больше чем пользы.
@@stewart6395 Есть уже несколько виде, где рассказываю, зачем и почему graphql. И иж точно это не бекдор 🤣
огонь лучший просто , обьясняет по лучше курсов всяких дорогих
Добрый день. Спасибо за видео предельно все понятно. Но хотелось бы увидеть как отправить сообщение конкретным пользователям.
@@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и хуже чего? 🤣
Чуть Диз за джаву не влепил
асинк-авэйт впервые появились в 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 код максималтно идентичный и там и там
я в программировании самоучка, очень не хватает на русско-язычном ютубе именно таких специалистов ,интересные темы , очень хорошая подача материала . Спасибо.
всегда пожалуйста