Эта фича показала мне, насколько PostgreSQL крут.
Думаю, тебе тоже понравится.
В одном проекте мне нужно было за одну операцию вставить 5 тысяч записей.
Хранилищем был Postgres, и, естественно, всё должно было работать быстро.
После небольшого ресёрча я наткнулся на команду
Эта команда позволяет выполнять массовую вставку данных напрямую в базу.
Метод
Так как при этом сохраняются типы данных без конвертации, лучше использовать
Что скажешь?🙂
👉 @KodBlog
Думаю, тебе тоже понравится.
В одном проекте мне нужно было за одну операцию вставить 5 тысяч записей.
Хранилищем был Postgres, и, естественно, всё должно было работать быстро.
После небольшого ресёрча я наткнулся на команду
COPY.Эта команда позволяет выполнять массовую вставку данных напрямую в базу.
Метод
BINARY COPY отправляет данные в бинарном формате, который Npgsql декодирует, и после вызова Complete() данные сохраняются в БД.Так как при этом сохраняются типы данных без конвертации, лучше использовать
NpgsqlDbType — он позволяет явно указать нужный тип без неоднозначностей.Что скажешь?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🤔4
Лучшая фича в
Server-Sent Events (SSE)
Простая альтернатива SignalR👇
Если тебе нужно реализовать обновления в реальном времени в .NET-приложении — с сервера на клиент, есть несколько подходов:
• Polling — фронтенд регулярно запрашивает сервер на наличие новых данных
• SignalR — клиент подписывается на событие, сервер пушит его через WebSockets
• Server-Sent Events (уже доступны в превью .NET 10)
Постоянный опрос каждые несколько секунд может перегружать сервер и тратить трафик впустую, а WebSockets через SignalR — это избыточно для простых однонаправленных обновлений.
Server-Sent Events (SSE) — это легковесный и стабильный способ стримить данные от сервера к клиенту в одну сторону, без всей сложности двусторонних протоколов.
В этой статье покажут, как сделать "Live Stock Market" — обновления котировок в реальном времени на сервере и клиенте.
➡️ Как работает SSE и зачем это нужно
➡️ Реализация SSE-эндпойнта с помощью Minimal API
➡️ Тестирование SSE-стрима через HTTP-запрос (HTTP Request file) в IDE
➡️ Создание простого фронтенда для проверки SSE
➡️ Ключевые отличия между SSE и SignalR (WebSockets)
👉 @KodBlog
ASP.NET Core 10 на сегодняшний деньServer-Sent Events (SSE)
Простая альтернатива SignalR
Если тебе нужно реализовать обновления в реальном времени в .NET-приложении — с сервера на клиент, есть несколько подходов:
• Polling — фронтенд регулярно запрашивает сервер на наличие новых данных
• SignalR — клиент подписывается на событие, сервер пушит его через WebSockets
• Server-Sent Events (уже доступны в превью .NET 10)
Постоянный опрос каждые несколько секунд может перегружать сервер и тратить трафик впустую, а WebSockets через SignalR — это избыточно для простых однонаправленных обновлений.
Server-Sent Events (SSE) — это легковесный и стабильный способ стримить данные от сервера к клиенту в одну сторону, без всей сложности двусторонних протоколов.
В этой статье покажут, как сделать "Live Stock Market" — обновления котировок в реальном времени на сервере и клиенте.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥12👍7
Я работаю с перечислениями каждый день.
И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:
🔸 Явно указывать тип хранения
🔸 Использовать атрибуты
🔸 Хелпер-метод для получения значения из атрибута
🔸 Безопасный парсинг через
А что бы ты добавил к этому списку?
👉 @KodBlog
И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:
Denoscription для отображаемых имёнDenoscriptionTryParseА что бы ты добавил к этому списку?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍5🤨1
Entity Framework 10 будет поддерживать именованные фильтры запросов
Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 10+ — при условии, что они именованные.👍
👉 @KodBlog
Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 10+ — при условии, что они именованные.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🤯2
This media is not supported in your browser
VIEW IN TELEGRAM
Необходимый репозиторий с сотнями бесплатных API для практики программирования и создания проектов.
Обновляется еженедельно и разделён по темам🔫
⇢ http://github.com/public-apis-dev/public-apis
👉 @KodBlog
Обновляется еженедельно и разделён по темам
⇢ http://github.com/public-apis-dev/public-apis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤5
Правильный способ построения асинхронных API в .NET
Большинство API работают по простому шаблону:
🔸 Клиент отправляет запрос
🔸 Сервер выполняет работу
🔸 Сервер возвращает ответ
Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.
А что насчёт длительных операций?
Речь о задачах вроде:
> обработки больших файлов
> генерации отчётов
> конвертации видео
Такие процессы могут занимать от нескольких минут до часов.
Вот как можно правильно строить асинхронные API: читать
Как сообщить клиенту, что его запрос обработан?
Есть два подхода:
🔸 PULL — клиент опрашивает API, чтобы узнать статус
🔸 PUSH — сервер сам уведомляет клиента (через WebSocket, email и т.д.)
👉 @KodBlog
Большинство API работают по простому шаблону:
Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.
А что насчёт длительных операций?
Речь о задачах вроде:
> обработки больших файлов
> генерации отчётов
> конвертации видео
Такие процессы могут занимать от нескольких минут до часов.
Вот как можно правильно строить асинхронные API: читать
Как сообщить клиенту, что его запрос обработан?
Есть два подхода:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍2
𝟭𝟬 шагов для оптимизации запросов в EF Core
Даже сеньоры знают не все из них
Допустим, у тебя в проде тормозит EF Core-запрос.
Как бы ты исследовал и починил проблему?
Вот пошаговый подход: ( смотри иллюстрации )
А вот как начать работу с OpenTelemetry:
↳ ссылка
Как Антон оптимизировал реальный запрос EF Core Query с 30 секунд до 30 миллисекунд:
↳ ссылка
👉 @KodBlog
Даже сеньоры знают не все из них
Допустим, у тебя в проде тормозит EF Core-запрос.
Как бы ты исследовал и починил проблему?
Вот пошаговый подход: ( смотри иллюстрации )
А вот как начать работу с OpenTelemetry:
↳ ссылка
Как Антон оптимизировал реальный запрос EF Core Query с 30 секунд до 30 миллисекунд:
↳ ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍3
Я ждал эту фичу 4 года и вот наконец она появляется в EF Core 10
EF Core 10 приносит серьёзное улучшение в метод
Раньше, чтобы сделать динамическое обновление, нужно было вручную собирать сложные и склонные к ошибкам expression tree'и.
Например: ты хочешь обновить поле
Раньше это значило писать довольно громоздкую логику вручную через expression API.
✅ Теперь — всё стало намного проще:
↳ можно просто использовать обычную лямбду, внутри которой разрешены
это улучшение делает код гораздо читаемее, поддерживаемее и снижает риск багов, связанных с ручной генерацией выражений.
Ждёшь эту фичу так же, как и я?
Дай знать, что думаешь👍
👉 @KodBlog
EF Core 10 приносит серьёзное улучшение в метод
ExecuteUpdateAsyncРаньше, чтобы сделать динамическое обновление, нужно было вручную собирать сложные и склонные к ошибкам expression tree'и.
Например: ты хочешь обновить поле
Views у блога и, при определённом условии, ещё и Name.Раньше это значило писать довольно громоздкую логику вручную через expression API.
↳ можно просто использовать обычную лямбду, внутри которой разрешены
if и другие управляющие конструкции.это улучшение делает код гораздо читаемее, поддерживаемее и снижает риск багов, связанных с ручной генерацией выражений.
Ждёшь эту фичу так же, как и я?
Дай знать, что думаешь
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25❤2
Если ты используешь GUID'ы в C# коде, тебе наверняка понравится нововведение в .NET 9: GUID версии 7.
GUID — глобально уникальный идентификатор) гарантирует уникальность значений между разными источниками.
В предыдущих версиях C# новые записи вставлялись в случайные позиции, что приводило к фрагментации индексов.
В .NET 9 появилась поддержка GUID версии 7, которые создаются последовательно.
Благодаря этому GUID теперь лучше подходят для использования в реляционных базах данных.
Кроме того, при генерации нового GUID теперь можно передать
Ты уже начал использовать GUID версии 7?😏
👉 @KodBlog
GUID — глобально уникальный идентификатор) гарантирует уникальность значений между разными источниками.
В предыдущих версиях C# новые записи вставлялись в случайные позиции, что приводило к фрагментации индексов.
В .NET 9 появилась поддержка GUID версии 7, которые создаются последовательно.
Благодаря этому GUID теперь лучше подходят для использования в реляционных базах данных.
Кроме того, при генерации нового GUID теперь можно передать
DateTimeOffset, чтобы задать собственное значение временной метки.Ты уже начал использовать GUID версии 7?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤8
Чувствуешь, что отстаёшь в .NET?
Вот 10 лучших статей, которые помогут быстро наверстать:
👉 @KodBlog
Вот 10 лучших статей, которые помогут быстро наверстать:
🔸 Дорожная карта .NET-разработки на 2025 год (минималистичная версия)
↳ https://devsecrets.net/post/net-development-roadmap-minimalist-edition/🔸 10 фатальных ошибок .NET-разработчиков
↳ https://devsecrets.net/post/10-fatal-mistakes-net-developers-make/🔸 MediatR? Не в моём .NET-стеке
↳ https://devsecrets.net/post/mediatr-not-in-my-net-stack/🔸 Ноль опыта с Azure? Начни отсюда
↳ https://devsecrets.net/post/zero-azure-cloud-experience/🔸 Модульный монолит — архитектурный паттерн, о котором все забывают
↳ https://devsecrets.net/post/modular-monolith/🔸 Как справляться с неопределённостью при проектировании систем
↳ https://devsecrets.net/post/how-to-beat-uncertainty-when-designing-systems/🔸 7 мощных методов LINQ, о которых ты пожалеешь, что не знал раньше
↳ https://devsecrets.net/post/7-powerful-linq-methods/🔸 Исключения убивают приложения. Как с этим бороться
↳ https://devsecrets.net/post/throwing-exceptions-kills-apps/🔸 Как я выкатываю недоделанный код в прод (и почему тебе тоже стоит)
↳ https://devsecrets.net/post/how-i-push-unfinished-work-to-production/🔸 4 проверенных способа, как тесты выявляют ужасный код
↳ https://devsecrets.net/post/4-proven-ways-how-tests-reveal-awful-code/
Please open Telegram to view this post
VIEW IN TELEGRAM
😐7👍4❤2
Простой способ улучшить методы в C#
(с переменным числом параметров)
Используй улучшения ключевого слова
Ключевое слово
Раньше:
Теперь в C# 13 и .NET 9:
-
-
-
Это упрощает код и делает API гибче.
А ты уже используешь это улучшение?🤠
👉 @KodBlog
(с переменным числом параметров)
Используй улучшения ключевого слова
params из .NET 9.Ключевое слово
params в C# позволяет передавать переменное количество аргументов без необходимости перегрузки методов. Это удобно, когда количество входных параметров заранее неизвестно.Раньше:
params работал только с массивами.Теперь в C# 13 и .NET 9:
params можно использовать с любыми коллекциями, у которых есть метод Add, включая:-
Span<T>-
ReadOnlySpan<T>-
IEnumerable<T>Это упрощает код и делает API гибче.
А ты уже используешь это улучшение?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍13🔥3