This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
❤️🔥 Событийно-ориентированные фоновые задачи в C#
BackgroundWorker — это легковесный инструмент для выполнения асинхронной работы.
Обмен сообщениями между хостом и рабочим происходит через события.
Есть встроенная поддержка отмены задач и обновлений прогресса.
LINQPad визуализирует весь процесс :
вызвал
Хочешь, стилизуй вывод с помощью CSS.
Полный скрипт для загрузки доступен по ссылке
👉 Новости 👉 База вопросов
BackgroundWorker — это легковесный инструмент для выполнения асинхронной работы.
Обмен сообщениями между хостом и рабочим происходит через события.
Есть встроенная поддержка отмены задач и обновлений прогресса.
LINQPad визуализирует весь процесс :
вызвал
Dump() — и данные сразу в окне Results как HTML.Хочешь, стилизуй вывод с помощью CSS.
Полный скрипт для загрузки доступен по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#полезное
👋 Пример использования паттерна IOptions в ASP dotnet
На втором примере эквивалент с использованием
👉 Новости 👉 База вопросов
IOptions<T> обеспечивает безопасность на этапе компиляции и устраняет использование магических строк.На втором примере эквивалент с использованием
IConfiguration вместо IOptionsPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #postgres
🤔 Что такое отношение (relation) в PostgreSQL?
B PostgreSQL отношение - это таблица, которая состоит из строк и столбцов. Каждое отношение представляет собой сущность базы данных, хранящую данные в структурированном виде. Отношения могут быть как обычными таблицами, так и представлениями или индексами.
👉 Новости 👉 База вопросов
B PostgreSQL отношение - это таблица, которая состоит из строк и столбцов. Каждое отношение представляет собой сущность базы данных, хранящую данные в структурированном виде. Отношения могут быть как обычными таблицами, так и представлениями или индексами.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨💻 MongoDB теперь нативно доступен на Azure.
Больше никаких "костылей" между сервисами.
Теперь можно:
🟠 Запускать MongoDB Atlas напрямую из Azure Portal
🟠 Интегрироваться с Azure AI, Databricks, OpenAI — в одном потоке
🟠 Получать единый биллинг по всему стеку
Это будущее cloud-native разработки?
Или тесная интеграция с облаком — палка о двух концах для свободы разработчиков?
Полная разбивка: https://fnf.dev/4n1fsLd
👉 Новости 👉 База вопросов
Больше никаких "костылей" между сервисами.
Теперь можно:
Это будущее cloud-native разработки?
Или тесная интеграция с облаком — палка о двух концах для свободы разработчиков?
Полная разбивка: https://fnf.dev/4n1fsLd
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Сократил время выполнения SQL-запроса с 70 мс до 1 мс.
Без изменений в коде. Без кэширования. Просто добавил filtered index (фильтрованный индекс).
Фильтрованные индексы — одна из самых недооценённых возможностей SQL.
Они позволяют индексировать только подмножество строк, соответствующих определённому условию — идеально подходят для флагов вроде
Но есть нюанс: если условие выполняется для большинства строк, индекс не даст прироста производительности.
Эта оптимизация дала огромный прирост в одном из проектов.
В статье подробно разбирается реализацию и показывается, как это использовать: читать
👉 Новости 👉 База вопросов
Без изменений в коде. Без кэширования. Просто добавил filtered index (фильтрованный индекс).
Фильтрованные индексы — одна из самых недооценённых возможностей SQL.
Они позволяют индексировать только подмножество строк, соответствующих определённому условию — идеально подходят для флагов вроде
ProcessedAt IS NULL.Но есть нюанс: если условие выполняется для большинства строк, индекс не даст прироста производительности.
Эта оптимизация дала огромный прирост в одном из проектов.
В статье подробно разбирается реализацию и показывается, как это использовать: читать
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 В EF Core 9 улучшена функция
Небольшое, но полезное улучшение.
Эта возможность появилась в EF Core 8 — для производительного обновления данных в базе без загрузки в память.
Однако изначально она поддерживала только примитивные типы.
Если нужно было обновить комплексный тип, приходилось вручную перечислять все его свойства… до выхода EF Core 9.
Теперь комплексные типы полностью поддерживаются — больше не нужно делать это вручную
👉 Новости 👉 База вопросов
ExecuteUpdateНебольшое, но полезное улучшение.
Эта возможность появилась в EF Core 8 — для производительного обновления данных в базе без загрузки в память.
Однако изначально она поддерживала только примитивные типы.
Если нужно было обновить комплексный тип, приходилось вручную перечислять все его свойства… до выхода EF Core 9.
Теперь комплексные типы полностью поддерживаются — больше не нужно делать это вручную
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #postgres
🤔 Что такое схемы (schemas) в PostgreSQL?
Схемы в PostgreSQL — это контейнеры для объектов базы данных (таблиц, представлений, функций и т. д.). Они позволяют организовывать объекты базы данных в логически разделенные группы, что помогает упорядочить структуру базы данных и избегать конфликтов имен.
👉 Новости 👉 База вопросов
Схемы в PostgreSQL — это контейнеры для объектов базы данных (таблиц, представлений, функций и т. д.). Они позволяют организовывать объекты базы данных в логически разделенные группы, что помогает упорядочить структуру базы данных и избегать конфликтов имен.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵💫 Улучшения производительности
👉 Новости 👉 База вопросов
FrozenDictionary с целочисленными (int) ключами в .NET 10FrozenDictionary представляют собой коллекции, оптимизированные для чтения (Dictionary и Set), создание которых занимает больше времени, но чтение из них происходит быстрее по сравнению с неизменяемыми (immutable) коллекциями.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🥺 Внедрение настроек в .NET? Существует три основных интерфейса:
🟠
🟠
🟠
Используйте
Подробнее о том, как работает паттерн Options и когда какой интерфейс использовать: read
👉 Новости 👉 База вопросов
IOptions: кэшируется на всё время жизни приложенияIOptionsSnapshot: переоценивается при каждом запросе (scoped)IOptionsMonitor: позволяет получать текущее значение и реагировать на измененияИспользуйте
IOptions для статической конфигурации, IOptionsSnapshot — в веб-приложениях, где конфигурация может меняться между запросами, а IOptionsMonitor — когда нужно отслеживать изменения настроек.Подробнее о том, как работает паттерн Options и когда какой интерфейс использовать: read
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴1
#полезное
🤓 EF Core:
👉 Новости 👉 База вопросов
DbContextOptionsBuilder используется для настройки DbContext, как показано в примере для консольного проекта. Также он может применяться вместе с внедрением зависимостей (dependency injection)Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🥴1
#Собес #postgres
🤔 Что такое Foreign Key (внешний ключ) в PostgreSQL?
Foreign Key - это ограничение в PostgreSQL, которое гарантирует целостность данных между двумя таблицами. Он связывает столбец одной таблицы с первичным ключом другой, обеспечивая, что все значения во внешнем ключе существуют в связанной таблице.
👉 Новости 👉 База вопросов
Foreign Key - это ограничение в PostgreSQL, которое гарантирует целостность данных между двумя таблицами. Он связывает столбец одной таблицы с первичным ключом другой, обеспечивая, что все значения во внешнем ключе существуют в связанной таблице.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Хочешь отслеживать изменения в базе данных в реальном времени?
Я реализовал Change Data Capture (CDC) в .NET с использованием Debezium, PostgreSQL и RabbitMQ.
Поток обработки:
🟠 PostgreSQL настроен на генерацию событий об изменениях
🟠 Debezium перехватывает эти изменения
🟠 События публикуются в RabbitMQ
🟠 MassTransit в .NET потребляет и обрабатывает их
Это лишь один из способов реализации архитектуры, основанной на событиях (Event-Driven Architecture).
Если ты проектируешь распределённые системы в .NET — вот полный гайд по созданию event-driven-систем с RabbitMQ
👉 Новости 👉 База вопросов
Я реализовал Change Data Capture (CDC) в .NET с использованием Debezium, PostgreSQL и RabbitMQ.
Поток обработки:
Это лишь один из способов реализации архитектуры, основанной на событиях (Event-Driven Architecture).
Если ты проектируешь распределённые системы в .NET — вот полный гайд по созданию event-driven-систем с RabbitMQ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😜 Видишь баг?
9 из 10 разработчиков пропускают его. Проверь себя
Проблема:
>
> Если
Решение:
✅ Явно оборачивай все такие команды в транзакцию вручную
Мелочь, а последствия могут быть серьёзные
👉 Новости 👉 База вопросов
9 из 10 разработчиков пропускают его. Проверь себя
Проблема:
>
ExecuteUpdateAsync и ExecuteDeleteAsync обходят Change Tracker в EF Core> Если
SaveChangesAsync() потом упадёт — обновления в базе не откатятся автоматическиРешение:
Мелочь, а последствия могут быть серьёзные
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤯1
#полезное
😜 5 недооценённых LINQ-методов, которые мгновенно улучшают твой код:
1⃣
2⃣
3⃣
4⃣
5⃣
Бонус, который почти попал в топ:
🟠
🟠
🟠
🟠
🟠
LINQ — кладезь полезных методов, если знаешь, где копать
👉 Новости 👉 База вопросов
Zip — объединяет две последовательности в парыChunk — разбивает коллекцию на чанки фиксированного размераOfType<T>() — фильтрует элементы по типуDistinctBy — возвращает уникальные элементы по заданному ключуSelectMany — разворачивает вложенные коллекции в плоский списокБонус, который почти попал в топ:
SequenceEqual — сравнивает две коллекции на равенствоAggregate — накапливает значение с помощью функции (reduce)GroupJoin — объединяет по группам (аналог LEFT OUTER JOIN)ToLookup — создает коллекцию, похожую на Dictionary, но с множеством значенийIntersect — возвращает пересечение двух коллекцийLINQ — кладезь полезных методов, если знаешь, где копать
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Что такое EXPLAIN в PostgreSQL?
EXPLAIN — это команда в PostgreSQL, которая показывает план выполнения запроса. Она помогает увидеть, как PostgreSQL планирует обрабатывать запрос, какие индексы используются и сколько времени займет выполнение каждого шага.
👉 Новости 👉 База вопросов
EXPLAIN — это команда в PostgreSQL, которая показывает план выполнения запроса. Она помогает увидеть, как PostgreSQL планирует обрабатывать запрос, какие индексы используются и сколько времени займет выполнение каждого шага.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Визуализатор планов SQL-запросов для Entity Framework
Расширение EFCore.Visualizer для Visual Studio может стать настоящим прорывом.
Оно позволяет разработчикам просматривать план выполнения SQL-запросов напрямую внутри Visual Studio.
👉 Новости 👉 База вопросов
Расширение EFCore.Visualizer для Visual Studio может стать настоящим прорывом.
Оно позволяет разработчикам просматривать план выполнения SQL-запросов напрямую внутри Visual Studio.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰2
#полезное
😊 В .NET 10 появится
Теперь разработчики смогут удобно генерировать бесконечные последовательности как в синхронном, так и в асинхронном виде.
Гитхаб
👉 Новости 👉 База вопросов
{Async}Enumerable.{Infinite}SequenceТеперь разработчики смогут удобно генерировать бесконечные последовательности как в синхронном, так и в асинхронном виде.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое триггеры (Triggers) в PostgreSQL?
Триггер - это специальная функция, которая автоматически выполняется при определенных событиях в таблице, например, при вставке, обновлении или удалении данных. Они используются для проверки данных, поддержания целостности или логирования изменений.
👉 Новости 👉 База вопросов
Триггер - это специальная функция, которая автоматически выполняется при определенных событиях в таблице, например, при вставке, обновлении или удалении данных. Они используются для проверки данных, поддержания целостности или логирования изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 В .NET 10, который выйдет в ноябре этого года, значительно оптимизируют работу с небольшими массивами
Если JIT-компилятор определяет, что массив достаточно мал и не выходит за пределы области видимости метода, он размещает его в стеке, а не в куче. Это означает, что память не аллоцируется в heap, GC не задействуется, а производительность повышается почти в два раза.
Например, в .NET 9 массив из 11 элементов занимал 72 байта и выполнялся за 7.7 наносекунды. В .NET 10 те же данные, но 0 байт аллокации и всего 3.9 наносекунды. И самое главное это работает автоматически
👉 Новости 👉 База вопросов
Если JIT-компилятор определяет, что массив достаточно мал и не выходит за пределы области видимости метода, он размещает его в стеке, а не в куче. Это означает, что память не аллоцируется в heap, GC не задействуется, а производительность повышается почти в два раза.
Например, в .NET 9 массив из 11 элементов занимал 72 байта и выполнялся за 7.7 наносекунды. В .NET 10 те же данные, но 0 байт аллокации и всего 3.9 наносекунды. И самое главное это работает автоматически
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👋 Стриминговые API в C# — используй
🟠 Производители используют
🟠 Потребители читают данные через
Зачем нужны стриминговые API?
В отличие от bulk-передачи, стриминг отправляет данные пакетами.
Сколько и когда передавать — зависит от кода, создающего
Параметр
Где особенно полезно:
1⃣ Отправка больших (или даже бесконечных) наборов данных
Пример: поливать сад из шланга вместо таскания вёдер с водой.
Вёдра тяжелее (ресурсоёмко) и требуют ожидания (блокировка).
2⃣ Получение внешних данных — API, IoT-сенсоры, очереди сообщений
Когда нельзя предсказать, когда будет готов следующий элемент —
3⃣ Снижение потребления памяти
Данные проходят потоком и не накапливаются в памяти целиком.
👉 Новости 👉 База вопросов
IAsyncEnumerableIAsyncEnumerable оптимизирован для потоковой передачи данных и полностью совместим с async/await.IAsyncEnumerable<T> с yield returnawait foreachЗачем нужны стриминговые API?
В отличие от bulk-передачи, стриминг отправляет данные пакетами.
Сколько и когда передавать — зависит от кода, создающего
IAsyncEnumerable.Параметр
T задаёт тип элемента, который будет возвращаться в потоке.Где особенно полезно:
Пример: поливать сад из шланга вместо таскания вёдер с водой.
Вёдра тяжелее (ресурсоёмко) и требуют ожидания (блокировка).
Когда нельзя предсказать, когда будет готов следующий элемент —
IAsyncEnumerable идеально подходит.Данные проходят потоком и не накапливаются в памяти целиком.
Please open Telegram to view this post
VIEW IN TELEGRAM