Please open Telegram to view this post
VIEW IN TELEGRAM
🕹 Поиск слов из C#
Мы спрятали 5 ключевых слов из C# разработки на картинке. Попробуйте найти их все👇
❗️ Прячьте слова под спойлер, чтобы не подсказывать другим.
🐸 Библиотека шарписта #междусобойчик
Мы спрятали 5 ключевых слов из C# разработки на картинке. Попробуйте найти их все👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 Что на самом деле происходит с увольнениями в ИТ
Каждый день в чатах разработчиков появляются сообщения «ищу работу», «команду сократили», «проект закрыли». Но никто не говорит о причинах и масштабах катастрофы. Мы запустили большое исследование, чтобы раскрыть правду!
🎯 Что мы выясним:
→ Реальные причины увольнений
→ Сколько времени нужно на поиск работы
→ Самые безумные истории смены работы
Понимая реальную ситуацию, мы сможем принимать взвешенные решения о карьере и не попасться на удочку HR-сказок.
👉 Пройдите опрос за 3 минуты и помогите всему сообществу: https://clc.to/yJ5krg
Каждый день в чатах разработчиков появляются сообщения «ищу работу», «команду сократили», «проект закрыли». Но никто не говорит о причинах и масштабах катастрофы. Мы запустили большое исследование, чтобы раскрыть правду!
🎯 Что мы выясним:
→ Реальные причины увольнений
→ Сколько времени нужно на поиск работы
→ Самые безумные истории смены работы
Понимая реальную ситуацию, мы сможем принимать взвешенные решения о карьере и не попасться на удочку HR-сказок.
👉 Пройдите опрос за 3 минуты и помогите всему сообществу: https://clc.to/yJ5krg
📰 Недельный дайджест
Собрали для вас материалы недели, которые связаны с разработкой на C#.
— Stream Compacting в Marten 8.0
В Marten появилась функция Stream Compacting, позволяющая автоматически агрегировать события и сохранять только актуальное состояние потока.
— Модели транзакций в распределённых системах
Объясняются ключевые различия между транзакционными моделями ACID и BASE, их принципы, цели и ограничения.
— API Design First в .NET
Разбор применения API Design First в проектах на .NET с акцентом на генерацию контрактов, автоматизацию тестирования и интеграцию в пайплайны CI/CD.
— Фишка четвёртого превью .NET 10
В последнем обновлении .NET 10 Preview 4 появилась возможность запускать одиночные C#-файлы без проекта
— Как защитить API: 6 ключевых аспектов безопасности
— JetBrains объявила о выпуске ReSharper для Visual Studio Code
🐸 Библиотека шарписта #свежак
Собрали для вас материалы недели, которые связаны с разработкой на C#.
— Stream Compacting в Marten 8.0
В Marten появилась функция Stream Compacting, позволяющая автоматически агрегировать события и сохранять только актуальное состояние потока.
— Модели транзакций в распределённых системах
Объясняются ключевые различия между транзакционными моделями ACID и BASE, их принципы, цели и ограничения.
— API Design First в .NET
Разбор применения API Design First в проектах на .NET с акцентом на генерацию контрактов, автоматизацию тестирования и интеграцию в пайплайны CI/CD.
— Фишка четвёртого превью .NET 10
В последнем обновлении .NET 10 Preview 4 появилась возможность запускать одиночные C#-файлы без проекта
— Как защитить API: 6 ключевых аспектов безопасности
— JetBrains объявила о выпуске ReSharper для Visual Studio Code
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по C# | тесты, код, задания
Please open Telegram to view this post
VIEW IN TELEGRAM
Middle/Senior С# Developer (YouRa) — от 250 000 ₽, Удалёнка
C#/.NET-разработчик — Удалёнка.
C# Developer (Avalonia/.NET, плагин под Revit) — Гибрид (Москва).
Web (backend) / .NET Разработчик — Удалёнка.
Senior/Lead C# разработчик — до 5 800 $, Удалёнка.
Бустер — Офис у вас дома.
Please open Telegram to view this post
VIEW IN TELEGRAM
Проблема: cортировка больших массивов может быть неэффективной при использовании простых алгоритмов, таких как сортировка пузырьком или вставками.
Решение: Автор в книге Algorithms and Data Structures for OOP With C# демонстрирует реализацию QuickSort — одного из самых эффективных алгоритмов сортировки на практике, с рекурсивным разбиением массива.
Пример кода:
public class QuickSortExample
{
public void QuickSort(int[] arr, int low, int high)
{
if (low < high)
{
int pi = Partition(arr, low, high);
QuickSort(arr, low, pi - 1);
QuickSort(arr, pi + 1, high);
}
}
private int Partition(int[] arr, int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j < high; j++)
{
if (arr[j] < pivot)
{
i++;
(arr[i], arr[j]) = (arr[j], arr[i]);
}
}
(arr[i + 1], arr[high]) = (arr[high], arr[i + 1]);
return i + 1;
}
}
Преимущества:
— Быстрая сортировка даже больших наборов данных
— Средняя сложность O(n log n)
— Эффективное использование памяти за счет рекурсии
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем терпеть запутанный код и «божественные» классы, если можно сделать код понятным и структурированным? В карточках — как с помощью высокой связности улучшить читаемость и качество вашего C# кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вам нужно лучше понять структуру изменений в репозитории, команда git log с несколькими флагами станет настоящим спасением.
git log --graph --oneline --all --decorate
Команда визуализирует сложную историю ветвления и слияния веток.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✅ Чек-лист по обработке ошибок и исключений в C#
Составили для вас чек-лист для организации обработки исключений в вашем проекте. Получилась мини база, которую можно скинуть джуну.
1. Используйте try-catch блоки для обработки исключений
• Оборачивайте код, который может вызвать исключение, в блок try
• В блоке catch обрабатывайте конкретные типы исключений, чтобы избежать перехвата всех ошибок.
2. Обрабатывайте только те исключения, которые вы можете корректно обработать.
3. Логируйте исключения для диагностики
• Записывайте подробную информацию о возникшем исключении: тип ошибки, сообщение, стек вызовов.
• Используйте библиотеки логирования: Serilog, NLog, Log4Net.
4. Используйте блок finally для выполнения очистки
Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Используйте его для освобождения ресурсов (например, закрытие файлов или соединений).
5. Создавайте собственные исключения
При необходимости создавайте свои собственные типы исключений для лучшей организации обработки ошибок.
6. Не выбрасывайте исключения с пустыми сообщениями
Если вы выбрасываете исключение, всегда указывайте подробное сообщение, чтобы помочь диагностировать проблему.
7. Используйте throw для повторного выбрасывания исключений
В случае, если вы хотите обработать исключение, но также передать его дальше, используйте
8. Не используйте исключения для обычного потока выполнения
Исключения должны использоваться для неожиданных или критических ошибок. Не используйте их для управления потоком выполнения (например, не используйте try-catch для проверки условий).
9. Используйте
Если вы работаете с задачами и несколько исключений могут быть выброшены одновременно, используйте AggregateException для их обработки.
10. Планируйте стратегию обработки ошибок в продакшн-среде
В продакшн-среде важно минимизировать влияние ошибок на пользователя. Рассмотрите возможность использования retry-логики или fallback-методов.
Этот чек-лист поможет вам правильно и эффективно обрабатывать ошибки и исключения в C#-проекте.
🐸 Библиотека шарписта #буст
Составили для вас чек-лист для организации обработки исключений в вашем проекте. Получилась мини база, которую можно скинуть джуну.
1. Используйте try-catch блоки для обработки исключений
• Оборачивайте код, который может вызвать исключение, в блок try
• В блоке catch обрабатывайте конкретные типы исключений, чтобы избежать перехвата всех ошибок.
{
// Код, который может вызвать исключение
}
catch (SpecificException ex)
{
// Обработка конкретного исключения
}
2. Обрабатывайте только те исключения, которые вы можете корректно обработать.
3. Логируйте исключения для диагностики
• Записывайте подробную информацию о возникшем исключении: тип ошибки, сообщение, стек вызовов.
• Используйте библиотеки логирования: Serilog, NLog, Log4Net.
catch (Exception ex)
{
logger.Error(ex, "Произошла ошибка");
}
4. Используйте блок finally для выполнения очистки
Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Используйте его для освобождения ресурсов (например, закрытие файлов или соединений).
{
// Ваш код
}
catch (Exception ex)
{
// Обработка ошибки
}
finally
{
// Очистка ресурсов
}
5. Создавайте собственные исключения
При необходимости создавайте свои собственные типы исключений для лучшей организации обработки ошибок.
public class CustomException : Exception
{
public CustomException(string message) : base(message) { }
}
6. Не выбрасывайте исключения с пустыми сообщениями
Если вы выбрасываете исключение, всегда указывайте подробное сообщение, чтобы помочь диагностировать проблему.
throw new ArgumentNullException("parameterName", "Параметр не может быть null");
7. Используйте throw для повторного выбрасывания исключений
В случае, если вы хотите обработать исключение, но также передать его дальше, используйте
throw
без параметров, чтобы сохранить стек вызовов.8. Не используйте исключения для обычного потока выполнения
Исключения должны использоваться для неожиданных или критических ошибок. Не используйте их для управления потоком выполнения (например, не используйте try-catch для проверки условий).
9. Используйте
AggregateException
для обработки нескольких исключенийЕсли вы работаете с задачами и несколько исключений могут быть выброшены одновременно, используйте AggregateException для их обработки.
{
// Асинхронный код
}
catch (AggregateException ex)
{
foreach (var innerEx in ex.InnerExceptions)
{
// Логирование каждого исключения
}
}
10. Планируйте стратегию обработки ошибок в продакшн-среде
В продакшн-среде важно минимизировать влияние ошибок на пользователя. Рассмотрите возможность использования retry-логики или fallback-методов.
public async Task<T> RetryAsync<T>(Func<Task<T>> action)
{
int retries = 3;
while (retries > 0)
{
try
{
return await action();
}
catch
{
retries--;
if (retries == 0) throw;
}
}
}
Этот чек-лист поможет вам правильно и эффективно обрабатывать ошибки и исключения в C#-проекте.
Please open Telegram to view this post
VIEW IN TELEGRAM
🫣 Устали от HR-сказок про «дружный коллектив» и «печеньки в офисе»?
Давайте честно поговорим о том, что действительно происходит на IT-рынке. Не в розовых презентациях, а в реальной жизни разработчиков, тестировщиков, аналитиков и всех, кто живет кодом.
🧐 Мы проводим исследование, чтобы выяснить:
— Как часто мы прыгаем между компаниями (и почему)
— Какие красные флаги заставляют бежать без оглядки
— Где реально находят работу
— Что бесит в HR больше всего
— Сколько кругов собеседований — это уже перебор
Результаты покажут реальную картину рынка. Без приукрашиваний. Может, компании поймут, что нужно менять, а специалисты — куда двигаться дальше.
😈 Опрос займет 5 минут, но результаты будут работать на всех нас → https://clc.to/9aaXVg
Давайте честно поговорим о том, что действительно происходит на IT-рынке. Не в розовых презентациях, а в реальной жизни разработчиков, тестировщиков, аналитиков и всех, кто живет кодом.
🧐 Мы проводим исследование, чтобы выяснить:
— Как часто мы прыгаем между компаниями (и почему)
— Какие красные флаги заставляют бежать без оглядки
— Где реально находят работу
— Что бесит в HR больше всего
— Сколько кругов собеседований — это уже перебор
Результаты покажут реальную картину рынка. Без приукрашиваний. Может, компании поймут, что нужно менять, а специалисты — куда двигаться дальше.
😈 Опрос займет 5 минут, но результаты будут работать на всех нас → https://clc.to/9aaXVg
Please open Telegram to view this post
VIEW IN TELEGRAM
В .NET 10 появилась возможность запускать .cs-файлы прямо из терминала — без проектов и решений. Пишете один файл, вызываете
dotnet run
, и всё работает.Предлагаем посмотреть видео, где показывают, как эту фичу использовать в автоматизации, генерации данных и даже как поднять mock-сервер — всё из одного файла.
Please open Telegram to view this post
VIEW IN TELEGRAM