Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.25K 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-мемы
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 запрещена на территории РФ
5👍3
Новые возможности для Windows Forms: асинхронные API в .NET 9

Windows Forms получил обновления с поддержкой асинхронных API! В статье из блога разработчиков рассказано о новом подходе к асинхронным операциям в .NET 9 — работающие с долгими операциями методы, теперь доступны с использованием async/await. Это значит, что разработчики смогут избежать блокировки интерфейса, обеспечивая большую отзывчивость приложений.

Основные изменения включают улучшение взаимодействия с задачами и обновлённый подход к обработке долгих операций. Теперь создание современных и удобных приложений с Windows Forms станет проще!

📎 Подробнее в блоге разработчиков
14🌚5👍2
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе

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

Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.

Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.

🔗 Читать статью
🔗 Зеркало
👍91🔥1
💡 Многопоточность в C#: освежаем основы и работаем быстрее

Когда последний раз писали код с потоками? Если навыки чуть «заржавели», самое время вспомнить базу:

1️⃣ Thread vs Task: Task проще и удобнее для асинхронных задач, но иногда прямое управление потоками через Thread всё ещё необходимо. Помните про правильное завершение работы потоков!

2️⃣ Синхронизация: чтобы избежать гонки данных, используйте lock, Monitor или более сложные механизмы вроде Mutex. А потокобезопасные коллекции из System.Collections.Concurrent помогут сократить бойлерплейт.

3️⃣ UI и фоновые задачи: асинхронные операции — спасение для UI-приложений. Вместо блокировки используйте Task.Run и async/await, чтобы пользовательский интерфейс оставался отзывчивым.

4️⃣ Тюнинг производительности: профилируйте код! Отследите использование пула потоков и минимизируйте затраты на блокировки.

Чтобы подробнее вспомнить детали и углубиться в нюансы, советуем заглянуть в эту статью. Там разбираются полезные примеры и даются советы по улучшению отзывчивости приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥱43
🎯 Полный гайд по тестированию с NUnit в C# 13 и .NET 9

Статья на C# Corner предлагает всестороннее руководство по NUnit для новых версий C# и .NET.

Что вы найдёте в статье?
Работа с NUnit: принципы AAA (Arrange-Act-Assert), фикстуры, параметризация тестов, использование атрибутов, таких как [Test], [SetUp], [TearDown].
Интеграция с CI/CD: автоматизация тестирования через Azure Pipelines, GitHub Actions и другие платформы.
Мокинг и изоляция: использование библиотек, таких как Moq, для упрощения тестов, работающих с внешними зависимостями.
Инструменты анализа: примеры настройки покрытия кода и интеграция с такими инструментами, как Coverlet или ReportGenerator.

📎 Читать материал
👍8🌚1👾1
🌐 Работа с Amazon SQS в C#: асинхронная обработка сообщений

⚙️ Асинхронная обработка данных играет ключевую роль в построении масштабируемых приложений, особенно если речь идёт о микросервисах. Amazon SQS (Simple Queue Service) — один из самых популярных сервисов AWS для работы с очередями сообщений.

Статья объясняет, как подключиться к SQS, начиная с настройки AWS SDK for .NET. Автор показывает, как создать очередь, отправлять и получать сообщения, а также настроить права доступа для взаимодействия с сервисом.

🛠️ Основное внимание уделено подходам к polling — способам получения сообщений из очереди. Здесь затрагиваются две стратегии: short polling, при котором запросы на получение выполняются немедленно, и long polling, при котором сервер ожидает появления сообщений, чтобы минимизировать задержки и затраты.
🥱6😢2🌚1
Почему не стоит использовать события в ASP.NET Core?

События (events) в C# — мощный инструмент, который позволяет одному объекту уведомлять других о произошедших изменениях. Однако в контексте ASP.NET Core их использование может привести к неожиданным проблемам:

🔸 Сложность отладки: понять, кто подписался на событие и в каком порядке вызываются обработчики, может быть непросто.
🔸 Утечки памяти: если обработчики событий не отписываются, объекты могут оставаться в памяти, создавая утечки.
🔸 Проблемы с жизненным циклом объектов: ASP.NET Core управляет объектами через DI-контейнер, и события могут нарушить этот процесс.

