#полезное
🤓 Исключения не для управления потоком
Исключения применимы только для непредвиденных ситуаций. Когда ими заменяют обычные условия, код становится менее читаемым, сложнее в отладке и работает медленнее.
Решение — использовать Result Pattern. Возврат объекта с полями IsSuccess или IsError, Value и Error делает API предсказуемым, код чище, тесты проще и повышает производительность.
Уже есть готовые NuGet-пакеты вроде FluentResults, CSharpFunctionalExtensions, Ardalis Result и error-or, но реализовать такой паттерн можно и самостоятельно.
Здесь лучший гайд по тому, как использовать Result Pattern в реальных приложениях
👉 Новости 👉 База вопросов
Исключения применимы только для непредвиденных ситуаций. Когда ими заменяют обычные условия, код становится менее читаемым, сложнее в отладке и работает медленнее.
Решение — использовать Result Pattern. Возврат объекта с полями IsSuccess или IsError, Value и Error делает API предсказуемым, код чище, тесты проще и повышает производительность.
Уже есть готовые NuGet-пакеты вроде FluentResults, CSharpFunctionalExtensions, Ardalis Result и error-or, но реализовать такой паттерн можно и самостоятельно.
Здесь лучший гайд по тому, как использовать Result Pattern в реальных приложениях
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😇 Новая C#-библиотека RCParsing, которая предлагает гибридный подход к обработке сложных синтаксисов с отступами.
Разработчики отмечают, что традиционные инструменты часто не справляются с такими задачами, а использование барьерных токенов значительно улучшает качество парсинга. В качестве примера приводится разбор YAML.
Подробнее в статье
👉 Новости 👉 База вопросов
Разработчики отмечают, что традиционные инструменты часто не справляются с такими задачами, а использование барьерных токенов значительно улучшает качество парсинга. В качестве примера приводится разбор YAML.
Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Топ-3 встроенных обобщённых делегата в C#: Func, Action и Predicate
Делегаты — это указатели на функции. Они помогают в коммуникации и колбэках
В .NET есть три встроенных обобщённых делегата:
1⃣
2⃣
3⃣
Эти обобщённые делегаты активно используются во встроенных классах .NET,
и мы можем применять их, чтобы писать делегаты короче.
Хотите увидеть их на реальном примере?
🟠 Создаём класс
🟠 Формируем список объектов типа
🟠 Добавляем данные
Некоторые методы LINQ используют делегаты:
🟡 Метод Select принимает Func
🟡 Метод ForEach принимает Action
🟡 Метод FindAll принимает Predicate
👉 Новости 👉 База вопросов
Делегаты — это указатели на функции. Они помогают в коммуникации и колбэках
В .NET есть три встроенных обобщённых делегата:
Func: принимает обобщённый вход и возвращает обобщённый выходAction: принимает обобщённый вход и ничего не возвращаетPredicate: принимает обобщённый вход и всегда возвращает BooleanЭти обобщённые делегаты активно используются во встроенных классах .NET,
и мы можем применять их, чтобы писать делегаты короче.
Хотите увидеть их на реальном примере?
Student с некоторыми свойствамиStudentНекоторые методы LINQ используют делегаты:
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Как восстановить удалённую ветку?
💬 Кратко:
Если ветка была удалена локально, её можно восстановить, используя команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Если ветка была удалена локально, её можно восстановить, используя команду
git reflog . Если ветка была удалена удалённо, можно восстановить еёс помощью git push origin ‹ branch_name›.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Запуск программ с защитой PPL
CreateProcessAsPPL — инструмент для запуска приложений с включенной защитой PPL. Позволяет выбирать уровень защиты для повышения безопасности выполнения программ.
Основные моменты:
🔵 Поддержка нескольких уровней защиты PPL.
🔵 Удобный интерфейс командной строки.
🔵 Полезен для разработчиков и исследователей безопасности.
GitHub
👉 Новости 👉 База вопросов
CreateProcessAsPPL — инструмент для запуска приложений с включенной защитой PPL. Позволяет выбирать уровень защиты для повышения безопасности выполнения программ.
Основные моменты:
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 730. Count Different Palindromic Subsequences
Поскольку ответ может быть очень большим, верните его по модулю 109 + 7. Подпоследовательность строки получается путем удаления из нее нуля или более символов. Последовательность является палиндромной, если она равна последовательности, обращенной назад. Две последовательности a1, a2, ... и b1, b2, ... различны, если существует некоторое i, для которого ai != bi.
Пример:
👨💻 Алгоритм:
1⃣ Используйте динамическое программирование для подсчета количества палиндромных подпоследовательностей.
2⃣ Введите двумерный массив dp, где dp[i][j] представляет количество палиндромных подпоследовательностей в подстроке от i до j.
3⃣ Итерируйте по длине подстрок от 1 до длины строки и обновляйте значения в dp на основе состояния предыдущих подстрок.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 730. Count Different Palindromic Subsequences
Поскольку ответ может быть очень большим, верните его по модулю 109 + 7. Подпоследовательность строки получается путем удаления из нее нуля или более символов. Последовательность является палиндромной, если она равна последовательности, обращенной назад. Две последовательности a1, a2, ... и b1, b2, ... различны, если существует некоторое i, для которого ai != bi.
Пример:
Input: s = "bccb"
Output: 6
public class Solution {
public int CountPalindromicSubsequences(string s) {
const int MOD = 1000000007;
int n = s.Length;
int[,] dp = new int[n, n];
for (int i = 0; i < n; i++) {
dp[i, i] = 1;
}
for (int length = 2; length <= n; length++) {
for (int i = 0; i <= n - length; i++) {
int j = i + length - 1;
if (s[i] == s[j]) {
int l = i + 1, r = j - 1;
while (l <= r && s[l] != s[i]) l++;
while (l <= r && s[r] != s[j]) r--;
if (l > r) {
dp[i, j] = dp[i + 1, j - 1] * 2 + 2;
} else if (l == r) {
dp[i, j] = dp[i + 1, j - 1] * 2 + 1;
} else {
dp[i, j] = dp[i + 1, j - 1] * 2 - dp[l + 1, r - 1];
}
} else {
dp[i, j] = dp[i + 1, j] + dp[i, j - 1] - dp[i + 1, j - 1];
}
dp[i, j] = (dp[i, j] + MOD) % MOD;
}
}
return dp[0, n - 1];
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️🔥 .NET Channel Publisher — простой способ строить настоящий async messaging
Как это работает:
- Использует
- Сообщения пишутся в канал и обрабатываются в фоне, не блокируя поток
- Поддержка
Плюсы:
- Минимум кода — максимум гибкости
- Высокая производительность и низкая задержка
- Удобно для event-driven архитектуры и микросервисов
На скриншоте:
🔴 Пример класса
🔴 Трейсинг вызова
👉 Новости 👉 База вопросов
Как это работает:
- Использует
System.Threading.Channels для асинхронной публикации событий - Сообщения пишутся в канал и обрабатываются в фоне, не блокируя поток
- Поддержка
CancellationToken для безопасной отмены Плюсы:
- Минимум кода — максимум гибкости
- Высокая производительность и низкая задержка
- Удобно для event-driven архитектуры и микросервисов
На скриншоте:
ChannelPublisher для отправки нотификаций Order.Service: POST orders показывает прозрачную обработку и асинхронность Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from YeaHub
🚀 Прокачиваем подготовку к собеседованиям на максимум!
Если ты ещё не заглядывал(а) в👍 «Авось Прорвёмся» — самое время.
Это проект Ани для самостоятельной подготовки, где есть:
- 1000+ записей реальных собеседований с разбором задач и вопросов;
- контакты рекрутеров;
- гайды по резюме, трудоустройству и стратегиям поиска работы.
- задачи и вопросы с собеседований
Мы в YeaHub продолжаем добавлять собеседования из этих чатов — теперь их можно проходить в тренажёре, тренируя ответы на реальные вопросы работодателей.
🎧 Сначала слушай, как проходят настоящие собесы,
💡 потом — разбирай и практикуй те же кейсы в тренажёре.
Направления: iOS, Android, Frontend, Python, Go, Java, C#, QA, Analytics.
👉 Обучайтесь, общайтесь, растите вместе с YeaHub и Авось Прорвемся
Если ты ещё не заглядывал(а) в
Это проект Ани для самостоятельной подготовки, где есть:
- 1000+ записей реальных собеседований с разбором задач и вопросов;
- контакты рекрутеров;
- гайды по резюме, трудоустройству и стратегиям поиска работы.
- задачи и вопросы с собеседований
Мы в YeaHub продолжаем добавлять собеседования из этих чатов — теперь их можно проходить в тренажёре, тренируя ответы на реальные вопросы работодателей.
🎧 Сначала слушай, как проходят настоящие собесы,
💡 потом — разбирай и практикуй те же кейсы в тренажёре.
Направления: iOS, Android, Frontend, Python, Go, Java, C#, QA, Analytics.
👉 Обучайтесь, общайтесь, растите вместе с YeaHub и Авось Прорвемся
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1🤝1
#Собес #CSharp
🤔 Как лямбда-выражения транслируются в SQL в контексте IQueryable‹ Т ›?
💬 Кратко:
При работе с
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
При работе с
IQueryable‹T› лямбда-выражение представляется как Expression Tree , которое QueryProvider анализирует, разбивая на части (методы, условия, проекции). Затем строится SQL-команда, где части Expression соответствуют WHERE, SELECT, ORDER BY . Фактическое выполнение происходит при перечислении, и в запрос включаются только поддерживаемые операции.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
❤1
#полезное
😱 Как упаковать RPM на Linux через GitLab CI/CD?
В материале детально разбирается разработка службы на .NET Core, конфигурация spec-файла, применение макросов и запуск GitLab Runner внутри Docker. Полезные рекомендации для DevOps по автоматизации билда и контролю версий.
Читать подробнее: https://habr.com/ru/articles/952748/
👉 Новости 👉 База вопросов
В материале детально разбирается разработка службы на .NET Core, конфигурация spec-файла, применение макросов и запуск GitLab Runner внутри Docker. Полезные рекомендации для DevOps по автоматизации билда и контролю версий.
Читать подробнее: https://habr.com/ru/articles/952748/
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 Чистим NuGet и освобождаем десятки гигабайт
Со временем NuGet накапливает огромные объёмы кэша:
- http-cache может весить 10+ ГБ
- global-packages легко разрастается до 50 ГБ и больше
Если места на диске не хватает — кэши можно безопасно почистить:
Очистка глобальных пакетов:
Очистка http-кэша:
Очистка временных файлов:
Полная зачистка всего:
После очистки пакеты будут скачаны заново при следующем dotnet restore, но на диске станет намного свободнее.
Проверить текущие кэши можно так:
👉 Новости 👉 База вопросов
Со временем NuGet накапливает огромные объёмы кэша:
- http-cache может весить 10+ ГБ
- global-packages легко разрастается до 50 ГБ и больше
Если места на диске не хватает — кэши можно безопасно почистить:
Очистка глобальных пакетов:
dotnet nuget locals global-packages --clear
Очистка http-кэша:
dotnet nuget locals http-cache --clear
Очистка временных файлов:
dotnet nuget locals temp --clear
Полная зачистка всего:
dotnet nuget locals all --clear
После очистки пакеты будут скачаны заново при следующем dotnet restore, но на диске станет намного свободнее.
Проверить текущие кэши можно так:
dotnet nuget locals all --list
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🛞 MauiReactor — MVU для .NET MAUI
Открытая библиотека, реализующая паттерн Model View Update для .NET MAUI.
Она упрощает разработку кроссплатформенных приложений, ускоряет hot reload и повышает производительность.
MauiReactor предлагает альтернативу XAML и позволяет описывать интерфейс на C#. Поддерживаются темы, условный рендеринг и интеграция сторонних компонентов.
Подробнее
👉 Новости 👉 База вопросов
Открытая библиотека, реализующая паттерн Model View Update для .NET MAUI.
Она упрощает разработку кроссплатформенных приложений, ускоряет hot reload и повышает производительность.
MauiReactor предлагает альтернативу XAML и позволяет описывать интерфейс на C#. Поддерживаются темы, условный рендеринг и интеграция сторонних компонентов.
Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Что такое git reflog?
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
git reflog показывает историю всех перемещений HEAD, включая коммиты, слияния и переключения веток. Эта команда полезна для восстановления потерянных коммитов или веток.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Перечислите команды для удаления ветки git
💬 Кратко:
Для удаления локальной ветки:
Если ветка содержит незавершённые изменения:
Для удаления удалённой ветки:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Для удаления локальной ветки:
git branch -d ‹ branch_name>
Если ветка содержит незавершённые изменения:
git branch -D ‹ branch_name>
Для удаления удалённой ветки:
git push origin --delete ‹branch_name>
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵💫 Rider 2025.2.3 был выпущен
Узнать об изменениях в этой сборке и скачать обновление можно здесь:
https://blog.jetbrains.com/dotnet/2025/10/06/resharper-and-rider-2025-2-3/
👉 Новости 👉 База вопросов
Узнать об изменениях в этой сборке и скачать обновление можно здесь:
https://blog.jetbrains.com/dotnet/2025/10/06/resharper-and-rider-2025-2-3/
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #jagged_array #array #data_structure
🤔 Что такое зубчатые массивы (Jagged Arrays)?
💬 Кратко:
Зубчатый массив — это массив массивов, в котором длина каждого вложенного массива может быть разной.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое зубчатые массивы (Jagged Arrays)?
💬 Кратко:
Зубчатый массив — это массив массивов, в котором длина каждого вложенного массива может быть разной.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #git
🤔 Что делает команда git stash?
💬 Кратко:
Команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Команда
git stash сохраняет текущие незавершённые изменения в специальное место (стек), чтобы вы могли переключиться на другую ветку или выполнить другие действия. Эти изменения можно позже восстановить с ПОМОЩЬЮ git stash apply или git stash pop .📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM