Forwarded from Библиотека задач по C# | тесты, код, задания
В .NET Core приложении под нагрузкой замечены частые аллокации при работе с большими массивами, что вызывает давление на GC. Какой подход наиболее правильный?
👾 — Хранить массивы в static переменной, чтобы GC их не удалял
👍 — Использовать ArrayPool<T>.Shared для аренды и возврата массивов
🥰 — Создавать новые массивы на каждый запрос, чтобы избежать race conditions
⚡️ — Принудительно вызывать GC.Collect() после каждой партии запросов
Библиотека задач по C#
👾 — Хранить массивы в static переменной, чтобы GC их не удалял
👍 — Использовать ArrayPool<T>.Shared для аренды и возврата массивов
🥰 — Создавать новые массивы на каждый запрос, чтобы избежать race conditions
⚡️ — Принудительно вызывать GC.Collect() после каждой партии запросов
Библиотека задач по C#
👍87🌚7❤1
Иногда реально ощущение, что нас держат в Матрице.
Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.
❗ Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.
Кто готов вырваться из симуляции и ворваться в сезон найма?
👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно
👉 Забронируй место сейчас
Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.
❗ Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.
Кто готов вырваться из симуляции и ворваться в сезон найма?
👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно
👉 Забронируй место сейчас
.Net Developer (Middle or Senior) — от 200 000 до 300 000 ₽, удалёнка
Senior / Middle C# developer — удалёнка
Разработчик .NET/C# — от 300 000 до 350 000 ₽, удалёнка
Senior .NET Developer — удалёнка
C#/.NET Developer — до 260 000 ₽, удалёнка
Бустер — Удалённо (в любом городе мира).
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждая лишняя строка кода — это деньги.
Больше кода → больше багов → больше инцидентов → больше часов инженеров.
Pattern matching
и switch expressions
помогают уменьшить кодовую базу, ускорить ревью и снизить стоимость поддержки.Pattern Matching: меньше проверок, меньше каста
Используем property pattern: проверка + извлечение объекта в одну строку.
if (customer is { IsActive: true, Orders.Count: > 0 })
{
Process(customer);
}
Компактные решения вместо длинных switch
Переписываем switch на expression switch:
var message = status switch
{
Status.Active => "Active",
Status.Inactive => "Inactive",
Status.Suspended => "Contact support",
_ => "Unknown"
};
Композиция правил: читаем как таблицу
Современные паттерны позволяют описывать правила декларативно.
Пример проверки транзакции:
var decision = (txn.Amount, user.Role, txn.Country) switch
{
(> 10_000, "Guest", not "US") => "Flag",
(<= 10_000, "Admin", _) => "Approve",
_ => "Review"
};
Это не синтаксический сахар, а инструмент управления сложностью.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥3❤2
В архитектурной сфере катастрофически не хватает разработчиков. Проектировщики и инженеры нуждаются в плагинах для софта, а программистов, которые умеют их писать, — единицы. Конкуренция минимальна, спрос растет, а чеки за проекты выше, чем в классическом аутсорсе.
На курсе «Программирование в Autodesk Revit» от EdTech-платформы STEMPS вы научитесь:
https://stemps.ru/
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3
Помните времена, когда на собесе спрашивали FizzBuzz? Забудьте. Теперь вас могут попросить писать код на бумаге, а параллельно проверят, не подглядываете ли вы в ChatGPT.
В карточках — пять трендов, которые перевернули рынок: от смерти грейдинга до «AI-friendly» собеседований.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😢3❤2
dotnet-dump
— ваш лучший помощник, когда приложение падает без логов.Снять дамп памяти:
dotnet-dump collect --process-id 12345
Проанализировать дамп:
dotnet-dump analyze core_*.dmp
Далее доступны команды:
clrstack
, dumpheap
-stat
, gcroot
— чтобы увидеть стеки вызовов, объекты в памяти и цепочки удержания.#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥4❤3🥰1
.NET 10 RC 1 — это шанс заглянуть за кулисы финального релиза.
Это ваша возможность проверить приложения, опробовать новые инструменты и подготовиться к релизу без сюрпризов.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯30❤3😁3
💡 Как определить приоритет задачи
У разработчиков всегда задач больше, чем времени. Чтобы не тратить часы на споры, можно пройтись по этому мини-чеклисту:
1️⃣ Влияние на бизнес/пользователя
Что произойдет, если не сделать? Потеряем клиентов, деньги или просто будет некрасиво?
2️⃣ Срочность
Есть ли жесткий дедлайн? Блокируется ли чужая работа?
3️⃣ Сложность
Сколько времени и сил займет выполнение? Можно ли сделать быстрый фикс?
4️⃣ Риск откладывания
Станет ли хуже, если подождать? Вырастет техдолг, появятся новые баги?
5️⃣ Зависимости
Задача открывает путь для других? Или сама ждет чего-то?
Можно поставить по каждому пункту баллы от 1 до 3 и сложить. Чем выше сумма — тем выше приоритет.
🐸 Библиотека шарписта
#буст
У разработчиков всегда задач больше, чем времени. Чтобы не тратить часы на споры, можно пройтись по этому мини-чеклисту:
Что произойдет, если не сделать? Потеряем клиентов, деньги или просто будет некрасиво?
Есть ли жесткий дедлайн? Блокируется ли чужая работа?
Сколько времени и сил займет выполнение? Можно ли сделать быстрый фикс?
Станет ли хуже, если подождать? Вырастет техдолг, появятся новые баги?
Задача открывает путь для других? Или сама ждет чего-то?
Можно поставить по каждому пункту баллы от 1 до 3 и сложить. Чем выше сумма — тем выше приоритет.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4
Хотите увидеть будущее Visual Studio? Insiders для 2026 версии доступен.
Быстрее, умнее, удобнее — проверяйте новые функции, отлаживайте проекты и опробуйте возможности, которые скоро станут стандартом.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3❤2
🔐 Хэширование в C#: как и когда использовать
Хэширование — это процесс преобразования данных в фиксированное значение, которое затем можно использовать для быстрого поиска и сравнения.
Основная цель хэширования — ускорить операции, например, поиск элементов в коллекциях или в базах данных.
Как работает хэширование
В C# хэширование чаще всего встречается в таких структурах данных, как
Хэш-таблица использует хэш-функцию, которая принимает ключ и преобразует его в индекс, который указывает на место хранения данных в массиве.
Пример реализации собственного хэширования:
Когда стоит использовать хэширование
Если вам нужно быстро найти, добавить или удалить данные, хэширование может значительно ускорить эти операции. Когда вы добавляете или ищете элемент, хэш-функция преобразует его ключ в индекс, и вы сразу попадаете в нужную ячейку, не перебирая все данные.
Хэширование используется для защиты данных, например, в процессе хранения паролей. В этом случае важно использовать криптографически стойкие хэш-функции, такие как SHA-256 или bcrypt.
Хэш-функции могут использоваться для проверки, не изменились ли данные, например, для контроля над целостностью файлов.
💬 Как вы используете хэширование в своих проектах? Делитесь примерами в комментариях 👇
🐸 Библиотека шарписта
#междусобойчик
Хэширование — это процесс преобразования данных в фиксированное значение, которое затем можно использовать для быстрого поиска и сравнения.
Основная цель хэширования — ускорить операции, например, поиск элементов в коллекциях или в базах данных.
Как работает хэширование
В C# хэширование чаще всего встречается в таких структурах данных, как
Dictionary
и HashSet
, где хэш-функции используются для быстрого поиска элементов. Эти коллекции используют хэш-таблицы для того, чтобы операции поиска, добавления и удаления выполнялись за время O(1) в среднем.Хэш-таблица использует хэш-функцию, которая принимает ключ и преобразует его в индекс, который указывает на место хранения данных в массиве.
Пример реализации собственного хэширования:
// Переопределение метода GetHashCode для обеспечения корректного хэширования
public override int GetHashCode()
{
// Простой хэш-функции, использующей значения полей объекта
// Здесь мы комбинируем хэши Name и Age для создания уникального хэш-значения
int hashName = Name == null ? 0 : Name.GetHashCode();
int hashAge = Age.GetHashCode();
// Используем формулу для комбинирования хэшей, чтобы минимизировать коллизии
return hashName ^ hashAge;
}
Когда стоит использовать хэширование
Если вам нужно быстро найти, добавить или удалить данные, хэширование может значительно ускорить эти операции. Когда вы добавляете или ищете элемент, хэш-функция преобразует его ключ в индекс, и вы сразу попадаете в нужную ячейку, не перебирая все данные.
Хэширование используется для защиты данных, например, в процессе хранения паролей. В этом случае важно использовать криптографически стойкие хэш-функции, такие как SHA-256 или bcrypt.
Хэш-функции могут использоваться для проверки, не изменились ли данные, например, для контроля над целостностью файлов.
💬 Как вы используете хэширование в своих проектах? Делитесь примерами в комментариях 👇
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👾7👍3❤1
Нашли для вас видео, которое поможет разобраться в различиях между операторами неравенства
!=
и паттерн-матчингом с is not
в C#. Несмотря на схожесть, каждое из этих решений имеет свои особенности, и неправильное использование может привести к ошибкам, особенно в случаях с боксингом, проверкой на null и перегрузкой операторов. Паттерн-матчинг предоставляет более безопасное и гибкое решение, особенно для работы с типами и константами.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
🔥 Последняя неделя перед стартом курса по AI-агентам
Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место
На курсе:
— разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах
📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями
И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»
Промокод на 5.000₽: LASTCALL
👉 Курс здесь
Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место
На курсе:
— разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах
📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями
И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»
Промокод на 5.000₽: LASTCALL
👉 Курс здесь
🔒 Оптимистическая vs пессимистическая блокировка
Каждый .NET разработчик рано или поздно сталкивается с этим: два запроса одновременно обновляют одну сущность в Entity Framework, и один из них молча затирает изменения другого. Классическая проблема многопоточных приложений, которая превращает стабильный код в источник багов.
В многопользовательских приложениях, где несколько пользователей или процессов одновременно читают или изменяют одни и те же данные, очень важно обеспечить целостность и согласованность данных.
В статье разбираемся как это сделать с помощью двух типов блокировок.
➡️ Читать статью
🐸 Библиотека шарписта
Каждый .NET разработчик рано или поздно сталкивается с этим: два запроса одновременно обновляют одну сущность в Entity Framework, и один из них молча затирает изменения другого. Классическая проблема многопоточных приложений, которая превращает стабильный код в источник багов.
В многопользовательских приложениях, где несколько пользователей или процессов одновременно читают или изменяют одни и те же данные, очень важно обеспечить целостность и согласованность данных.
В статье разбираемся как это сделать с помощью двух типов блокировок.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23🥱2