Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.24K photos
35 videos
85 files
4.41K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
📈 IT-найм 2025: почему сеньоры будут на вес золота, а джуны — без работы?

Времена «мастеров на все руки» в IT подходят к концу. Работодатели все чаще отдают предпочтение кандидатам с опытом работы на конкретном стеке и с продолжительным опытом в конкретной отрасли, будь то финтех, е-ком, ритейл, фудтех и т. д.

Все потому, что рынок требует специалистов с глубоким пониманием специфики отрасли, способных решать задачи в рамках строгих ограничений.

Рассказываем, какие специалисты будут востребованы в 2025 году и как ими стать.

👉 Читать статью
👍7🤔2
🧑‍💻 Каналы в .NET – скрытая жемчужина для асинхронной обработки

Каналы в .NET – это асинхронные очереди в памяти, которые позволяют передавать данные быстро и без задержек. Разберём как их использовать.

Что такое каналы

Каналы — это быстрая и эффективная альтернатива очередям для перемещения данных внутри приложения. Они позволяют передавать данные между потоками без блокировок.

Где они полезны

• Фоновые задачи: например, отправка email после регистрации.

• Внутрипроцессные очереди: без необходимости поднимать Redis или Kafka.

• Обработка событий в реальном времени: без задержек и потерь данных.

➡️ Чтобы узнать про каналы подробнее посмотрите видео

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🧪 Мутационное тестирование в .NET

Мутационное тестирование это метод тестирования, при котором код намеренно мутирует:

📌 Если тесты замечают изменения — хорошо.

📌 Если не замечают — тест бесполезен.

Как это работает в .NET

Для мутационного тестирования в .NET можно использовать Stryker.

Stryker — это библиотека для автоматического мутационного тестирования в .NET. Она анализирует тесты, создает мутации в коде и проверяет, насколько хорошо тесты обнаруживают эти изменения.

1️⃣ Берем исходный код и вносим мутации

• Инструмент автоматически меняет код, создавая мутантов.

• Например, если есть return x > 10;, он заменяет > на < или return true;.

2️⃣ Запускаем тесты на мутированном коде

• Если тест замечает изменения и падает — мутант убит.

• Если тест проходит — мутант выжил, а значит, тест неэффективен.

3️⃣ Анализируем отчет

• Сколько мутантов было убито, какие тесты не заметили изменений и какие части кода не защищены?

Мутационное тестирование — это как "стресс-тест" для тестов. Оно имитирует баги, проверяя, смогут ли тесты их поймать.

➡️ Подробнее про мутационное тестирование

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🤩5👍3
🎮💉 Инъекция зависимостей в Unity для самых маленьких

В разработке на Unity часто возникает проблема высокой связанности кода, что затрудняет поддержку и тестирование. Инъекция зависимостей помогает сделать архитектуру гибче, упрощая управление зависимостями между компонентами.

В свежей статье разбираются подходы к DI в Unity, сложности, связанные с MonoBehaviour, и примеры улучшения структуры проекта.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
📁 Оптимизация работы с данными

Большие JSON-объекты замедляют десериализацию, перегружают память и увеличивают задержки.

Что делать, чтобы JSON не тормозил приложение:

Использовать потоковую обработку JsonSerializer.DeserializeAsync, чтобы не загружать весь объект в память.

Сокращать размер JSON, удаляя ненужные поля и оптимизируя структуру данных.

Включать сжатие данных при передаче JSON через API (например, Gzip)

Рассмотреть альтернативные форматы: MessagePack или Protobuf быстрее и компактнее, чем JSON.

🖇 Полное руководство

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🏗 🔨 Как не сломать продакшен: 8 основных паттернов распределенных систем

Разработка распределённых систем сопряжена с множеством вызовов: от управления состоянием и взаимодействия сервисов до обработки отказов и масштабирования. Чтобы упростить решение этих задач, инженеры используют проверенные временем архитектурные паттерны.

В статье рассматриваются ключевые шаблоны, помогающие строить надёжные и эффективные распределённые системы.

➡️ Читать статью

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
🌐 Тестирование API в .NET

WireMock позволяет эмулировать HTTP-запросы и ответы, создавая локальные mock-сервисы вместо реальных API.

Возможности WireMock.Net:

• Mock API-запросов и ответов – можно заранее определить, как сервер должен реагировать.

• Гибкие настройки – поддержка кастомных заголовков, тел запросов, условий обработки.

• Интеграция с .NET-тестами – можно легко использовать в xUnit, NUnit или MSTest.

• Запись и воспроизведение запросов – полезно при тестировании реальных API-ответов.

Пример мокирования API
var server = WireMockServer.Start();

// Определяем мок-ответ для запроса
server.Given(
Request.Create().WithPath("/test").UsingGet()
)
.WillRespondWith(
Response.Create()
.WithStatusCode(200)
.WithBody("{\"message\": \"Hello, WireMock!\"}")
);

// Используем API в тестах
var client = new HttpClient { BaseAddress = new Uri(server.Url) };
var response = await client.GetStringAsync("/test");
Console.WriteLine(response); // {"message": "Hello, WireMock!"}

