csharpproglib | Unsorted

Telegram-канал csharpproglib - Библиотека шарписта | C#, F#, .NET, ASP.NET

23284

Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Subscribe to a channel

Библиотека шарписта | C#, F#, .NET, ASP.NET

🛡 Поздравляем героев C#-программирования:

▪️ LINQ — спецназовец по зачистке коллекций. Девиз: «Зачем писать 20 строк, когда можно всё сделать в одну нечитаемую?»

▪️ async/await — командир отряда асинхронных операций. Спас целое поколение программистов от callback-ада.

▪️ garbage collector — главный санитар полка. Прибирается за всеми, но всегда в самый неподходящий момент.

Под чьей защитой ваш код выживает в продакшене? Докладывайте в комментариях 👇

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

⚙️ Паттерн Saga в микросервисах

Saga — это паттерн управления распределёнными транзакциями, который помогает сохранить целостность данных без монолитных блокировок и традиционных ACID-ограничений.

Вместо единой транзакции мы разбиваем процесс на последовательность локальных операций, каждая из которых выполняется в отдельном сервисе.

Два подхода к реализации

1️⃣ Оркестрация

• Управляется централизованным координатором.

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

• Минус: если оркестратор падает, всё останавливается.

• Плюс: понятный контроль за процессом, легче отлаживать.

2️⃣ Хореография

• Нет центрального контроллера, сервисы реагируют на события друг друга.

• Нет узкого места в виде оркестратора.

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

•Плюс: масштабируемость, нет единой точки отказа.

Оркестрация проще в управлении, но менее гибкая. Хореография масштабируется лучше, но сложнее в отладке.

➡️ Подробнее про паттерн в источнике

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🐳🔍 Как найти утечки памяти в контейнере с .NET

Инструмент dotMemory от JetBrains помогает диагностировать и анализировать потребление памяти в .NET-приложениях, даже если они работают в контейнерах.

Как использовать dotMemory

1️⃣ Запускаем приложение в контейнере

2️⃣ Подключаемся через dotMemory

dotMemory позволяет собирать дампы памяти прямо из работающего контейнера. Например, с помощью dotMemory CLT:

dotmemory start --save-to=memory_dump.dmp


3️⃣ Ищем утечки

Используем dotMemory, чтобы определить:
• Удерживаемые объекты .

• Долгоживущие объекты, которые не очищаются сборщиком мусора.

• Утечки, связанные с событиями и подписками.

💬 Боролись с утечками памяти в контейнерах? Какие инструменты использовали? Делитесь в комментариях ⬇️

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🚨 Ошибка GroupBy в Entity Framework 9

Ошибка возникает, когда после GroupBy выполняется сортировка: OrderBy, ThenBy и другие. В EF9 обработка таких запросов изменилась, из-за чего неожиданно ломаются стандартные сценарии группировки.

Пример проблемного кода:

var result = dbContext.Orders
.GroupBy(o => o.CustomerId)
.OrderBy(g => g.Key)
.Select(g => new { CustomerId = g.Key, TotalOrders = g.Count() })
.ToList();

Такой код работал в предыдущих версиях EF, но теперь выбрасывает исключение.

Как исправить

Можно принудительно выполнить запрос перед сортировкой, чтобы GroupBy обрабатывался в памяти:
var result = dbContext.Orders
.GroupBy(o => o.CustomerId)
.Select(g => new { CustomerId = g.Key, TotalOrders = g.Count() })
.ToList() // Выполняем в памяти
.OrderBy(g => g.CustomerId) // Теперь сортируем
.ToList();


Ошибка, вероятнее всего, будет исправлена в Entity Framework 10.

➡️ Суть проблемы в оригинале

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

⚙️ Погружение в Глубину

Алгоритм поиска в глубину (DFS) является одним из фундаментальных методов обхода графов. Он используется для решения множества задач, таких как поиск пути, обнаружение циклов и топологическая сортировка.

Что такое DFS

DFS (Depth-First Search) — это алгоритм обхода графа, который начинает с начальной вершины и исследует как можно глубже вдоль каждого ветви, прежде чем возвращаться назад.

Алгоритм использует стек для отслеживания посещенных вершин. В рекурсивной реализации стек заменяется стеком вызовов функции.

Основные Шаги DFS

1️⃣ Начинаем с начальной вершины.

2️⃣ Помечаем текущую вершину как посещенную.

3️⃣ Исследуем все смежные вершины, которые еще не были посещены.

4️⃣ Повторяем процесс для каждой смежной вершины.

5️⃣ Если все смежные вершины посещены, возвращаемся назад.

Реализация DFS в C#:

class Graph {
private int V;
private List<int>[] adj;

public Graph(int v) {
V = v;
adj = new List<int>[v];
for (int i = 0; i < v; i++)
adj[i] = new List<int>();
}

public void AddEdge(int v, int w) {
adj[v].Add(w);
}

public void DFS(int start) {
bool[] visited = new bool[V];
DFSUtil(start, visited);
}

private void DFSUtil(int v, bool[] visited) {
visited[v] = true;
Console.Write(v + " ");

foreach (int n in adj[v]) {
if (!visited[n])
DFSUtil(n, visited);
}
}
}


🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

📚 Основы алгоритмов: полный гайд

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

Что внутри:

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

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

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

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

📢 Где «выстрелит» твой стартап: 8 площадок для запуска и продвижения IT-проекта

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

👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

⚡️ Софт-скиллы, которые выведут карьеру в IT на новый уровень

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

➡️ Что внутри

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

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

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

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

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


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

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

🔗 Читать статью

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🚘 Моделирование состояний гонки в C#

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

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

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

⚡️ Буст продуктивности в Razor/Blazor

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

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

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

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

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

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🆚 Go vs C#

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

🐸Библиотека Go разработчика

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

📊 Как себя чувствует IT-рынок в 2025 году?

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

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

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

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

👉 Пройти опрос

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

С# книги - канал для скачивания книг по С# с самой удобной навигацией и поиском нужной книги.
Наш упор - это нахождение книг на русском языке.

В чем преимущества нашего канала:
1. Все книги поделены на русские и английские по языку издания ru en
2. Удобная навигация по технологиям и фреймворкам #csharp #unity и т.д
3. Книги можно скачать в pdf и epub.
4. В шапке канала удобнейшая навигация по книгам.

Подписывайтесь и качайте: @bookscharp

Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqwiNxsX

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🏗 🔨 Как не сломать продакшен: 8 основных паттернов распределенных систем

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

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

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

🐸Библиотека devops'a

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🍋 Запоздалый #самыйсок за январь

Собрали для вас самые интересные статьи за прошедший месяц!

👨‍💻⭐️ Roadmap для ваших начинаний и продолжений

🤨 Неочевидная проблема FirstOrDefault

⚙️ Мини-гайд по реализации MFA в .NET

⚡️ DeepSeek + .NET

⚙️ Wolverine вместо MediatR

✌️🤖 Как обмануть робота: 9 инструментов для прохождения системы автоматической фильтрации резюме

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🌐 Avalonia UI — универсальный UI-фреймворк

Avalonia UI — это открытый фреймворк для создания настольных, мобильных и встраиваемых (IoT) приложений.

Он поддерживает Windows, macOS, Linux, iOS, Android и даже WebAssembly.

Почему Avalonia UI

Совместимость с XAML – привычный синтаксис WPF, но с дополнительными возможностями, которые делают разработку удобнее.

Native AOT — компиляция в нативный код делает приложения лёгкими, быстрыми и не требующими .NET Runtime.

Малый размер приложений — без тяжёлых зависимостей, в отличие от Electron.

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

Гибкость в разработке — легко интегрируется с различными архитектурными паттернами (MVVM, ReactiveUI) и сторонними библиотеками.

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

Современные технологии — обновляется, развивается и адаптируется под нужды разработчиков, предлагая передовые решения для UI в .NET.

➡️ Документация по фреймворку

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

👨‍💻 Microsoft анонсировала Chroma DB C# SDK

Теперь разработчики на C# и .NET могут легко интегрировать Chroma DB в свои AI-приложения — Microsoft анонсировала официальный SDK для работы с векторными базами данных.

Что такое Chroma DB

Chroma — это векторная база данных, предназначенная для поиска по эмбеддингам.

Она используется в приложениях с искусственным интеллектом, аналитикой данных и RAG-моделями (Retrieval Augmented Generation).

Как это использовать в C#

1. Добавляем Chroma в проект:

dotnet add package ChromaDB.Client


2. Подключаем Chroma в C#-коде:
using ChromaDB.Client;

var configOptions = new ChromaConfigurationOptions(uri: "http://localhost:8000/api/v1/");
using var httpClient = new HttpClient();
var client = new ChromaClient(configOptions, httpClient);


3. Создаём коллекцию и добавляем данные:
var collection = await client.GetOrCreateCollection("movies");
var collectionClient = new ChromaCollectionClient(collection, configOptions, httpClient);


Chroma DB C# SDK — ещё один шаг к тому, чтобы .NET-разработчики легко создавали мощные AI-приложения.

➡️ Подробнее в блоге разработчиков

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🌳 LSM-дерево в C#

