C# Development | YeaHub
743 subscribers
304 photos
33 videos
1 file
537 links
Теория, подготовка к интервью и курсы для C# разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
👍 Я работаю с перечислениями каждый день.

И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:

🟠Явно указывать тип хранения

🟠Использовать атрибуты Description для отображаемых имён

🟠Хелпер-метод для получения значения из атрибута Description

🟠Безопасный парсинг через TryParse

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#полезное
🛞 Entity Framework 10 будет поддерживать именованные фильтры запросов

Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 10+ — при условии, что они именованные.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 PolySharp — удобный способ использовать новые фичи C# на старых версиях .NET. Этот NuGet-пакет работает как source-генератор, автоматически подбирая нужные полифиллы в зависимости от целевой платформы. Для работы достаточно добавить ссылку на PolySharp, установить последнюю версию C# и можно писать современный код даже для .NET Framework или UWP.

Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору C# 13 нужен [IsExternalInit] для init-only свойств, PolySharp создаст его за кулисами. При этом он не трогает фичи, требующие поддержки рантайма, но покрывает огромный пласт синтаксических улучшений — от nullable-аннотаций до интерполированных строковых обработчиков.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое секционирование таблиц (table partitioning) в PostgreSQL?

Секционирование - это разделение таблицы на несколько меньших частей (секции), которые обрабатываются отдельно. Это повышает производительность запросов и облегчает управление большими обьемами данных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Использование Dapper

Я заметил, что есть отличные примеры для простых чтений, но практически нет примеров работы с более чем двумя JOIN'ами.

Это означает, что разработчику нужно хорошо разбираться как в SQL, так и в синтаксисе Dapper.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое транзакции в PostgreSQL?

Транзакция - это последовательность операций, которые выполняются как единое целое. Если одна операция не удалась, все изменения откатываются, чтобы сохранить данные в консистентном состоянии. Транзакции поддерживают свойства ACID: атомарность, согласованность, изоляцию и долговечность.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Простой способ улучшить методы в C#
(с переменным числом параметров)


Используй улучшения ключевого слова 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
🔥1
#полезное
😇 Как правильно структурировать фичу в формате вертикального среза?

Вот простая структура вертикального среза, которую можно смело брать на вооружение:

🟠Объект запроса/ответа
🟠Определение эндпоинта
🟠Бизнес-логика

Всё, что относится к одной фиче, находится в одном месте.

Почему это круто — объяснено здесь

Если ты до сих пор не используешь подход с вертикальными срезами, скорее всего, твое приложение концептуально сложнее, чем нужно.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Вот настройка OpenTelemetry для трассировки и логирования в .NET:

Если хочешь узнать больше, то вот гайд как экспортировать телеметрию в Grafana

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое СТЕ (Common Table Expressions) в PostgreSQL?

СТЕ - это временные результаты, определённые в запросе для упрощения сложных операций. Они создаются с помощью ключевого слова WITH и используются для улучшения читаемости и многократного использования промежуточных данных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
❤️‍🔥 Оператор конкатенации ANSI SQL (||) теперь поддерживается в базе данных Azure SQL

Он предлагает «более читаемую и соответствующую стандарту альтернативу существующим способам вроде + и CONCAT()».

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
👨‍💻 Большинство .NET разработчиков никогда с этим не сталкиваются.

Но это делает отладку в 10 раз проще.

Стандартный вид при отладке:

{Namespace.ObjectName}


Никакого контекста. Много путаницы.

Но всего одной строкой кода?

Теперь окно наблюдения показывает:

Order ORD-2025-001: Alice Smith - 249.99
Order ORD-2025-002: Bob Evans - 89.50
Order ORD-2025-003: Maria Lee - 1200.00


В чём фишка?

Используйте DebuggerDisplay.

Добавляете этот атрибут в начало класса, чтобы контролировать, как будет отображаться информация о классе при отладке.

В следующий раз, когда будете смотреть на {Namespace.ObjectName}, помните: так не обязательно должно быть.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Горячее мнение:
ВАМ НЕ НУЖНЫ библиотеки для маппинга.


🔸Напиши конструктор
🔸Вызови конструктор
🔸Готово

Это может быть и статический метод, или что тебе больше нравится.

В своих проектах я редко использую больше одного уровня маппинга.

И ещё реже какие-либо библиотеки для маппинга.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
🖥 Middle C# Backend Developer в ПочтаТех

Техническое собеседование. Осень 2024. Вилка: 200к+. Опыт в резюме: 3
года. Были вопросы по С#, базам данных, рассматривались реальные
кейсы.

Вопросы:
- Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL)?
- В чём отличие кластеризованного и некластеризованного индекса? Когда их стоит применять?
- Что такое сборщик мусора (Garbage Collection) в С#?
- В чем разница между методами Dispose и Finalize в С#?

Все вопросы можно посмотреть на нашей платформе

#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😐 Пример Task.WhenEach в .NET 9

В .NET 9 появилась новая API — Task.WhenEach, которая позволяет обрабатывать асинхронные задачи по мере их завершения.

В простом примере выше выполняется несколько запросов через HttpClient, и их результаты обрабатываются по мере готовности, а не после завершения всех задач.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
#Собес #postgres
🤔 Какие есть типы соединений (JOIN) в PostgreSQL?

PostgreSQL поддерживает четыре основных типа соединений: INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL OUTER JOIN. Они используются для объединения данных из нескольких таблиц, выбирая соответствующие или все записи в зависимости от типа соединения.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😘 Fluent UI Blazor — библиотека компонентов от Microsoft, которая переносит фирменный Fluent Design в Blazor-приложения. Она включает готовые решения для кнопок, карточек, таблиц и сложных элементов вроде диалоговых окон, сохраняя единый стиль современных продуктов Microsoft.

Проект имеет глубокую интеграцию с .NET 8/9 и гибкость: темы настраиваются через CSS-переменные, есть поддержка RTL и адаптация под системные настройки. Для старта можно использовать готовые шаблоны dotnet new или вручную подключить NuGet-пакеты.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #postgres
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?

В PostgreSQL таблицы могут наследовать структуру и данные другой таблицы, что полезно для разделения данных или создания иерархий. Например, можно создать таблицы для разных типов пользователей, которые наследуют общие поля из родительской таблицы.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#ЛитКод
Задача: 728. Self Dividing Numbers

Например, 128 является саморазделяющимся числом, потому что 128 % 1 == 0, 128 % 2 == 0 и 128 % 8 == 0. Саморазделяющееся число не может содержать цифру ноль. Если даны два целых числа left и right, верните список всех саморазделяющихся чисел в диапазоне [left, right].

Пример:
Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]


👨‍💻 Алгоритм:

1⃣Переберите все числа в диапазоне от left до right.

2⃣Для каждого числа проверьте, является ли оно саморазделяющимся: Разделите число на его цифры. Убедитесь, что ни одна цифра не равна нулю и число делится на каждую из своих цифр без остатка.

3⃣Добавьте саморазделяющиеся числа в результативный список и верните его.

😎 Решение:
public class Solution {
public IList<int> SelfDividingNumbers(int left, int right) {
List<int> result = new List<int>();
for (int num = left; num <= right; num++) {
if (IsSelfDividing(num)) {
result.Add(num);
}
}
return result;
}

private bool IsSelfDividing(int num) {
int n = num;
while (n > 0) {
int digit = n % 10;
if (digit == 0 || num % digit != 0) {
return false;
}
n /= 10;
}
return true;
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
#полезное
🛞 Числовой StringComparer появится в dotnet 10

Он позволяет сравнивать числа по их числовому значению, а не в лексикографическом порядке.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4