Вместо событий автор статьи предлагает использовать более современные подходы:
👉 Шаблон Mediator для передачи команд между компонентами.
👉 Шаблон Observer для управления подпиской на изменения.
👉 Чётко продуманное внедрение зависимостей (DI).

📎 Подробнее о том, почему события могут быть проблемой и какие есть альтернативы, читайте в статье
👍14😁2❤‍🔥1
🛠️ Анонс .NET Community Toolkit 8.4.0! 🚀

Microsoft представила новую версию .NET Community Toolkit 8.4.0, которая принесла множество улучшений и новых возможностей для разработчиков. Этот набор инструментов создан, чтобы упростить создание производительных и качественных приложений на .NET.

🔍 Что нового в версии 8.4.0?
🔹 Поддержка .NET 8, включая оптимизации для современных возможностей платформы.
🔹 Новые API для упрощения разработки и улучшения читаемости кода.
🔹 Улучшения в производительности и стабильности.
🔹 Расширенная документация и улучшенные примеры использования.

Этот релиз делает .NET Community Toolkit ещё более мощным и удобным инструментом для разработчиков, независимо от того, работаете ли вы с WPF, UWP, WinUI или MAUI.

📎 Узнайте все детали обновления в блоге разработчиков
8👍3
🌍 Как и просили.. Get запрос разными языками

Если ваш Web API на ASP.NET Core должен поддерживать несколько языков, стоит обратить внимание на статью. Она расскажет, как адаптировать приложение под разные языки и культуры.
Основная идея проста: использовать ресурсные файлы (.resx) для перевода текстов, настроить локализацию через RequestLocalizationOptions и добавить middleware, которое будет определять язык на основе заголовка Accept-Language. В статье также показан пример API, где данные, например, о пользователе, возвращаются уже с учётом выбранного языка.

Локализация делает ваше приложение более доступным и готовым к расширению. Теперь добавить новый язык — дело пары минут!
😁18👍1
🚀 HybridCache в .NET 9 — гибридное кэширование на новом уровне

HybridCache — это библиотека в .NET 9, которая объединяет локальный (in-memory) и распределённый кэш (например, Redis). Она предназначена для высокопроизводительного кэширования с минимальными задержками и максимальной надёжностью.

🔑 Основные возможности HybridCache:
Локальный и распределённый кэш: данные хранятся локально для быстрой доставки и синхронизируются с распределённым кэшем.
Умная сериализация: автоматическая работа с сериализацией и десериализацией для out-of-process хранилищ.
GetOrCreateAsync: запросы гарантируют, что только один поток вызовет метод получения данных.

🛠 Пример использования:
builder.Services.AddHybridCache();
var data = await hybridCache.GetOrCreateAsync(«key», async cancel => await LoadDataAsync());
👍281
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
😊 Привет, разработчики!

Работаете из дома?
Расскажите, что вас больше всего раздражает на домашнем рабочем месте. 👀

А может, у вас есть крутые находки, которые сделали удалёнку комфортнее? 🖥🪑
Делитесь своими лайфхаками или топовыми покупками — возможно, они помогут кому-то из нас улучшить своё пространство! 🔝

#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Классическая задача философов за обедом: параллельное программирование в действии

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

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

В статье задача решается с использованием асимметричного подхода к захвату ресурсов. Основные шаги:

1️⃣Моделирование:
Философы — потоки.
Вилки — объекты синхронизации (мьютексы или семафоры).

2️⃣Предотвращение взаимоблокировок:
Один из философов берёт сначала правую вилку, а потом левую, чтобы разрушить цикл ожидания.

3️⃣Учет справедливости:
Вводятся тайм-ауты или очереди, чтобы избежать голодания философов.

4️⃣Применение примитивов C#:
Используются Mutex и Semaphore для синхронизации потоков и управления доступом к ресурсам.

Этот подход предотвращает взаимоблокировки и балансирует доступ к ресурсам.
Пример кода в статье адаптирован для управления пулом соединений к базе данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах

Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?

👉 Пройти тест
😁11🥱3🌚3
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

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

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

Ждем ваших откликов 👾
👍61
🔄 Повторить поиск одной кнопкой!
В последнем обновлении Visual Studio 2022 представлена функция обновления результатов поиска, упрощающая работу с кодом.

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

✏️ Для уточнения критериев поиска используйте кнопку с изображением карандаша. Она открывает окно «Найти в файлах» с предыдущими параметрами, позволяя быстро внести изменения и получить более точные результаты.

