Мы делились этой статьей, и сейчас напомним. Главная мысль простая, лаги часто приходят не из за рендера, а из за памяти и резких скачков GC.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
2025-й стал годом «скучной стабильности» в айти. Компании не росли — выживали: резали бюджеты, оптимизировали команды, затягивали найм.
2383 отклика на 1 вакансию.
−20% позиций за год.
30-50% сокращений в e-commerce.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
😢23🤔1🤩1
🧑💻 Универ, курсы или самоучка
Мы уже спорили про это раньше, а сейчас напомним, потому что под конец года многие планируют, как учиться дальше. Универ, курсы, самообучение это три разные модели, и у каждой свои риски.
➡️ Если хочется курсы, можно посмотреть, что есть в Proglib Academy.
💬 А у вас что сработало, универ, курсы или самообучение, и почему?
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#лучшее_из_библиотеки_2025
Мы уже спорили про это раньше, а сейчас напомним, потому что под конец года многие планируют, как учиться дальше. Универ, курсы, самообучение это три разные модели, и у каждой свои риски.
💬 А у вас что сработало, универ, курсы или самообучение, и почему?
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
От монолитов к мультиагентным системам на C#
Интеграция LLM в
На курсе «Разработка AI-агентов» мы разбираем, как строить такие системы профессионально.
В программе:
— архитектура «мозга» агента: связка
— оркестрация через
— протокол
— глубокие системы поиска знаний (
—
Это твой шанс войти в рабочий ритм с технологиями будущего.
🧨 До 12 января действует акция «3 в 1»: курс по ИИ-агентам + 2 курса в подарок.
Начать обучение
Интеграция LLM в
.NET проекты — это уже не только Semantic Kernel. В 2026 году фокус смещается на создание автономных команд агентов, использующих паттерн ReAct.На курсе «Разработка AI-агентов» мы разбираем, как строить такие системы профессионально.
В программе:
— архитектура «мозга» агента: связка
Reasoning + Acting;— оркестрация через
n8n и работа с внешними API;— протокол
MCP от Anthropic для мультиагентного взаимодействия;— глубокие системы поиска знаний (
RAG) для работы с документами.—
Это твой шанс войти в рабочий ритм с технологиями будущего.
🧨 До 12 января действует акция «3 в 1»: курс по ИИ-агентам + 2 курса в подарок.
Начать обучение
😢5🔥3🥱2🌚1
Вспоминаем лучшую шпаргалку 2025 по методам LINQ.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🥱13❤5😁4🔥3
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14
🎮 DI в Unity, чтобы проект не слипся в комок
Мы уже кидали этот материал в ленту в начале года, и сейчас напомним его снова. В Unity код часто завязывается на MonoBehaviour и Scene, из за этого зависимости расползаются и тестировать становится больно.
➡️ Статья как раз объясняет, почему с DI в Unity все не так гладко, как в обычном C#
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#лучшее_из_библиотеки_2025
Мы уже кидали этот материал в ленту в начале года, и сейчас напомним его снова. В Unity код часто завязывается на MonoBehaviour и Scene, из за этого зависимости расползаются и тестировать становится больно.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2😁1
Метод FirstOrDefault из LINQ часто вводит в заблуждение разработчиков. Он берёт первый элемент из последовательности или выдаёт дефолтное значение типа, когда список пуст. Для структурных типов вроде int это 0, для ссылок null.
Возьмём пустой
List<int>. Вызов numbers.FirstOrDefault() отдаст 0, и если в бизнес-логике 0 значит нет данных, код сломается тихо.var numbers = new List<int>();
var result = numbers.FirstOrDefault(); // 0, а не то, что ожидали
Чтобы фиксить, проверяйте
Any() заранее или цепляйте DefaultIfEmpty(-1). Тогда для пустоты выйдет контролируемое значение, код станет предсказуемым.📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥱13❤1
💯 — Нужны
⚡️ — Можно и без них
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
💯101⚡52❤1
Остальные языки теряют позиции и поднимаются вверх, а C# стабильно держит своё 5 место.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁4❤2
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
➡️ Читать статью
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#лучшее_из_библиотеки_2025
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4🔥2
Pattern-matching — это функциональность языка, позволяющая проверять объект на соответствие определённому шаблону и выполнять действия, если объект удовлетворяет этим условиям.
Этот механизм помогает писать более читабельный и компактный код, устраняя необходимость в громоздких конструкциях вроде if-else или switch.
Паттерн-матчинг в C# активно развивается с каждой новой версией языка и поддерживает множество типов паттернов, таких как:
Используется для проверки типа объекта и его преобразования в этом же выражении:
object obj = "Hello, world!";
if (obj is string str)
{
Console.WriteLine($"Длина строки: {str.Length}");
}
Проверяет значение переменной на соответствие константе:
int number = 42;
if (number is 42)
{
Console.WriteLine("Число равно 42");
}
Сравнивает значения и комбинирует паттерны с помощью логических операторов (and, or, not):
int age = 25;
if (age is > 18 and < 30)
{
Console.WriteLine("Возраст в диапазоне от 18 до 30");
}
Улучшает конструкцию switch, позволяя использовать сложные условия:
object shape = new Circle { Radius = 5 };
string description = shape switch
{
Circle { Radius: > 0 } c => $"Круг с радиусом {c.Radius}",
Rectangle { Width: > 0, Height: > 0 } r => $"Прямоугольник {r.Width}x{r.Height}",
_ => "Неизвестная форма"
};Позволяют проверять свойства объекта:
Person person = new Person { Name = "Alice", Age = 30 };
if (person is { Name: "Alice", Age: > 25 })
{
Console.WriteLine("Это Алиса старше 25 лет");
}Используются для проверки списков и кортежей:
int[] numbers = { 1, 2, 3 };
if (numbers is [1, 2, 3])
{
Console.WriteLine("Массив содержит 1, 2, 3");
}📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🥱3⚡1❤1👾1
Снова делимся с вами инструкцией по интеграции DeepSeek в .NET:
1. Создаём новое консольное приложение и устанавливаем необходимые пакеты: инициализируем проект и добавляем библиотеки для работы с HTTP-запросами и конфигурацией JSON.
2. Настраиваем файл appsettings.json: добавляем базовый URL и API-ключ DeepSeek для последующего взаимодействия с API.
3. Определяем модели данных: создаём классы для представления структуры запросов и ответов API.
4. Создаём сервис для взаимодействия с API: реализуем логику отправки сообщений и обработки ответов от DeepSeek.
5. Организуем взаимодействие с пользователем: настраиваем цикл, позволяющий пользователю вводить сообщения, отправлять их в API и получать ответы, обеспечивая непрерывный диалог.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥱3
C# в 2026-м: от
Зачем просто писать асинхронный код, если можно запустить команду автономных агентов? В новом году Enterprise-разработка переходит на рельсы мультиагентности.
Прокачайте свой стек на курсе по AI-агентам:
— реализуйте паттерн
— свяжите бизнес-логику с внешними API через
— освойте протокол
— внедрите
Ваш идеальный дипломный проект: автономная группа агентов, решающая задачи за целый отдел.
❄️ До 12 января действует акция «3 в 1»: курс по ИИ-агентам + 2 курса в подарок.
Стать архитектором агентов
Task.Run к Agent.RunЗачем просто писать асинхронный код, если можно запустить команду автономных агентов? В новом году Enterprise-разработка переходит на рельсы мультиагентности.
Прокачайте свой стек на курсе по AI-агентам:
— реализуйте паттерн
ReAct для принятия решений внутри .NET систем;— свяжите бизнес-логику с внешними API через
n8n;— освойте протокол
MCP для межсистемного взаимодействия агентов;— внедрите
RAG для мгновенной обработки корпоративных данных.Ваш идеальный дипломный проект: автономная группа агентов, решающая задачи за целый отдел.
❄️ До 12 января действует акция «3 в 1»: курс по ИИ-агентам + 2 курса в подарок.
Стать архитектором агентов
🎉4
🔢 Сортировка строк с числами
Мы уже упоминали эту новость из Preview. Сейчас она в .NET 10, и стоит напомнить, что проблема file1, file10, file2 больше не актуальна.
Суть в
Протестить:
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#лучшее_из_библиотеки_2025
Мы уже упоминали эту новость из Preview. Сейчас она в .NET 10, и стоит напомнить, что проблема file1, file10, file2 больше не актуальна.
Суть в
CompareOptions.NumericOrdering. Issue #13979 висела с 2015, и вот она решена нативно. Флаг заставляет сравнивать цифры как числа, а не посимвольно, так что последовательности вроде версий или имен файлов идут правильно.Протестить:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
var files = new List<string> { "file10", "file2", "file1", "file20" };
// Обычная сортировка
var sortedLex = files.OrderBy(f => f).ToList();
Console.WriteLine("Лексикографическая: " + string.Join(", ", sortedLex));
// file1, file10, file20, file2
// Числовая сортировка
var comparer = StringComparer.Create(CultureInfo.CurrentCulture, CompareOptions.NumericOrdering);
var sortedNumeric = files.OrderBy(f => f, comparer).ToList();
Console.WriteLine("Числовая: " + string.Join(", ", sortedNumeric));
// file1, file2, file10, file20
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35🔥1
Мы уже делились этим материалом весной, и сейчас самое время напомнить. Scalar это интерактивный UI для OpenAPI, который можно подключить к ASP.NET Core и получить более приятную документацию, чем стандартный Swagger UI.
Процесс установки не сложный, а результат превзойдет все ожидания.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4❤2❤🔥1
Мы уже показывали этот трюк, и сейчас напомним, потому что он спасает часы ручного набора классов. В
Visual Studio Edit → Paste Special → Paste JSON As Classes генерирует классы из JSON в буфере, включая атрибуты сериализации.Пример:
"Colors": [
{
"numberKey": 1,
"isPrimary": true,
"listColors": ["Red", "Blue", "Yellow"]
},
{
"numberKey": 2,
"isPrimary": false,
"listColors": ["Purple", "Green", "Orange"]
}
]
}
Сгенерированный C# код:
public class Root
{
public Color[] Colors { get; set; }
}
public class Color
{
public int NumberKey { get; set; }
public bool IsPrimary { get; set; }
public string[] ListColors { get; set; }
}
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁3🔥2❤1⚡1
Тогда мы уже выкладывали похожий чек лист, и сейчас вспомним.
Основные принципы LINQ
✓ Понимать разницу между
IEnumerable<T> и IQueryable<T>✓ Фильтровать (
Where()) данные как можно раньше в цепочке вызовов.✓ Извлекать (
Select()) только нужные поля, а не всю сущность.✓ Использовать
Any() вместо Count() > 0 для проверки наличия элементов.✓ Избегать многократных проходов по коллекции (повторных
.Where(), .Select())✓ Знать разницу между отложенным и немедленным выполнением.
Работа с Where, Select, FirstOrDefault
✓ Не использовать
Where().FirstOrDefault() – просто FirstOrDefault().✓ Вызывать
Where() перед Select(), а не наоборот.✓ Использовать
FirstOrDefault(predicate), если проверяется только одно значение.Nullable
✓ Использовать ?? для значений, которые могут быть null.
✓ Использовать
DefaultIfEmpty() при GroupBy().Избегание дублирующих данных
✓ Использовать
Distinct() для уникальных значений.✓ Использовать
Union() для объединения без дубликатов.✓ Использовать
Except() и Intersect() для разницы между коллекциями.Помните, что LINQ — это не просто удобство, а инструмент, требующий понимания его тонкостей.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤5