#Собес #mongoDB
🤔 Что такое составной индекс и когда его следует использовать?
💬 Кратко:
Составной индекс в MongoDB используется для индексации нескольких полей вместе. Он эффективен для запросов, которые фильтруют или сортируют данные по нескольким полям. Составные индексы значительно повышают производительность таких запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Составной индекс в MongoDB используется для индексации нескольких полей вместе. Он эффективен для запросов, которые фильтруют или сортируют данные по нескольким полям. Составные индексы значительно повышают производительность таких запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Хочешь писать более чистый C#-код?
Начни с чистых функций.
Чистая функция проста:
Берёт входные данные, возвращает результат и больше ни на что не влияет.
Никаких запросов в базу. Никаких случайных значений. Никаких скрытых побочных эффектов
Такой код легче тестировать, отлаживать и ему проще доверять.
Если логика кажется непредсказуемой — попробуй вынести её в чистую функцию.
Удивишься, насколько всё станет понятнее.
👉 Новости 👉 База вопросов
Начни с чистых функций.
Чистая функция проста:
Берёт входные данные, возвращает результат и больше ни на что не влияет.
Никаких запросов в базу. Никаких случайных значений. Никаких скрытых побочных эффектов
Такой код легче тестировать, отлаживать и ему проще доверять.
Если логика кажется непредсказуемой — попробуй вынести её в чистую функцию.
Удивишься, насколько всё станет понятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
#полезное
🤯 Примеры использования разделителя цифр (_) в C#
👉 Новости 👉 База вопросов
// Можно использовать в целых числах
int oneMillion = 1_000_000;
Console.WriteLine(oneMillion); // Выведет: 1000000
// Работает и с числами с плавающей точкой
double billion = 1_000_000_000.0;
Console.WriteLine(billion); // Выведет: 1000000000
// Поддерживается и в двоичной, и в шестнадцатеричной записи
int binary = 0b1010_1011_1100;
Console.WriteLine(binary); // Выведет: 2748
int hexadecimal = 0x1234_abcd;
Console.WriteLine(hexadecimal); // Выведет: 305441741
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
#полезное
😱 В dotnet 9 появился обобщённый
Во многих случаях нужно хранить пары ключ-значение с сохранением порядка и быстрым поиском по ключу. Теперь это можно делать с помощью обобщённого
👉 Новости 👉 База вопросов
OrderedDictionary Во многих случаях нужно хранить пары ключ-значение с сохранением порядка и быстрым поиском по ключу. Теперь это можно делать с помощью обобщённого
OrderedDictionary в .NET 9.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😈1
#Собес #mongoDB
🤔 Как обрабатываются изменения схемы в MongoDB?
💬 Кратко:
MongoDB является схемофлексибельной базой данных, позволяя изменять структуру документов без воздействия на уже существующие. Для обработки изменений схемы можно использовать версии документов, миграции данных и схему валидации с использованием JSON Schema.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
MongoDB является схемофлексибельной базой данных, позволяя изменять структуру документов без воздействия на уже существующие. Для обработки изменений схемы можно использовать версии документов, миграции данных и схему валидации с использованием JSON Schema.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
С неявными преобразованиями в
👉 Новости 👉 База вопросов
Span<T> в .NET 10 теперь можно передавать массивы напрямую в методы, которые ожидают Span<T> или ReadOnlySpan<T>, без вызова .AsSpan(). Это делает высокопроизводительный код без аллокаций чище и безопаснее. Очень удобноPlease open Telegram to view this post
VIEW IN TELEGRAM
❤2
Техническое собеседование. Осень 2024. Просил 350 к. Опыт в резюме: 3+ года. На собеседование было много вопросов по .NET, паттернам проектирования, в конце затронули математику.
Вопросы:
- Объясните механизм deferred execution (отложенного выполнения) в LINQ на примере First() и счётчика.
- Как в вашем проекте определялось, какую стратегию использовать - через фабрику, DI или иным способом?
- С какими ORM вы сталкивались (Entity Framework, Dapper и др.) ?
- Приходилось ли писать T-SQL-запросы вручную?
Все вопросы можно посмотреть на нашей платформе
#собес #коллеции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #mongoDB
🤔 Какую роль играет кэш WiredTiger в MongoDB и как он влияет на производительность?
💬 Кратко:
Кэш WiredTiger в MongoDB хранит часто используемые данные и индексы в памяти, улучшая производительность чтения, сокращая обращения к диску. Размер кэша критичен для производительности: слишком маленький кэш приведет к частым чтениям с диска, замедляя операции, а слишком большой - вызовет проблемы с распределением памяти.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Кэш WiredTiger в MongoDB хранит часто используемые данные и индексы в памяти, улучшая производительность чтения, сокращая обращения к диску. Размер кэша критичен для производительности: слишком маленький кэш приведет к частым чтениям с диска, замедляя операции, а слишком большой - вызовет проблемы с распределением памяти.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😎 Dictionary Expressions в C#?
Сейчас это предложение в статусе champion (ссылка ниже) и продолжение фичи Collection Expressions из C# 12.
Предложение Dictionary Expressions
👉 Новости 👉 База вопросов
Сейчас это предложение в статусе champion (ссылка ниже) и продолжение фичи Collection Expressions из C# 12.
Предложение Dictionary Expressions
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😱 Как кеш может работать неправильно?
Есть несколько типичных ситуаций. Проблема стадного эффекта возникает, когда одновременно истекает много ключей. Все запросы начинают идти прямо в базу, и она перегружается.
Это решается добавлением случайного времени к сроку жизни ключей или ограничением доступа к базе только для критичных данных, пока кеш не восстановится.
Пробой кеша случается, когда ключа нет ни в кеше, ни в базе. Приложение не может обновить кеш и создаёт лишнюю нагрузку. В этом случае помогает кеширование null для несуществующих ключей или проверка ключа через bloom filter, чтобы лишний раз не обращаться к базе.
Есть и пробой по «горячему» ключу. Когда один популярный ключ истекает, вся нагрузка уходит в базу. Поскольку такие ключи могут составлять большую часть запросов, для них обычно не задают время жизни.
Кеш может и просто упасть. Тогда все запросы идут в базу, и система перестаёт справляться. Здесь выход либо в использовании circuit breaker, который блокирует обращения и к кешу, и к базе, либо в развёртывании кластера кеша, чтобы повысить его доступность.
👉 Новости 👉 База вопросов
Есть несколько типичных ситуаций. Проблема стадного эффекта возникает, когда одновременно истекает много ключей. Все запросы начинают идти прямо в базу, и она перегружается.
Это решается добавлением случайного времени к сроку жизни ключей или ограничением доступа к базе только для критичных данных, пока кеш не восстановится.
Пробой кеша случается, когда ключа нет ни в кеше, ни в базе. Приложение не может обновить кеш и создаёт лишнюю нагрузку. В этом случае помогает кеширование null для несуществующих ключей или проверка ключа через bloom filter, чтобы лишний раз не обращаться к базе.
Есть и пробой по «горячему» ключу. Когда один популярный ключ истекает, вся нагрузка уходит в базу. Поскольку такие ключи могут составлять большую часть запросов, для них обычно не задают время жизни.
Кеш может и просто упасть. Тогда все запросы идут в базу, и система перестаёт справляться. Здесь выход либо в использовании circuit breaker, который блокирует обращения и к кешу, и к базе, либо в развёртывании кластера кеша, чтобы повысить его доступность.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Amplication — это инструмент с открытым исходным кодом для автоматического генерации серверной части .NET и Node.js приложений!
Он позволяет разработчикам быстро создавать API и соответствующую серверную логику, исключая необходимость вручную писать код для повторяющихся задач, таких как создание CRUD-операций, управление базой данных и аутентификация. Amplication ориентирован на ускорение разработки и избавление от рутины, предоставляя мощные возможности для конфигурирования и расширения с помощью плагинов и кастомных решений.
Гитхаб
👉 Новости 👉 База вопросов
Он позволяет разработчикам быстро создавать API и соответствующую серверную логику, исключая необходимость вручную писать код для повторяющихся задач, таких как создание CRUD-операций, управление базой данных и аутентификация. Amplication ориентирован на ускорение разработки и избавление от рутины, предоставляя мощные возможности для конфигурирования и расширения с помощью плагинов и кастомных решений.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #mongoDB
🤔 Что такое map-reduce в MongoDB и когда его следует использовать?
💬 Кратко:
Map-reduce в MongoDB - это парадигма обработки данных, состоящая из двух этапов:
🟠 Мар: Вы определяете функцию, которая обрабатывает каждый документ и выводит пары ключ-
значение.
🟠 Reduce: Вы определяете функцию, которая агрегирует или вычисляет данные на основе этих пар.
Map-reduce полезен для сложных операций агрегации, которые трудно выполнить с помощью
стандартных методов агрегирования MongoDB.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Map-reduce в MongoDB - это парадигма обработки данных, состоящая из двух этапов:
значение.
Map-reduce полезен для сложных операций агрегации, которые трудно выполнить с помощью
стандартных методов агрегирования MongoDB.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😐 В .NET 9 может быть самая удобная платформа для микросервисов и вот почему.
Обычно команды тратят недели, чтобы собрать в кучу отказоустойчивость, наблюдаемость, сервис-дискавери и API-шлюзы.
В .NET 9 всё это уже есть из коробки.
🔴 Resilience
Встроенные ретраи, таймауты и circuit breakers, без сторонних библиотек.
🔴 Observability
Поддержка OpenTelemetry из коробки. Трассировки, метрики и логи без лишних усилий.
🔴 .NET Aspire
Cloud-native стек для быстрых распределённых систем.
🔴 Service Discovery
Можно использовать логические имена сервисов вместо жёстко прописанных URL. В рантайме они резолвятся через конфиг.
🔴 API Gateway
YARP — лёгкий reverse proxy, который работает и как API-шлюз, с минимальной настройкой.
Если вы строите микросервисы на .NET, больше не нужно собирать инфраструктуру вручную.
Подробности: ссылка
👉 Новости 👉 База вопросов
Обычно команды тратят недели, чтобы собрать в кучу отказоустойчивость, наблюдаемость, сервис-дискавери и API-шлюзы.
В .NET 9 всё это уже есть из коробки.
Встроенные ретраи, таймауты и circuit breakers, без сторонних библиотек.
Поддержка OpenTelemetry из коробки. Трассировки, метрики и логи без лишних усилий.
Cloud-native стек для быстрых распределённых систем.
Можно использовать логические имена сервисов вместо жёстко прописанных URL. В рантайме они резолвятся через конфиг.
YARP — лёгкий reverse proxy, который работает и как API-шлюз, с минимальной настройкой.
Если вы строите микросервисы на .NET, больше не нужно собирать инфраструктуру вручную.
Подробности: ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Как включить DATAS в .NET 8
Dynamic adaptation to application sizes (DATAS) по умолчанию включен в dotnet 9, и многие приложения благодаря этому заметно сократили потребление памяти.
В .NET 8 можно включить его через настройку выше.
Не забудь прогнать бенчмарки своего сценария до и после.
https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/datas
👉 Новости 👉 База вопросов
Dynamic adaptation to application sizes (DATAS) по умолчанию включен в dotnet 9, и многие приложения благодаря этому заметно сократили потребление памяти.
В .NET 8 можно включить его через настройку выше.
Не забудь прогнать бенчмарки своего сценария до и после.
https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/datas
Please open Telegram to view this post
VIEW IN TELEGRAM
😍1
#Собес #mongoDB
🤔 Объясните концепцию уровня подтверждения записи (write concern) в MongoDB.
💬 Кратко:
Уровень подтверждения записи (write concern) в MongoDB определяет, сколько узлов репликационного набора должны подтвердить выполнение операции записи (вставка, обновление, удаление), чтобы она считалась успешной. Существует несколько уровней подтверждения:
🟠 Unacknowledged: Запись выполняется без ожидания подтверждения.
🟠 Acknowledged: Ожидается подтверждение от основного узла.
🟠 Majority: Ожидается подтверждение от большинства узлов репликационного набора, что гарантирует сохранность данных.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Уровень подтверждения записи (write concern) в MongoDB определяет, сколько узлов репликационного набора должны подтвердить выполнение операции записи (вставка, обновление, удаление), чтобы она считалась успешной. Существует несколько уровней подтверждения:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
👋 Малоизвестная фича в C# —
Она позволяет давать новое имя уже существующему типу.
Мы использовали её в крупном проекте по модернизации, где было море конфликтов типов, и это реально спасло.
Причём alias работает даже с кортежами.
👉 Новости 👉 База вопросов
type aliasОна позволяет давать новое имя уже существующему типу.
Мы использовали её в крупном проекте по модернизации, где было море конфликтов типов, и это реально спасло.
Причём alias работает даже с кортежами.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵 Мало кто из разработчиков знает про Dynamic Authorization в
В
Это когда доступ к ресурсу зависит не только от роли пользователя, но и от его атрибутов, самого ресурса и окружения.
Примеры: автор может редактировать только свои книги, а региональный менеджер управляет данными только в своём регионе.
Реализуется это через Attribute-Based Authorization с
Подход полезен там, где нужно гибкое и контекстное управление правами.
Подробнее про best practices в
👉 Новости 👉 База вопросов
ASP.NET CoreВ
ASP.NET Core, помимо Role-Based и Claims-Based подходов, можно использовать Dynamic AuthorizationЭто когда доступ к ресурсу зависит не только от роли пользователя, но и от его атрибутов, самого ресурса и окружения.
Примеры: автор может редактировать только свои книги, а региональный менеджер управляет данными только в своём регионе.
Реализуется это через Attribute-Based Authorization с
IAuthorizationRequirement и AuthorizationHandler.Подход полезен там, где нужно гибкое и контекстное управление правами.
Подробнее про best practices в
ASP.NET Core читай тутPlease open Telegram to view this post
VIEW IN TELEGRAM
❤3
#полезное
😵 Docker + .NET pro tip
Для .NET приложений используйте многоступенчатую сборку: сначала компилируем и публикуем, потом копируем только готовые бинарники в минимальный рантайм-образ.
Преимущества:
🔵 минимальный размер финального контейнера,
🔵 быстрый запуск без SDK, только рантайм,
🔵 меньше уязвимостей благодаря облегчённому окружению.
👉 Новости 👉 База вопросов
Для .NET приложений используйте многоступенчатую сборку: сначала компилируем и публикуем, потом копируем только готовые бинарники в минимальный рантайм-образ.
# Этап сборки
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY *.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish
# Этап финального образа
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Преимущества:
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
YeaHub
Главные новости и обновления платформы
YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.
Платформа: https://yeahub.ru
Для связи: @ruslan_kuyanets
YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.
Платформа: https://yeahub.ru
Для связи: @ruslan_kuyanets
❤4
#Собес #mongoDB
🤔 Как выполнять текстовый поиск в MongoDB?
💬 Кратко:
B MongoDB для текстового поиска используется оператор
🟠 Создайте текстовый индекс на одном или нескольких полях коллекции.
🟠 Используйте оператор $text в запросе для поиска по индексированным полям.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
B MongoDB для текстового поиска используется оператор
$text и текстовые индексы. Чтобы выполнить текстовый поиск:📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
📞 Monolith или microservices — не вопрос "что лучше".
Важно другое: каждая архитектура даёт свои плюсы и минусы.
Когда нужны микросервисы:
- независимые деплои
- разные технологии под сервисы
- гибкое масштабирование по частям
Все остальные выгоды можно получить и в монолите. Поэтому мой выбор чаще всего — modular monolith: проще, дешевле, без лишней сложности.
Подробнее: https://milanjovanovic.tech/modular-monolith-architecture?utm_source=X&utm_medium=social&utm_campaign=01.09.2025
👉 Новости 👉 База вопросов
Важно другое: каждая архитектура даёт свои плюсы и минусы.
Когда нужны микросервисы:
- независимые деплои
- разные технологии под сервисы
- гибкое масштабирование по частям
Все остальные выгоды можно получить и в монолите. Поэтому мой выбор чаще всего — modular monolith: проще, дешевле, без лишней сложности.
Подробнее: https://milanjovanovic.tech/modular-monolith-architecture?utm_source=X&utm_medium=social&utm_campaign=01.09.2025
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Как писать условные и при этом читаемые запросы?
Всё что нужно, это выражение CASE.
Оно работает так же, как if else if else в C#. Как только условие срабатывает, чтение останавливается и возвращается результат, если ни одно условие не выполнилось, возвращается значение из ветки ELSE.
Главный плюс CASE в том, что уменьшается количество обращений к данным в базе, не нужно писать несколько разных запросов с разными условиями, достаточно одного CASE и одного запроса, чтобы получить нужные значения.
Кроме того, CASE полезен, если у вас несколько ORDER BY для многоуровневой сортировки.
Но есть важный момент, который я сам однажды понял на практике, использовать CASE лучше в SELECT, а не в WHERE.
Почему? потому что WHERE почти всегда работает быстрее для фильтрации строк.
👉 Новости 👉 База вопросов
Всё что нужно, это выражение CASE.
Оно работает так же, как if else if else в C#. Как только условие срабатывает, чтение останавливается и возвращается результат, если ни одно условие не выполнилось, возвращается значение из ветки ELSE.
Главный плюс CASE в том, что уменьшается количество обращений к данным в базе, не нужно писать несколько разных запросов с разными условиями, достаточно одного CASE и одного запроса, чтобы получить нужные значения.
Кроме того, CASE полезен, если у вас несколько ORDER BY для многоуровневой сортировки.
Но есть важный момент, который я сам однажды понял на практике, использовать CASE лучше в SELECT, а не в WHERE.
Почему? потому что WHERE почти всегда работает быстрее для фильтрации строк.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2