server.Stop();


➡️ Подробнеe про мокирование API

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰8👍3
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
👍1🥱1
📊 Как себя чувствует IT-рынок в 2025 году?

Друзья, запускаем важное исследование рынка труда в IT!

Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост

🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье

Ваши ответы помогут составить реальную картину происходящего в индустрии.

👉 Пройти опрос
👾2👍1
🔄 Февральское обновление .NET

Microsoft выпустила обновление .NET 9.0.2, и вот самое важное, что стоит знать:

Производительность и стабильность:

• Устранены критические ошибки JIT-компилятора, которые могли вызывать сбои при работе с исключениями.

• Исправлена проблема пошаговой отладки — теперь разработчики смогут эффективно анализировать код без неожиданных пропусков.

• Оптимизирована работа метода Vector.Create, что ускоряет вычисления в высоконагруженных приложениях.

Совместимость и поддержка:

• Исправлены ошибки сборки для платформы Tizen (linux-armel).

• Обновлены ключевые образы: Alpine, Debian, Fedora для более надежного развертывания.

Безопасность и надежность:

• Обновлена работа профилировщика для избежания блокировок при мониторинге потоков.

• Исправлена ошибка в System.Reflection.Emit, которая создавала неверные PDB-файлы.

➡️ Подробности обновления

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤‍🔥22😁1👾1
🆚 Go vs C#

Выбор языка — это всегда компромисс между производительностью, удобством и экосистемой. Давайте разберёмся, чем отличаются Go и C#.

Область применения

• Go: создан Google, ориентирован на простоту, скорость и параллельность. Отлично подходит для облачных сервисов, микросервисов и высоконагруженных систем.

• C#: язык Microsoft, мощный инструмент для корпоративных решений, игр (Unity) и десктопных приложений.

Кроссплатформенность

• Go: отлично компилируется под разные платформы без зависимостей.

• C#: поддерживает кроссплатформенность через .NET Core, но требует среды выполнения.

Система типов

• Go: строгая, но минималистичная. Отсутствует наследование, но есть интерфейсы.

• C#: мощная объектно-ориентированная система с поддержкой дженериков, интерфейсов и функционального программирования.

Где какой язык лучше

Выбирайте Go, если:

Нужна максимальная производительность без лишней сложности.
Работаете с микросервисами, API, контейнерами, облачными сервисами.
Важна лёгкость развертывания без сложных зависимостей.

Выбирайте C#, если:

Разрабатываете десктопные приложения или сервисы под Windows.
Нужна мощная экосистема с продвинутыми библиотеками.
Создаёте игры на Unity.

➡️ Подробное сравнение в статье

🐸Библиотека Go разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱35👍8👾5🤔3🌚1
😳 Если бы языки программирования были девушками

Выбрать язык — всё равно что найти идеального партнера. Кто-то западает на строгую типизацию, кто-то ищет простоту и гибкость, а некоторые готовы углубиться в самые сложные алгоритмы отношений.

Мы заглянули в Тиндер разработчика и нашли там C#. Как вам? 😏

Еще больше прекрасных дам языков программирования — в нашем канале Библиотека программиста.

Свайпайте и выбирайте свой мэтч ❤️

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9🥱9😁4👍2🤩1
⚡️ Буст продуктивности в Razor/Blazor

Microsoft представила свежие обновления для работы с Razor в Visual Studio и Visual Studio Code.

1️⃣ Извлечение в компонент одним кликом

Теперь можно выделить кусок кода в Razor и мгновенно преобразовать его в отдельный компонент. Нажимаем Ctrl + . и выбираем "Extract to Component".

2️⃣ Новый токенизатор C# на основе Roslyn

Токенизатор — это инструмент, который разбивает код на отдельные элементы: ключевые слова, идентификаторы, строки, символы. В Razor он отвечает за корректное отображение и подсветку синтаксиса, а также за работу автодополнений.

Теперь Razor использует токенизатор Roslyn, из-за чего появилась поддержка нового синтаксиса C# и улучшилась обработка директив.

➡️ Примеры с кодом в блоге .NET

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍2
🐳 Делаем конкурента DeepSeek R1-Zero на домашней пекарне: метод GRPO в Unsloth

Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.

💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.

Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
🚘 Моделирование состояний гонки в C#

Состояние гонки возникает при одновременном доступе потоков к общим данным, что приводит к непредсказуемым результатам. Просто увеличить количество потоков недостаточно из-за оптимизаций CPU и планировщика задач.

Для надёжной симуляции используйте Thread.Sleep() или семафоры для одновременного запуска потоков.

Избежать гонки помогут: lock, Interlocked, Monitor.

📎 Примеры симуляции гонки

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚠️ В машинном обучении, как в любви: слишком идеальные предсказания – это подозрительно!

Когда модель слишком прилипчива к тренировочным данным, результат оказывается… ну, как в отношениях, когда всё кажется идеальным, но реальность ломает сердце.

