#полезное
🫡
Оба могут создавать скоупы, но ключевой момент в следующем:
Так что использование
Обычно пользовательские скоупы нужны, когда вы работаете с root-провайдером.
Вот решение на практике: тык
👉 Новости 👉 База вопросов
IServiceScopeFactory vs IServiceProvider — что использовать для создания пользовательских скоупов?Оба могут создавать скоупы, но ключевой момент в следующем:
IServiceProvider.CreateScope() просто получает IServiceScopeFactory и вызывает у него CreateScope()Так что использование
IServiceScopeFactory — более прямой подход.Обычно пользовательские скоупы нужны, когда вы работаете с root-провайдером.
Вот решение на практике: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🏠 В режиме Ask в VScode ты можешь общаться напрямую с экспертами — так называемыми участниками (participants). Например, участник Remote-SSH может ответить на вопросы о разработке по SSH, помочь с настройкой окружения и даже разобраться с ошибками подключения
👉 Новости 👉 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😊 Думаешь, хорошо разбираешься в
Этот пост поменяет твой взгляд на перехват HTTP-запросов
Middleware в
Есть три подхода: на делегатах (inline), по соглашению (класс), и через
1⃣ Сначала можно использовать метод
Такое middleware на основе делегата выполняется до и после следующего компонента в конвейере.
2⃣ Если логика растёт — вынеси её в отдельный класс middleware по соглашению.
Класс должен иметь конструктор с
3⃣ Либо реализуй интерфейс
Зарегистрируй класс
Но есть важные нюансы:
🟠 Middleware по умолчанию живёт как singleton, поэтому внедряй только singleton-зависимости.
🟠 Если нужны scoped-сервисы — передавай их через параметры InvokeAsync в middleware по соглашению.
Кастомные middleware используют для:
• логирования
• авторизации
• валидации
• модификации ответов
👉 Новости 👉 База вопросов
ASP.NET Core middleware?Этот пост поменяет твой взгляд на перехват HTTP-запросов
Middleware в
ASP.NET Core — это компонент, участвующий в конвейере обработки HTTP-запросов и ответов.Есть три подхода: на делегатах (inline), по соглашению (класс), и через
IMiddleware для кастомной логики.Use напрямую в конфигурации WebApplication.Такое middleware на основе делегата выполняется до и после следующего компонента в конвейере.
Класс должен иметь конструктор с
RequestDelegate и метод InvokeAsync.IMiddleware — это более безопасный, проверяемый компилятором способ.Зарегистрируй класс
IMiddleware в DI-контейнере, и фреймворк сам будет его разрешать.Но есть важные нюансы:
Кастомные middleware используют для:
• логирования
• авторизации
• валидации
• модификации ответов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Что такое функции в PostgreSQL?
Функции в PostgreSQL - это блоки кода, которые выполняют заданную последовательность SQL или процедурных команд. Они позволяют выполнять вычисления, возвращать значения и обрабатывать данные более эффективно. Их можно использовать для вызова сложной логики в SQL-запросах или триггерах.
👉 Новости 👉 База вопросов
Функции в PostgreSQL - это блоки кода, которые выполняют заданную последовательность SQL или процедурных команд. Они позволяют выполнять вычисления, возвращать значения и обрабатывать данные более эффективно. Их можно использовать для вызова сложной логики в SQL-запросах или триггерах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😱 Скриптинг на C# это круто
Отлично подходит для простых POC и наполнения тестовыми данными, как в этом примере
👉 Новости 👉 База вопросов
Отлично подходит для простых POC и наполнения тестовыми данными, как в этом примере
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
#полезное
🛞 Visual Studio теперь отображает возвращаемые значения методов прямо в коде
Фича появилась в версии 17.12 (выпущена в ноябре).
Я всегда считал, что временные переменные помогают снизить когнитивную нагрузку при работе с возвратами методов, но, похоже, теперь игра изменилась
👉 Новости 👉 База вопросов
Фича появилась в версии 17.12 (выпущена в ноябре).
Я всегда считал, что временные переменные помогают снизить когнитивную нагрузку при работе с возвратами методов, но, похоже, теперь игра изменилась
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#полезное
🥄 NBomber — нагрузочное тестирование на .NET без привязки к протоколам. Этот фреймворк позволяет описывать сценарии нагрузочного тестирования на чистом C#/F#, без изучения специализированного DSL.
Ключевая особенность проекта в распределённом режиме для имитации реалистичной нагрузки и интеграция с Grafana/InfluxDB для мониторинга в реальном времени. При этом сценарии можно запускать как консольное приложение или даже как xUnit-тесты в CI/CD.
Гитхаб
👉 Новости 👉 База вопросов
Ключевая особенность проекта в распределённом режиме для имитации реалистичной нагрузки и интеграция с Grafana/InfluxDB для мониторинга в реальном времени. При этом сценарии можно запускать как консольное приложение или даже как xUnit-тесты в CI/CD.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #postgres
🤔 Что такое VACUUM в PostgreSQL
👉 Новости 👉 База вопросов
VACUUM - это команда в PostgreSQL, которая удаляет ненужные данные, освобождает место и предотвращает разрастание базы данных. Регулярное выполнение vAcuum помогает поддерживать производительность базы.Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😎 Самое раздражающее при отладке C#-кода?
(что может серьёзно замедлить процесс)
Проверка значений в коллекции.
Приходится разворачивать каждый элемент, чтобы посмотреть значения свойств.
Чтобы решить эту проблему, в Visual Studio недавно появилась функция закрепляемых свойств (pinnable properties).
Она позволяет быстро отслеживать нужные свойства.
Чтобы воспользоваться, наведите курсор на свойство и нажмите на иконку закрепления.
См. видео-пример, как это использовать
👉 Новости 👉 База вопросов
(что может серьёзно замедлить процесс)
Приходится разворачивать каждый элемент, чтобы посмотреть значения свойств.
Чтобы решить эту проблему, в Visual Studio недавно появилась функция закрепляемых свойств (pinnable properties).
Она позволяет быстро отслеживать нужные свойства.
Чтобы воспользоваться, наведите курсор на свойство и нажмите на иконку закрепления.
См. видео-пример, как это использовать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😐 Режим агента теперь доступен в публичной предварительной версии для всех пользователей в Visual Studio 17.14.
Режим агента в Visual Studio позволяет задавать задачи с помощью естественного языка — Copilot самостоятельно планирует действия, редактирует кодовую базу, вызывает инструменты и итеративно решает проблемы.
В отличие от Copilot Chat или Copilot Edits, агент не останавливается на одной подсказке или правке файла — он действует автономно и выполняет задачу до конца.
Тык сюда
👉 Новости 👉 База вопросов
Режим агента в Visual Studio позволяет задавать задачи с помощью естественного языка — Copilot самостоятельно планирует действия, редактирует кодовую базу, вызывает инструменты и итеративно решает проблемы.
В отличие от Copilot Chat или Copilot Edits, агент не останавливается на одной подсказке или правке файла — он действует автономно и выполняет задачу до конца.
Тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👎1🔥1
#полезное
😐 RoslynPad — легковесная C#-песочница с интеллектуальным кодом. Этот кроссплатформенный редактор превращает написание C#-кода в интерактивный процесс. В отличие от громоздких IDE, здесь есть только самое нужное: автодополнение на базе Roslyn, подсветка ошибок и быстрый запуск кода.
Проект особенно удобен для экспериментов: можно тестировать фрагменты кода без создания полноценного проекта. Под капотом у инструмента движок компилятора C# и редактор AvalonEdit с поддержкой темной темы.
Гитхаб
👉 Новости 👉 База вопросов
Проект особенно удобен для экспериментов: можно тестировать фрагменты кода без создания полноценного проекта. Под капотом у инструмента движок компилятора C# и редактор AvalonEdit с поддержкой темной темы.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #postgres
🤔 Что такое PostgreSQL replication?
Репликация в PostgreSQL - это процесс создания копий данных из основной базы данных на другие серверы. Это повышает отказоустойчивость, позволяет балансировать нагрузку и обеспечивает резервное копирование. Существует несколько типов репликации: синхронная и асинхронная.
👉 Новости 👉 База вопросов
Репликация в PostgreSQL - это процесс создания копий данных из основной базы данных на другие серверы. Это повышает отказоустойчивость, позволяет балансировать нагрузку и обеспечивает резервное копирование. Существует несколько типов репликации: синхронная и асинхронная.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#ЛитКод
Задача: 510. Inorder Successor in BST II
Дан узел в двоичном дереве поиска, верните его последующего (in-order successor) в этом дереве. Если у узла нет последующего, верните null.
Последующий узла — это узел с наименьшим ключом, большим, чем node.val.
Вы будете иметь прямой доступ к узлу, но не к корню дерева. Каждый узел будет иметь ссылку на своего родителя. Ниже приведено определение для Node:
Пример:
👨💻 Алгоритм:
1⃣ Проверка правого поддерева
Если у узла есть правый потомок, перейдите к правому узлу, затем спускайтесь влево до самого нижнего узла. Этот узел будет следующим узлом в порядке in-order.
2⃣ Поиск предка
Если у узла нет правого потомка, поднимайтесь по дереву до тех пор, пока узел не станет левым потомком своего родителя. Родитель этого узла будет следующим узлом в порядке in-order.
3⃣ Возвращение результата
Верните найденный узел или null, если следующий узел не найден.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 510. Inorder Successor in BST II
Дан узел в двоичном дереве поиска, верните его последующего (in-order successor) в этом дереве. Если у узла нет последующего, верните null.
Последующий узла — это узел с наименьшим ключом, большим, чем node.val.
Вы будете иметь прямой доступ к узлу, но не к корню дерева. Каждый узел будет иметь ссылку на своего родителя. Ниже приведено определение для Node:
class Node {
public int val;
public Node left;
public Node right;
public Node parent;
}Пример:
Input: tree = [5,3,6,2,4,null,null,1], node = 6
Output: null
Explanation: There is no in-order successor of the current node, so the answer is null.
Если у узла есть правый потомок, перейдите к правому узлу, затем спускайтесь влево до самого нижнего узла. Этот узел будет следующим узлом в порядке in-order.
Если у узла нет правого потомка, поднимайтесь по дереву до тех пор, пока узел не станет левым потомком своего родителя. Родитель этого узла будет следующим узлом в порядке in-order.
Верните найденный узел или null, если следующий узел не найден.
public class Node {
public int val;
public Node left;
public Node right;
public Node parent;
}
public class Solution {
public Node InorderSuccessor(Node x) {
if (x.right != null) {
x = x.right;
while (x.left != null) {
x = x.left;
}
return x;
}
while (x.parent != null && x == x.parent.right) {
x = x.parent;
}
return x.parent;
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👾1
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