This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 7 архитектур, которые стоит знать каждому разработчику
👉 Новости 👉 База вопросов
> Монолит
Всё в одном проекте. Легко развернуть и начать разработку, но с ростом системы поддержка становится сложной. Подходит для небольших или быстрых MVP.
> MVC
Классика веб-фреймворков. Модель, представление и контроллер. Работает отлично, если роли чётко разделены (спойлер: многие контроллеры в итоге становятся объектами-богами)
> Master-Slave (сейчас чаще говорят Leader-Follower)
Популярен в БД: один командует — остальные копируют. Увеличивает отказоустойчивость, но если синхронизация сломается — беда.
> Многослойная архитектура
Знаменитый “lasagna code”: слой представления, логики, доступа к данным, база. Хорошо структурирует, но если перегнуть — становится медленно и громоздко
> Микросервисы
Каждая функция живёт отдельно. Масштабируются отлично, но усложняется тестирование, логирование и деплой. Подход не для всех проектов.
> SOA (сервис-ориентированная архитектура)
Более формальный родственник микросервисов. Часто встречается в больших компаниях и старых системах. ESB (Enterprise Service Bus) сначала кажется полезным. пока не становится главным узким местом.
> Событийно-ориентированная архитектура
Идеальна для приложений в реальном времени. Всё основано на событиях. Очень мощная, но если что-то пойдёт не так.. найти баг — непросто
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Добавили метод
Это появится в
👉 Новости 👉 База вопросов
UseKestrel() в WebApplicationFactory Это появится в
ASP.NET 10 Preview 4 и даст простой способ включить использование сервера Kestrel в WebApplicationFactory Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Что такое виртуальный метод в С#?
Виртуальный метод (
👉 Новости 👉 База вопросов
Виртуальный метод (
virtual method ) - это метод в базовом классе, который можно переопределить в производном классе. Он объявляется с модификатором virtual, а его новая реализация в наследнике определяется с помощью override . Это позволяет изменять поведение методов в дочерних классах, не изменяя код базового класса. Виртуальные методы используются для реализации полиморфизма, когда общий интерфейс класса остается неизменным, но его поведение может отличаться в разных реализациях.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
#полезное
👨💻 Метод-расширение для
TagWith() очень полезен для добавления отладочной информации в логи запросов, но, конечно, мы также можем обернуть его и добавить дополнительную информацию через простой extension method, как в примере выше
👉 Новости 👉 База вопросов
TagWith в Entity FrameworkTagWith() очень полезен для добавления отладочной информации в логи запросов, но, конечно, мы также можем обернуть его и добавить дополнительную информацию через простой extension method, как в примере выше
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 724. Find Pivot Index
Если задан массив целых чисел nums, вычислите поворотный индекс этого массива. Поворотный индекс - это индекс, при котором сумма всех чисел строго слева от индекса равна сумме всех чисел строго справа от индекса. Если индекс находится на левом краю массива, то сумма слева равна 0, так как слева нет элементов. Это относится и к правому краю массива. Возвращается самый левый поворотный индекс. Если такого индекса не существует, возвращается -1.
Пример:
👨💻 Алгоритм:
1⃣ Вычислите сумму всех элементов массива.
2⃣ Пройдите по массиву, вычисляя текущую сумму элементов слева и проверяя, равна ли она разности между общей суммой и текущей суммой справа.
3⃣ Если текущий индекс удовлетворяет условию, верните его; если нет, продолжайте проверку. Если такой индекс не найден, верните -1.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 724. Find Pivot Index
Если задан массив целых чисел nums, вычислите поворотный индекс этого массива. Поворотный индекс - это индекс, при котором сумма всех чисел строго слева от индекса равна сумме всех чисел строго справа от индекса. Если индекс находится на левом краю массива, то сумма слева равна 0, так как слева нет элементов. Это относится и к правому краю массива. Возвращается самый левый поворотный индекс. Если такого индекса не существует, возвращается -1.
Пример:
Input: nums = [1,7,3,6,5,6]
Output: 3
public class Solution {
public int PivotIndex(int[] nums) {
int totalSum = 0;
foreach (int num in nums) {
totalSum += num;
}
int leftSum = 0;
for (int i = 0; i < nums.Length; i++) {
if (leftSum == totalSum - leftSum - nums[i]) {
return i;
}
leftSum += nums[i];
}
return -1;
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1
#полезное
😬 Что такое Queue<T>?
Queue<T> — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).
То есть первый добавленный элемент будет извлечён первым.
Когда использовать?
🟠 Планирование задач
🟠 Очереди на печать
🟠 Обработка сообщений
🟠 Поиск в ширину (BFS) в графах
👉 Новости 👉 База вопросов
Queue<T> — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).
То есть первый добавленный элемент будет извлечён первым.
Когда использовать?
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Что такое модификаторы доступа в С#?
В С# модификаторы доступа определяют, какие части кода могут взаимодействовать с определенными классами, методами и переменными.
Существует 4 основных модификатора:
Дополнительно есть составные модификаторы:
👉 Новости 👉 База вопросов
В С# модификаторы доступа определяют, какие части кода могут взаимодействовать с определенными классами, методами и переменными.
Существует 4 основных модификатора:
public - доступен отовсюду.private - доступен только внутри своего класса.protected - доступен внутри своего класса и наследников.internal - доступен в пределах одной сборки.Дополнительно есть составные модификаторы:
protected internal - доступен в пределах сборки и в классах-наследниках.private protected - доступен только в классах-наследниках внутри одной сборки.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Если ты до сих пор считаешь, что EF Core медленный в 2025 году — ты застрял в прошлом
Одна из его новых фич — поддержка bulk-удалений
Теперь ты можешь удалить любое количество записей за один запрос к базе.
Представим, что e-commerce платформа хочет удалить все корзины, которые не обновлялись больше года.
С
Но помни: bulk-операции обходят EF Change Tracker.
EF Core предлагает много мощных фич для написания чистого и производительного кода.
Вот 5, которые ты обязан знать: readme
👉 Новости 👉 База вопросов
Одна из его новых фич — поддержка bulk-удалений
Теперь ты можешь удалить любое количество записей за один запрос к базе.
Представим, что e-commerce платформа хочет удалить все корзины, которые не обновлялись больше года.
С
ExecuteDelete это делается эффективно: выполняется один SQL-запрос DELETE, который сразу удаляет все старые корзины.Но помни: bulk-операции обходят EF Change Tracker.
EF Core предлагает много мощных фич для написания чистого и производительного кода.
Вот 5, которые ты обязан знать: readme
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Совет по Microsoft Visual Studio
Условная компиляция — отличный способ включать или исключать функциональность в зависимости от сценария деплоя.
Обычно используют
В свойствах проекта, на вкладке Build, можно задать свои собственные символы условной компиляции.
В этом примере используется пользовательский символ, чтобы определить — наследоваться от абстрактного класса или нет.
Важно иметь чёткие инструкции, в каких случаях применять такие символы, как в этом примере
👉 Новости 👉 База вопросов
Условная компиляция — отличный способ включать или исключать функциональность в зависимости от сценария деплоя.
Обычно используют
#if DEBUG, но что если условие не связано с режимом отладки или релиза?В свойствах проекта, на вкладке Build, можно задать свои собственные символы условной компиляции.
В этом примере используется пользовательский символ, чтобы определить — наследоваться от абстрактного класса или нет.
Важно иметь чёткие инструкции, в каких случаях применять такие символы, как в этом примере
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 99% разработчиков ошибаются в обработке исключений
А вот что делает оставшийся 1%:
Они используют глобальный обработчик исключений.
Начиная с .NET 8, можно создать класс, реализующий IExceptionHandler, чтобы перехватывать все необработанные исключения.
Внутри обработчика можно залогировать исключение и вернуть ProblemDetails клиенту API.
Можно также зарегистрировать несколько реализаций
Предсказать все исключения невозможно.
Но можно перехватить их все в одном месте.
👉 Новости 👉 База вопросов
А вот что делает оставшийся 1%:
Они используют глобальный обработчик исключений.
Начиная с .NET 8, можно создать класс, реализующий IExceptionHandler, чтобы перехватывать все необработанные исключения.
Внутри обработчика можно залогировать исключение и вернуть ProblemDetails клиенту API.
Можно также зарегистрировать несколько реализаций
IExceptionHandler — они будут вызываться в порядке регистрации.Предсказать все исключения невозможно.
Но можно перехватить их все в одном месте.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #CSharp
🤔 Что такое цепочка конструкторов в С#?
Цепочка конструкторов (constructor chaining) позволяет одному конструктору вызывать другой внутри одного класса с помощью
👉 Новости 👉 База вопросов
Цепочка конструкторов (constructor chaining) позволяет одному конструктору вызывать другой внутри одного класса с помощью
this . Это сокращает дублирование кода.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 В
Passkey — это новый способ входа в систему без пароля, основанный на стандартах FIDO2/WebAuthn.
Вместо ввода пароля, пользователь подтверждает вход с помощью:
🟠 Face ID или Touch ID (на телефоне или ноутбуке)
🟠 PIN-кода
🟠 внешнего ключа безопасности (например, YubiKey)
👉 Новости 👉 База вопросов
ASP.NET 10 появится поддержка Passkey Passkey — это новый способ входа в систему без пароля, основанный на стандартах FIDO2/WebAuthn.
Вместо ввода пароля, пользователь подтверждает вход с помощью:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😇 Clean Architecture by Pedro Constantino
Clean Architecture — это не только про принципы, но и про ясную структуру, которая делает проект масштабируемым, тестируемым и удобным в поддержке
источник
👉 Новости 👉 База вопросов
Clean Architecture — это не только про принципы, но и про ясную структуру, которая делает проект масштабируемым, тестируемым и удобным в поддержке
источник
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😇 Времена жизни (Lifetimes) в .NET DI:
🟠 Singleton — один экземпляр на всё приложение
🟠 Scoped — один экземпляр на каждый запрос
🟠 Transient — новый экземпляр каждый раз при запросе
Важно помнить:
– Нельзя внедрять Scoped/Transient в Singleton — это может привести к утечкам памяти
– Используй Singleton только для безсостояний или потокобезопасных сервисов
👉 Новости 👉 База вопросов
Важно помнить:
– Нельзя внедрять Scoped/Transient в Singleton — это может привести к утечкам памяти
– Используй Singleton только для безсостояний или потокобезопасных сервисов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Что означает команда enable-debug в PostgreSQL?
Команда
👉 Новости 👉 База вопросов
Команда
enable-debug в PostgreSQL для включения дополнительных параметров отладки при компиляции. Она необходима разработчикам и администраторам баз данных для диагностики проблем и улучшения производительности.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Какой максимальный размер таблицы в PostgreSQL?
B PostgreSQL максимальный размер таблицы ограничен размером базы данных - до 32 ТБ, если используется стандартный блок данных размером 8 КБ. Это ограничение связано с максимальной длиной идентификатора блока в системе.
👉 Новости 👉 База вопросов
B PostgreSQL максимальный размер таблицы ограничен размером базы данных - до 32 ТБ, если используется стандартный блок данных размером 8 КБ. Это ограничение связано с максимальной длиной идентификатора блока в системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
❤1
#полезное
📞 Создание кастомного GPT в ChatGPT может быть крайне полезным.
Например, разработчик хочет заменить SqlClient-операции на Dapper и ему предстоит проделать это множество раз.
С помощью кастомного GPT можно избежать постоянного ввода промптов — достаточно просто вставить код и получить результат.
В этом случае я создал инструкцию в Microsoft Word, сохранил её в PDF и загрузил в кастомного GPT
👉 Новости 👉 База вопросов
Например, разработчик хочет заменить SqlClient-операции на Dapper и ему предстоит проделать это множество раз.
С помощью кастомного GPT можно избежать постоянного ввода промптов — достаточно просто вставить код и получить результат.
В этом случае я создал инструкцию в Microsoft Word, сохранил её в PDF и загрузил в кастомного GPT
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😵💫 В .NET 10 снижена «надбавка» за использование
В .NET 9 перебор массива через
👉 Новости 👉 База вопросов
IEnumerable с 83% до 10%В .NET 9 перебор массива через
IEnumerable обходился на 83% дороже, чем прямой перебор массива, тогда как в .NET 10 эта разница составила всего 10% Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#полезное
👋 𝗛𝘆𝗯𝗿𝗶𝗱𝗖𝗮𝗰𝗵𝗲 в .𝗡𝗘𝗧 𝟵
В .NET 9 появился новый API для кэширования — HybridCache.
Он решает ограничения
Что он предлагает:
🟠 Единый API (и для in-process, и для out-of-process кэша)
🟠 Настраиваемую сериализацию
🟠 Защиту от «штамповки» (stampede protection)
🟠 Очистку кэша по тегам
Метод
Stampede protection означает: на один ключ — только один вызов фабрики одновременно.
Вот как можно начать использовать HybridCache уже сегодня: read
👉 Новости 👉 База вопросов
В .NET 9 появился новый API для кэширования — HybridCache.
Он решает ограничения
IMemoryCache и IDistributedCacheЧто он предлагает:
Метод
GetOrCreateAsync проверяет и основной, и вторичный кэш. Если значения нет — вызывает фабрику, сохраняет результат и возвращает его.Stampede protection означает: на один ключ — только один вызов фабрики одновременно.
Вот как можно начать использовать HybridCache уже сегодня: read
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡
Оба могут создавать скоупы, но ключевой момент в следующем:
Так что использование
Обычно пользовательские скоупы нужны, когда вы работаете с 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