- 70
- 856 645
Platinum DEV
Cyprus
เข้าร่วมเมื่อ 26 มิ.ย. 2020
Для разработчиков. От разработчиков. Для всех желающих.
Для продвинутых и начинающих. Для тебя и для всех.
Канал про .NET, C#, практики, собеседования и обо всём, что касается разработки ПО и разработчиков.
Добро пожаловать на канал, устраивайтесь поудобнее и чувствуйте себя как дома.
Для продвинутых и начинающих. Для тебя и для всех.
Канал про .NET, C#, практики, собеседования и обо всём, что касается разработки ПО и разработчиков.
Добро пожаловать на канал, устраивайтесь поудобнее и чувствуйте себя как дома.
Всё о HttpClient и запросах в .NET
HttpClient... С одной стороны это базовая тема. И в каком-то смысле "заезженная", но если копнуть глубже, то она вовсе не простая. Прошлым летом на работе меня попросили подготовить доклад на внутреннюю конференцию и я выбрал эту тему. А также написать небольшую статью на хабр. Кстати, будет очень здорово, если вы ее посмотрите. Так что, тема, можно сказать, обкатана и в новом видео мы подробно ее разберем.
Статья на Хабре: habr.com/ru/companies/zyfra/articles/780226/
Поддержать канал: pay.cloudtips.ru/p/cb07a2f0
Код: github.com/andreisfedotov/HttpClientSandbox
Telegram-канал: t.me/platinum_tech_talks
Telegram-чат для всех: t.me/platinum_chat
00:00 - Начало
00:11 - Приветствие
01:22 - Вступление
02:31 - Краткая история развития протокола HTTP
08:28 - История выполнения HTTP-запросов в мире .NET
10:09 - HttpClient
11:47 - Альтернативы HttpClient
12:45 - Проблемы HttpClient
20:36 - HttpClientHandler
21:29 - Общий flow HttpRequestMessage
25:25 - IHttpClientFactory
32:54 - Внутреннее устройство IHttpClientFactory
42:00 - Плохие примеры из реальных проектов
43:05 - Выводы и рекомендации
43:32 - Параллельная симфония собачьего лая
44:34 - Ссылки
45:46 - Конец
Статья на Хабре: habr.com/ru/companies/zyfra/articles/780226/
Поддержать канал: pay.cloudtips.ru/p/cb07a2f0
Код: github.com/andreisfedotov/HttpClientSandbox
Telegram-канал: t.me/platinum_tech_talks
Telegram-чат для всех: t.me/platinum_chat
00:00 - Начало
00:11 - Приветствие
01:22 - Вступление
02:31 - Краткая история развития протокола HTTP
08:28 - История выполнения HTTP-запросов в мире .NET
10:09 - HttpClient
11:47 - Альтернативы HttpClient
12:45 - Проблемы HttpClient
20:36 - HttpClientHandler
21:29 - Общий flow HttpRequestMessage
25:25 - IHttpClientFactory
32:54 - Внутреннее устройство IHttpClientFactory
42:00 - Плохие примеры из реальных проектов
43:05 - Выводы и рекомендации
43:32 - Параллельная симфония собачьего лая
44:34 - Ссылки
45:46 - Конец
มุมมอง: 1 811
วีดีโอ
Что нового в C# 12
มุมมอง 5K8 หลายเดือนก่อน
Код с примерами: github.com/platinum-team/csharp12-features Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat 00:00 Вступление 01:03 Фича: Псевдоним любого типа 03:40 Фича: Первичные конструкторы 09:20 Фича: Выражения коллекции 12:19 Фича: Встроенные массивы 13:00 Фича: Параметры лямбда выражений по умолча...
Что нового в C# 11 - новые фичи языка C#
มุมมอง 8Kปีที่แล้ว
Код из видео: github.com/andreisfedotov/csharp11-features Рассматриваем основные фичи C# 11 .NET 7 Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat
Собеседование .NET 2022 - Разбор вопросов
มุมมอง 34K2 ปีที่แล้ว
Отобрали несколько вопросов, которые задавались на разных собеседованиях в различные компании в этом году и разобрали их. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat 00:00 - Вступление 01:52 - await внутри конструкции lock 06:39 - В чем ошибка этого кода (гонки потоков, async, await..) 13:03 - Какой ...
8. Minimal APIs для больших проектов
มุมมอง 4.9K2 ปีที่แล้ว
Проекты имеют свойство разрастаться. В этом видео мы поговорим о том, как можно было бы структурировать Minimal APIs проект в реальной разработке. Технология новая, опыта разработчиками накоплено немного, но тем не менее какие-то рекомендации уже есть. На просторах сети есть, разные рекомендации о том как можно организовать код, но мне больше понравились размышления Шона Вёлдемуса на конференци...
7. Minimal APIs - добавляем аутентификацию
มุมมอง 4.2K2 ปีที่แล้ว
В данном видео мы добавим аутентификацию для Web API проекта. Сгенерируем токен доступа и закроем эндпоинты от неавторизованного доступа. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat Код из видео: github.com/andreisfedotov/Hotels/commit/b15a656953179d3bbc5766a3ff01915a073acf89
6. Minimal APIs .NET 6 - что ещё интересного умеет эта технология
มุมมอง 3.2K2 ปีที่แล้ว
В данном видео мы посмотрим какие ещё клёвые вещи умеет делать Minimal APIs в .NET 6. Мы узнаем как в Minimal APIs вернуть XML (или любой другой отличный от формата ответа по-умолчанию). Также мы разберемся как определить кастомную DTO и то как ее парсить. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat ...
5. Minimal APIs - добавляем Swagger в Web API
มุมมอง 3.5K2 ปีที่แล้ว
В очередном выпуске по Minimal APIs мы посмотрим как подключить Swagger в проект для автодокументрования кода. В отличие от проектов, использующих контроллеры, здесь это выглядит очень интересно! Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat Код из видео: github.com/andreisfedotov/Hotels/commit/898a81e...
4. Minimal APIs - добавляем репозиторий
มุมมอง 4.4K2 ปีที่แล้ว
В 4-м выпуске по Minimal APIs мы продолжим "усложнять" (разрабатывать) Web API проект для работы с информацией об отелях и добавим репозиторий, чтобы не работать с контекстом напрямую. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat Код из видео 2-4: github.com/andreisfedotov/Hotels/commit/3d85bb2384d9ae...
3. Minimal APIs .NET 6 - добавляем базу данных
มุมมอง 7K2 ปีที่แล้ว
В этом видео мы продолжим писать Minimal APIs проект и добавим EntityFrameworkCore и базу данных. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat Код из видео 2-4: github.com/andreisfedotov/Hotels/commit/3d85bb2384d9ae54a4c992c865f0af726602f40d
2. Minimal APIs .NET 6 - пишем компактный Web API проект
มุมมอง 13K2 ปีที่แล้ว
В данном видео мы напишем с нуля простой Minimal APIs проект, который будем улучшать в дальнейших видео. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat Код из видео 2-4: github.com/andreisfedotov/Hotels/commit/3d85bb2384d9ae54a4c992c865f0af726602f40d
1. Minimal APIs .NET 6 - Вступление
มุมมอง 15K2 ปีที่แล้ว
Minimal APIs - новый подход к созданию Web API, который был представлен в .NET 6. В течение нескольких видео мы познакомимся с этой технологией и напишем небольшой Web API проект с нуля. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat Итоговый код: github.com/andreisfedotov/Hotels
Как бесплатно за 5 минут задеплоить любое веб приложение на Vercel
มุมมอง 5K2 ปีที่แล้ว
В данном коротком видео будет показано, как за 5 минут развернуть фронтенд приложение на платформе Vercel (ранее известный как Now). По словам разработчиков, Vercel - лучшее место чтобы бесплатно задеплоить своё приложение. Давайте посмотрим что это такое. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Telegram чат для всех: t.me/platinum_chat
Всё о Enum в C# | Перечисления в C# .NET
มุมมอง 3.5K2 ปีที่แล้ว
В данном выпуске мы поговорим про перечисления в C# (Enum'ы). Поговорим о том, это такое и устраним все возможные пробелы в данной теме, а также посмотрим на подробных примерах различные сценарии использования. Если хотите поддержать канал: pay.cloudtips.ru/p/cb07a2f0 Мы в Telegram: t.me/platinum_tech_talks Чат для общения и вопросов: t.me/platinum_chat
Путь через искусственный интеллект и нейронные сети
มุมมอง 6682 ปีที่แล้ว
В этом выпуске у нас в гостях инженер-программист и молодой учёный - Алексей Першуткин. Вместе с ним мы познакомимся с его деятельностью, поговорим про искусственный интеллект и нейронные сети. Мы в Telegram: t.me/platinum_tech_talks Чат для общения и вопросов: t.me/platinum_chat
Собеседование C# - Задача на баланс скобок | Хеллоуиновский выпуск
มุมมอง 9K3 ปีที่แล้ว
Собеседование C# - Задача на баланс скобок | Хеллоуиновский выпуск
Что нового в C# 10 - новые фичи языка C#
มุมมอง 15K3 ปีที่แล้ว
Что нового в C# 10 - новые фичи языка C#
Автогенерация клиента для Web API. Использование клиента в React приложении
มุมมอง 13K3 ปีที่แล้ว
Автогенерация клиента для Web API. Использование клиента в React приложении
Версионирование API - поддержка нескольких версий
มุมมอง 8K3 ปีที่แล้ว
Версионирование API - поддержка нескольких версий
Unit-тесты в .NET с использованием xUnit
มุมมอง 20K3 ปีที่แล้ว
Unit-тесты в .NET с использованием xUnit
IdentityServer4 - логин и регистрация пользователя
มุมมอง 17K3 ปีที่แล้ว
IdentityServer4 - логин и регистрация пользователя
IdentityServer4 - Пишем свой сервис авторизации. Конфигурация
มุมมอง 25K3 ปีที่แล้ว
IdentityServer4 - Пишем свой сервис авторизации. Конфигурация
Аутентификация и авторизация - OAuth, OIDC, IdentityServer
มุมมอง 18K3 ปีที่แล้ว
Аутентификация и авторизация - OAuth, OIDC, IdentityServer
Что такое Middleware? Пишем свой Middleware для обработки исключений
มุมมอง 15K3 ปีที่แล้ว
Что такое Middleware? Пишем свой Middleware для обработки исключений
FluentValidation - валидация данных с Fluent API
มุมมอง 13K3 ปีที่แล้ว
FluentValidation - валидация данных с Fluent API
Создание ASP NET Core Web API приложения
มุมมอง 30K3 ปีที่แล้ว
Создание ASP NET Core Web API приложения
Внедрение зависимостей в теории и на практике
มุมมอง 22K3 ปีที่แล้ว
Внедрение зависимостей в теории и на практике
Нейросети призваны классифицировать ... Не более..
И все же, если не секрет - сколько зп у Сеньера?
Везде по разному)
Не, молодцы! Вопрос про запрос с А4 страничку это не минус EF. Это минус прогера! Проще запросить чистый сиквел и смапить на модельку... Молодцы, что не забыли про AsNotracking() и ContextFactory .. особенно про async using обертку... И как красиво работать с Generic and Expession конструкциями, супер!!! Надеюсь, никто не юзает AutoMapper with EF Proxies ?
Лайк за контент неглядя. Хотелось бы тутор выпуск по микросервисам + брокеру
Спасибо большое за контент, рад, что ты вернулся к видео!
54:00 вопрос: а как так связи строятся один к одному? Примари ключи совпадают что ли? И Нахера гемморой такой?
Да, примари ключи должны совпадать. И в одной таблице примари ключ - должен быть одновременно примари ключом + форейн Кеем на другую таблицу. modelBuilder.Entity<Blog>() .HasOne(e => e.Header) .WithOne(e => e.Blog) .HasForeignKey<BlogHeader>(e => e.BlogId) .IsRequired();
@PlatinumTechTalks бедный sql как же ему две таблички разруливать на identity? Может проще одну табличку иметь в таком случае?
Привет, давно не виделись)
Отсматриваем!
42 08, какая утечка может быть, юзинг уничтожает обьект
объект-то может и уничтожится, а вот TCP соединения останутся. это ведь уровень операционной системы, а не приложения. на 12:45 про это как раз говорится
20 минут сказки про историю, 20 минут про фреймворк, и на сдачу зачитка LLM текста, ахуенно
вот и первый LLM-комментарий)
Автор, видео замечательное. Но почему код в статье на Habr такой Legacy? У меня реально идет кровь из глаз когда я на него смотрю. Неужели у вас в компании так пишут? UPD: А, не сразу понял, что это вам в наследство осталось
спасибо! и радостно слышать про кровь из глаз, это значит, что мы в команде всё сделали правильно в итоге =D вообще там много такого всякого было.. в статье только то, что к HttpClient'у относится отражено. есть еще одна статья про тесты, там тоже есть примеры "интересного" кода: habr.com/ru/companies/zyfra/articles/847502/
Использовал эти наработки что бы найти работу в Европе!
надо сделать выпуск про IT в Европе и в целом про всё с этим связанное)
@@PlatinumTechTalks В нынешнее время залетит на ура
Я рад вас видеть снова (ВАШЕ ЛИЦО В ПЕРВЫЙ РАЗ КОНЕЧНО).... после два года как я наткнулся на ваш канал могу с уверенностью писать вы мой учитель по CleanArchitecture.... до сех пор этот плейлист про CleanArchitecture служит мне как шпаргалга в проектах где требуется данная архитектура Благодарю вам за ваш труд...
спасибо большое за теплые слова!!! хах, в других видео тоже бывает лицо, но конечно в основном в видосах, которые записывались совместно и давно) тут после долгого радиомолчания подумал, что стоит всех поприветствовать лично)))
У вас ошибка при копировании с очередью у вас из дерева б строка копируется в дерево а, но тест это не отлавливает
Объясните, плиз, не понимаю. Почему через Таск Ран запускается, почему не просто идет вызов Process?
Чтобы в другом потоке Process() запустился и выполнялся параллейно основному потоку. А при await task основной поток будет "ждать", когда этот Process закончится
@@Георгий-ь6с спасибо, что нашли время написать. Вот пример, которыей иллюстрирует обратное: я могу считать строку из консоли из главного потока после запуска Таск, то есть он не блокируется до момента вызова await (и там он тоже не блокируется на самом деле, потому что после await уже другой поток работает, если бы он заблокировался, мы бы продолжили выполнение после await в том же потоке что был до: public static async Task Main(string[] args) { Console.WriteLine($"Main in {Environment.CurrentManagedThreadId}"); var task = Process(); Console.ReadLine(); Console.WriteLine($"Main continue in {Environment.CurrentManagedThreadId}"); await task; Console.WriteLine($"Main after task in {Environment.CurrentManagedThreadId}"); } static async Task Process() { Console.WriteLine($"Process start"); await Task.Delay(10000); Console.WriteLine($"Process end"); }
Наверное просто перемудрили с примером
Парни! Зачёт! Вот, херню с авейтом в локе - я бы не додумался так сделать! Сильно! А про запросы к базе в мидлваре - тоже офигенно! И легенда про сборщика мусора ... Пря полный бардачок Говнокодеоа... Не, молодцы!!! Если также бизнес код писать, то кассовый разрыв обеспечен...мне теперь страшно код писать... лезут пакости авайта в локе...:)))) у Вас, видимо, куча свободного времени, чтобы в кишках ковыряться... Там же сложно... или Вы из учебников легенды тяните...? Кто-нить тыкал начинку мусорщика или ночинку статемашины для асинк авайт... ? На засыпку: почему у типа string недавно стали требовать дописывать ?
На 12 минуте не смог слушать дальше, ребята, вы потренируйтесь говорить а потом видос пишите. На собесах при таких тормознутых ответах могут всё прервать, даже если ход мыслей около правильный
Спасибо.
Спасибо большое Олег
Что он глотает постоянно!!???
Очень жестокое видео, автор сильно избивает кнопку Enter
🤣💪
Топ!
вся эта энтети - херня полнейшая.
😅 А как лучше?)
речь у автора ролика хорошая, но нужно хорошую речь оформить в виде рисунков для наглядности.
стоящее видео. спасибо автору. успехов ему в преподавательской деятельности.
Посмотрел первые минуты, это ведь идет объяснение не IoC, а DIP. Разве нет?
не dip, а di. Инъекция зависимостей, это один из вариантов реализации ioc. т.е. в этом моменте все логично) а вот понятие ioc-контейнер, которое использует автор, особо смысла не несет
Спасибо за курс, не без проблем с версиями и поиском решений в виду устаревания данного курса, получилось отлично.
Спасибо, что написали! Вы проделали большой путь! 💪 удачи вам в дальнейшем пути!
Так себе идея кидать 404 если не найдено что-то в бд. Сам то ресурс доступен.
А как бы вы сделали в данном случае? И смотря что считать ресурсом
Весьма странное решение мапить дто в команду...
Почему?
Спасибо, все понятно. Но крайне кратко.
Просто смотрю с очерованным лицом и вижу насколько просто и гениально можно было упростить всё то, что я когда-то делал. Middleware для обработки конкретных исключений это насколько гениально и просто, что я поражаюсь. Спасибо за такой отличный гайд
Спасибо вам! И удачи!)
На словах мэпится на объект классов все сразу понятно . Вы пытаетесь объяснить или сделать так что бы вообще никто ничего не понял ?
Первое)
большое спасибо за видео. Ваш труд один из лучших на ру сегменте
Спасибо!
Спасибо за видео. Подчеркнул для себя немного нового
Спасибо, приятно слышать!
6:50 "гонки потоков ... 9 раз отработает хорошо". Читатель почти всегда закрывается до попытки чтения (на 6 строке).
41:20 почему использовать литералы не очень хорошо? В голову только приходит если глобально поменяется имя класса может возникнуть ошибка.
Если объект достаточно большой, то рационально ли создавать его. Возможно, будет эффективнее воспользоваться тернарником с точки зрения производительности, а проблему инкапсуляции решить иначе
Нижняя камера лишняя! )) Зачем он себя постоянно трогает? )
1:44:42 Это работает только когда делаешь Include
Использую Obsidian в связке с Git Из плюсов можно и на мобилке использовать, правда надо один раз запариться с генерацией токена GitHub
Добрый день уточнение когда загружается мастер и подчиненная таблицы, например 10 мастер и в каждой детайл 100 то получается что 1000 загружается даже если пейдж инг ?
САМОЕ ЛУЧШЕЕ ВИДЕО ПО ТЕМЕ КОТОРОЕ ПОКА ВСТРЕЧАЛ
Добрый день! Что нужно настроить, чтобы в браузере можно также как на видео работать с БД PostgreSql? Спасибо
Добрый день! Ответ от докладчика: 1. поставить docker (Docker Desktop для Windows) 2. запусть бд: docker run \ -p 5432:5432 \ --name container-postgresdb \ -e POSTGRES_PASSWORD=admin \ -d postgres 3. запустить pgadmin: docker run \ -p 5050:80 \ -e "PGADMIN_DEFAULT_EMAIL=name@example.com" \ -e "PGADMIN_DEFAULT_PASSWORD=admin" \ -d dpage/pgadmin4 4. открыть localhost:80 И ввести такие параметры: name: container-postgresdb host: host.docker.internal database: postgres user: postgres password: admin
Конечно ребята умные и явно разбирающиеся - по манере речи понятно. но за объяснение материала диз
Спасибо!
Спасибо!👍
Спасибо за видео. Андрей и Влад очень приятные собеседники на интервью)
офигенно, спасибо! )
ПОсле метанита, вживую еще раз закрепить знания самое то
У меня не создавалась таблица, т.к. я использовал не SQLite, а Postgre ваше решение у меня не сработало, решил проблему следующим образом: Я немного поменял код из предыдущего урока (таймминг 6:00 на предыдущем уроке) из проекта Notes.Persistence => DependencyInjection и поменял строку с: var connectionString = configuration["СТРОКА ПОДКЛЮЧЕНИЯ"]; на: var connectionString = configuration.GetConnectionString("СТРОКА ПОДКЛЮЧЕНИЯ"); Скорее всего, при использовании sqlite, для получения строки можно просто обратиться в конфигурации по ключу, указав имя строки подключения из appsettings, но в для Postgre это не работало( Может кому-то помогу Спасибо за ролик