#полезное
👍 Я работаю с перечислениями каждый день.
И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:
🟠 Явно указывать тип хранения
🟠 Использовать атрибуты
🟠 Хелпер-метод для получения значения из атрибута
🟠 Безопасный парсинг через
👉 Новости 👉 База вопросов
И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:
Description для отображаемых имёнDescriptionTryParsePlease open Telegram to view this post
VIEW IN TELEGRAM
👍2
#полезное
🛞 Entity Framework 10 будет поддерживать именованные фильтры запросов
Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 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 нужен
Гитхаб
👉 Новости 👉 База вопросов
Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору 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.
👉 Новости 👉 База вопросов
Я заметил, что есть отличные примеры для простых чтений, но практически нет примеров работы с более чем двумя JOIN'ами.
Это означает, что разработчику нужно хорошо разбираться как в SQL, так и в синтаксисе Dapper.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое транзакции в PostgreSQL?
Транзакция - это последовательность операций, которые выполняются как единое целое. Если одна операция не удалась, все изменения откатываются, чтобы сохранить данные в консистентном состоянии. Транзакции поддерживают свойства ACID: атомарность, согласованность, изоляцию и долговечность.
👉 Новости 👉 Платформа
Транзакция - это последовательность операций, которые выполняются как единое целое. Если одна операция не удалась, все изменения откатываются, чтобы сохранить данные в консистентном состоянии. Транзакции поддерживают свойства ACID: атомарность, согласованность, изоляцию и долговечность.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Простой способ улучшить методы в C#
(с переменным числом параметров)
Используй улучшения ключевого слова
Ключевое слово
Раньше:
Теперь в C# 13 и .NET 9:
-
-
-
Это упрощает код и делает API гибче.
👉 Новости 👉 База вопросов
(с переменным числом параметров)
Используй улучшения ключевого слова
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
👉 Новости 👉 База вопросов
Если хочешь узнать больше, то вот гайд как экспортировать телеметрию в Grafana
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое СТЕ (Common Table Expressions) в PostgreSQL?
СТЕ - это временные результаты, определённые в запросе для упрощения сложных операций. Они создаются с помощью ключевого слова WITH и используются для улучшения читаемости и многократного использования промежуточных данных.
👉 Новости 👉 Платформа
СТЕ - это временные результаты, определённые в запросе для упрощения сложных операций. Они создаются с помощью ключевого слова 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 раз проще.
Стандартный вид при отладке:
Никакого контекста. Много путаницы.
Но всего одной строкой кода?
Теперь окно наблюдения показывает:
В чём фишка?
Используйте
Добавляете этот атрибут в начало класса, чтобы контролировать, как будет отображаться информация о классе при отладке.
В следующий раз, когда будете смотреть на
👉 Новости 👉 База вопросов
Но это делает отладку в 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
Техническое собеседование. Осень 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 —
В простом примере выше выполняется несколько запросов через
👉 Новости 👉 База вопросов
В .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. Они используются для объединения данных из нескольких таблиц, выбирая соответствующие или все записи в зависимости от типа соединения.
👉 Новости 👉 Платформа
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 и адаптация под системные настройки. Для старта можно использовать готовые шаблоны
Гитхаб
👉 Новости 👉 База вопросов
Проект имеет глубокую интеграцию с .NET 8/9 и гибкость: темы настраиваются через CSS-переменные, есть поддержка RTL и адаптация под системные настройки. Для старта можно использовать готовые шаблоны
dotnet new или вручную подключить NuGet-пакеты. Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #postgres
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?
В 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].
Пример:
👨💻 Алгоритм:
1⃣ Переберите все числа в диапазоне от left до right.
2⃣ Для каждого числа проверьте, является ли оно саморазделяющимся: Разделите число на его цифры. Убедитесь, что ни одна цифра не равна нулю и число делится на каждую из своих цифр без остатка.
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]
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
LeetCode
Self Dividing Numbers - LeetCode
Can you solve this real interview question? Self Dividing Numbers - A self-dividing number is a number that is divisible by every digit it contains.
* For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
A self…
* For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
A self…
👍4❤2
#полезное
🛞 Числовой
Он позволяет сравнивать числа по их числовому значению, а не в лексикографическом порядке.
👉 Новости 👉 База вопросов
StringComparer появится в dotnet 10Он позволяет сравнивать числа по их числовому значению, а не в лексикографическом порядке.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4