Оверфиттинг (Overfitting) – модель так хорошо запомнила тренировочные данные, что на реальных данных начинает путаться.
💔 В любви: «Я выбрал идеального партнёра по профилю, а в жизни выяснилось, что его «идеальность» – всего лишь иллюзия!»

Андерфиттинг (Underfitting) – модель обучена настолько поверхностно, что предсказывает мэтчи случайным образом.
💔 В любви: «Мне нравятся только люди с именем Александр, а всех остальных я даже не замечаю – бедный фильтр!»

Неправильный выбор фичей (Feature Selection Fail) – если модель опирается на неважные признаки, она предсказывает мэтчи хуже случайности.
💔 В любви: «Ты любишь авокадо? Значит, мы созданы друг для друга!» – а потом оказывается, что это вовсе не про важное.

🎯 На вебинаре мы разобрали, как избежать этих ошибок и создать работающую модель для speed dating, которая на самом деле помогает находить любовь! Вчера мы не просто говорили о любви – мы её предсказывали!

🔥 Спасибо всем, кто был с нами и участвовал!

💘 Как же это было?

Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉
👍2🥱2😁1
⚡️ Софт-скиллы, которые выведут карьеру в IT на новый уровень

Многие говорят о лидерстве, коммуникации и умении презентовать себя. Но будущее требует других навыков. Разбираем неочевидные soft skills, которые помогут прокачаться в IT и за рубежом.

➡️ Что внутри

▪️ Эмоциональный интеллект

▪️ Умение упрощать

▪️ Антихрупкость

▪️ Мультикультурность

▪️ Предпринимательское мышление


Эти навыки решают. Кто хочет оставаться в топе — развиваемся уже сейчас.

🔵 Подтяните свои знания о машинном обучении вместе с нашим курсом «Базовые модели ML и приложения»

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😁52🥰1
🌲 AVL-дерево в C#

AVL-дерево — это самобалансирующееся бинарное дерево поиска, в котором:

• Баланс-фактор (разница высот левого и правого поддерева) каждого узла равен -1, 0 или 1.

• При нарушении баланса выполняется ротация (левая, правая или двойные) для восстановления баланса.

Баланс-фактор (BF) узла вычисляется так:
BF = Height(Left) - Height(Right)

• BF = 0, 1 или -1 — дерево сбалансировано.
• BF > 1 — перегрузка слева.
• BF < -1 — перегрузка справа.

🤔 Что такое ротация в деревьях?


Ротация — это операция, которая переставляет узлы в бинарном дереве, изменяя их структуру без нарушения свойств дерева.

Когда высота левого и правого поддерева отличается более чем на 1, дерево становится разбалансированным. Это снижает эффективность операций поиска, вставки и удаления.

Виды ротаций в AVL-дереве:

1️⃣ Правое вращение

Применяется, когда перегрузка слева (BF > 1) и новый узел добавлен в левое поддерево левого потомка.

Простой пример:
    C
/
B
/
A

После правого вращения:
    B
/ \
A C


2️⃣Левое вращение

Применяется, когда перегрузка справа (BF < -1) и новый узел добавлен в правое поддерево правого потомка.

Пример:
A
\
B
\
C

После левого вращения:
  B
/ \
A C


3️⃣ Лево-правое вращение

Используется при перегрузке слева, если новый узел добавлен в правое поддерево левого потомка.

Сначала выполняется левое вращение для левого потомка.
Затем правое вращение для корня.

4️⃣ Право-левое вращение

Используется при перегрузке справа, если новый узел добавлен в левое поддерево правого потомка.

Сначала выполняется правое вращение для правого потомка.
Затем левое вращение для корня.

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍184🌚3👾1
📢 Где «выстрелит» твой стартап: 8 площадок для запуска и продвижения IT-проекта

Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.

👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
👍2
🛠 Как разбить большой PR на GitHub на удобные части

Большие PR с сотнями изменений — кошмар для ревью. Но есть решение: разбейте их на небольшие, логичные части.

Если изменения уже в основной ветке:

• Сгруппируйте изменения по логике: фичи, рефакторинг, конфиг.

• Создайте отдельные ветки под каждую группу.

• Cherry-pick нужные коммиты в новые ветки и сделайте PR.

Если изменения ещё не закоммичены:

• Сделайте бэкап-ветку, чтобы ничего не потерять.

• Используйте git add -p, чтобы выборочно добавить изменения.

• Создавайте PR для каждой группы изменений, повторяя процесс, пока все изменения не будут разделены.

💡Советы:


• Один PR — одна задача.

• Пишите понятные сообщения коммитов.

• Указывайте зависимости между PR.

• Всегда держите бэкап-ветку на случай ЧП.

📎 Подробности и git-команды

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8👍2👏1
📚 Основы алгоритмов: полный гайд

Competitive Programmer’s Handbook — это книга для всех, кто хочет освоить соревновательное программирование.

Что внутри:

Основы алгоритмической сложности.

Структуры данных: стеки, очереди, деревья.

Алгоритмы поиска и сортировки.

Динамическое программирование, графы и многое другое.

➡️ Ссылка на книгу

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5👍31