#новость
👍31
LTS vs STS в .NET: Какую версию выбрать для вашего проекта?

Выбор версии .NET может значительно повлиять на стабильность и возможности вашего приложения. В экосистеме .NET существуют два основных подхода к релизам: Long-Term Support (LTS) и Standard-Term Support (STS). Давайте разберем, что они означают и какой путь лучше выбрать для вашего проекта.

Что такое LTS?
LTS (Долгосрочная поддержка) предназначен для тех, кто ценит стабильность и надежность.

Ключевые характеристики:
Период поддержки: 3 года с момента выпуска.
Частота релизов: каждые 2 года.
Версии: четные номера (например, .NET 6, .NET 8).
Основной акцент: исправление ошибок, обновления безопасности, максимальная стабильность.

📌 Кому подходит:
Для производственных систем и корпоративных приложений, где важно избегать частых обновлений.
Для команд, предпочитающих стабильные и проверенные решения.

Что такое STS?
STS (Краткосрочная поддержка) — это выбор для тех, кто хочет оставаться на передовой инноваций.

Ключевые характеристики:
Период поддержки: 18 месяцев с момента выпуска.
Частота релизов: ежегодно.
Версии: нечетные номера (например, .NET 7, .NET 9).
Основной акцент: новые функции, улучшения производительности, инновации.

📌 Кому подходит:
Для разработчиков, которые хотят использовать последние возможности платформы.
Для проектов с коротким жизненным циклом или готовностью к частым обновлениям.

Как выбрать между LTS и STS?
💡 Выбирайте LTS, если:
Ваш проект требует высокой стабильности.
Вы хотите минимизировать частоту обновлений.
Ваши приложения предназначены для долгосрочной эксплуатации.

⚡️ Выбирайте STS, если:
Вы хотите использовать самые последние функции и улучшения.
Вы готовы к регулярным обновлениям и быстрым изменениям.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🎉1
👨‍💻 Прокачайте навыки C#: лучшие советы для современного разработчика

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

Наткнулись на статью, которая собрала лучшие советы для работы с C#. Давайте разберём пару примеров из неё.

⭐️ 1. Сопоставление с образцом (pattern matching)
Сопоставление с образцом позволяет писать код более выразительно:
object data = 42;
if (data is int number)
{
Console.WriteLine($"Это целое число: {number}");
}


⭐️ 2. Использование Span<T> для повышения производительности
Если вы работаете с большими массивами или строками, Span<T> помогает минимизировать выделения памяти:
Span<int> numbers = stackalloc int[5] { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers[2]); // Вывод: 3


⭐️ 3. Глобальные директивы using для уменьшения шаблонного кода
В C# 10+ вы можете определить глобальные using, чтобы не повторять их в каждом файле:
// GlobalUsings.cs
global using System;
global using System.Collections.Generic;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🥱11🤔2
AutoMapper — это мощная библиотека для .NET, упрощающая преобразование объектов одного типа в другой, что особенно полезно при работе с Web API. В статье автор подробно описывает процесс интеграции AutoMapper в проект .NET Web API, выделяя следующие ключевые шаги:

1️⃣ Установка AutoMapper: Через NuGet устанавливаются пакеты AutoMapper и AutoMapper.Extensions.Microsoft.DependencyInjection, обеспечивающие интеграцию с ASP.NET Core.

2️⃣ Создание моделей и DTO: Определяются основные модели данных и соответствующие им объекты передачи данных (DTO), что способствует четкому разделению между слоями приложения.

3️⃣ Настройка профиля AutoMapper: Создается класс профиля, наследующий Profile, где конфигурируются маппинги между моделями и DTO, что позволяет централизованно управлять правилами преобразования.

4️⃣ Регистрация AutoMapper в приложении: В методе ConfigureServices добавляется регистрация AutoMapper, обеспечивая его доступность через механизм внедрения зависимостей.

5️⃣Использование AutoMapper в контроллерах: В контроллерах через внедрение зависимости IMapper выполняется преобразование между моделями и DTO, упрощая обработку данных и повышая читаемость кода.

Следуя этим шагам, вы можете значительно упростить процесс маппинга объектов в своих приложениях, повысив эффективность разработки и поддерживаемость кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱28👍10😢6🌚21