LSM-дерево (Log-Structured Merge Tree) – одна из самых мощных структур для баз данных, кэширования и key-value хранилищ.

В отличие от B-деревьев, которые часто используются в реляционных БД, LSM-дерево отлично справляется с высоконагруженными системами благодаря журналированию и периодической компактификации данных.

Как работает LSM-дерево

1️⃣ Запись идёт в память (MemTable) – все операции сначала попадают в быстрое RAM-хранилище.

2️⃣ Данные записываются в WAL (Write-Ahead Log) – чтобы не потерять их при сбое.

3️⃣ Сброс в SSTables (Sorted String Tables) – периодически MemTable записывается на диск.

4️⃣ Компактификация – старые файлы объединяются, а удалённые ключи стираются.

Пример реализации в C#:

class LSMTree
{
private SortedDictionary<string, string> memTable = new();
private const string WAL_FILE = "wal.log";

public LSMTree()
{
LoadFromWAL();
}

public void Put(string key, string value)
{
memTable[key] = value;
File.AppendAllText(WAL_FILE, $"{key}:{value}\n");
}

public string Get(string key)
{
return memTable.TryGetValue(key, out var value) ? value : "Not found";
}

private void LoadFromWAL()
{
if (File.Exists(WAL_FILE))
{
foreach (var line in File.ReadAllLines(WAL_FILE))
{
var parts = line.Split(':');
if (parts.Length == 2)
memTable[parts[0]] = parts[1];
}
}
}
}


Где используется

• NoSQL базы данных: LevelDB, RocksDB, Cassandra

• Поисковые системы: Elasticsearch, Apache Lucene

• Хранилища для логов и кэшей

Преимущества LSM-дерева

• Быстрая запись – все изменения сначала пишутся в память

• Эффективное хранение – используется сжатие и компактификация

• Масштабируемость – отлично работает при больших объёмах данных

Но есть нюансы

• Медленный поиск — требуется слияние уровней

• Утилизация ресурсов — периодическая компактификация требует CPU

🔗 Как вы храните данные в своих проектах? Делитесь в комментариях! ⬇️

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🤣 Как разыграть коллег

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

Вы можете заложить внутрь неожиданную логику, а коллеги будут ждать совершенно другого результата.

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🧑‍💻 Юнит-тесты в .NET с NUnit

NUnit — это фреймворк для модульного тестирования в экосистеме .NET, предоставляющий разработчикам инструменты для создания и выполнения тестов.

В экосистеме .NET Core одним из самых популярных инструментов для этого является NUnit.

Что умеет NUnit:

• Параметризованные тесты: запускайте один тест с разными входными данными через атрибут [TestCase].

• Асинхронная поддержка: легко тестируйте async/await методы.

• Интеграция с инструментами: совместим с Visual Studio, Rider и CLI-командой dotnet test.

• Чистый синтаксис: удобные утверждения через Assert.That(result, Is.EqualTo(42)).

Пример теста:

using NUnit.Framework;

namespace MyProject.Tests;

[TestFixture]
public class CalculatorTests
{
private Calculator _calculator;

[SetUp]
public void Setup()
{
_calculator = new Calculator();
}

[Test]
public void Add_WhenCalled_ReturnsSum()
{
int result = _calculator.Add(2, 3);
Assert.That(result, Is.EqualTo(5));
}
}


Пара советов по эффективному тестированию:

• Изолируйте тесты: используйте [SetUp] и [TearDown] для подготовки и очистки данных.

• Избегайте зависимостей: мокируйте внешние сервисы с помощью Moq или NSubstitute.

📎 Подробные примеры кода

💬 Делитесь в комментариях своим опытом работы с NUnit

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

Как разбить большой PR на GitHub на удобные части

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

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

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

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

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

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

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

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

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

💡Советы:


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

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

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

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🌲 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️⃣ Право-левое вращение

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

⚠️ В машинном обучении, как в любви: слишком идеальные предсказания – это подозрительно!

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

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

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

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

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

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

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

Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🐳 Делаем конкурента DeepSeek R1-Zero на домашней пекарне: метод GRPO в Unsloth

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

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

Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

😳 Если бы языки программирования были девушками

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

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

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🔄 Февральское обновление .NET

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

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

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

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

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

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

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

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

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

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

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

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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

Самые полезные каналы для программистов в одной подборке!

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

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

🌐 Тестирование 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

🐸Библиотека шарписта

Читать полностью…

Библиотека шарписта | C#, F#, .NET, ASP.NET

📁 Оптимизация работы с данными

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

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

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

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

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

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

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

🐸Библиотека шарписта

Читать полностью…
Subscribe to a channel