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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
⚙️🛠️ WinGet — вместо тысячи кликов

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

Основные возможности WinGet:

Поиск приложений: команда winget search позволяет находить программы по названию или категории.
Установка приложений: с помощью команды winget install <имя_программы> можно быстро установить нужное приложение.
Обновление приложений: команда winget upgrade --all обновляет все установленные программы до актуальных версий.
Удаление приложений: для удаления используется команда winget uninstall <имя_программы>.

WinGet работает с проверенными репозиториями пакетов, что снижает риск загрузки вредоносного или нежелательного ПО. Для пользователей Windows 11 WinGet уже предустановлен, а владельцы Windows 10 могут бесплатно скачать его из Microsoft Store.
🎄 Начни 2025-й с апгрейдом навыков,
которые откроют двери в мир IT!

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

🔗 Собери свой план и начни путь в IT

Почему это выгодно?

📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.

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

💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?

💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.

💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.

💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.

💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.

💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.

Не упусти шанс сделать шаг в будущее! Новый год — это время обновлений, и твоя карьера может стать одним из них.

🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
🔍 Что такое source.dot.net?

Source.dot.net — это официальный сайт от Microsoft, предоставляющий доступ к исходному коду стандартных библиотек .NET. Здесь вы можете исследовать, как реализованы классы, структуры и методы, которые вы используете ежедневно в своих проектах на C#. Этот инструмент позволяет заглянуть «под капот» .NET и увидеть внутреннюю работу фреймворка.

⚙️ Сайт предлагает удобную навигацию по исходному коду с возможностью переключаться между версиями .NET (например, .NET 6, .NET 7, .NET 8). Помимо исходного кода, ресурс интегрирован с официальной документацией, что делает его полезным для изучения, отладки и глубокого понимания работы фреймворка.

Незаменимый инструмент для разработчиков, стремящихся понять, как работают стандартные библиотеки и применять лучшие практики в своих проектах!

Попробуйте прочитать url сайта по-английски!
🎮 CODE-DMG - эмулятор Game Boy на С#!

CODE-DMG — это эмулятор классической консоли Nintendo Game Boy, написанный на C#. Он позволяет запускать любимые ретро-игры на вашем компьютере, включая такие хиты, как Pokémon и Tetris.
🎮Эмулятор полностью открыт для сообщества, что делает его идеальным для разработчиков и энтузиастов. Вы можете скачать проект, внести изменения или просто насладиться его функционалом, погружаясь в атмосферу 90-х.

🕹 Управление в игре
Перемещение (D-Pad): W, A, S, D
Кнопки A и B: J, K
Старт: Enter
Select: Shift

🤩 Установите CODE-DMG и погрузитесь в ностальгические приключения Game Boy!
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое ValueTask в C#?

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

Особенности использования ValueTask:

1️⃣Повторное ожидание запрещено: вызывать await несколько раз для одного и того же ValueTask нельзя, так как это может привести к неожиданным результатам.
Так делать нельзя:

ValueTask<int> task = GetValueAsync();
int value1 = await task;
int value2 = await task; // Ошибка


2️⃣Конвертация в Task: если требуется передать ValueTask в API, которое ожидает Task, можно вызвать метод .AsTask():
Task<int> task = GetValueAsync().AsTask();


3️⃣Когда использовать ValueTask:
Операция часто завершается синхронно.
Создание объекта Task может быть слишком накладным.
Вы пишете библиотеку с высокой производительностью.

4️⃣Когда НЕ использовать ValueTask:
Операция всегда асинхронна.
Производительность не является критически важной.
Приложение не оптимизировано под работу с ValueTask.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤨🛠Простое руководство по работе с Base64 в C#

❗️Base64 – это удобный метод преобразования данных в текстовый формат, который часто используется для передачи двоичных данных, таких как изображения, через текстовые протоколы

✏️В статье объясняется, как использовать встроенные методы C# для кодирования и декодирования данных в формате Base64. С помощью Convert.ToBase64String можно легко преобразовать строку или массив байтов в Base64, а методом Convert.FromBase64String – вернуть их обратно.

🤩 Статья также демонстрирует, как вставлять Base64-строки в другие строки с использованием интерполяции или string.Format. Она рассматривает плюсы и минусы Base64: формат удобен и поддерживается в большинстве языков программирования, но увеличивает размер данных на 33%. Рекомендуется использовать Base64 только там, где это оправдано, например, для передачи данных через API или сериализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻🛠 UUID (GUID) vs ULID: Примеры и различия

UUID (GUID) — это уникальный идентификатор, состоящий из 128 бит и представленный в виде строки из 36 символов. Пример UUID:
f47ac10b-58cc-4372-a567-0e02b2c3d479


ULID — уникальный идентификатор длиной 26 символов, который сортируется по времени. Пример ULID:
01F8G4E0D8HR7X0G9WG9M3FWVZ


Основные различия:
Сортируемость: ULID сортируется по времени, UUID — нет.
Длина: UUID длиннее (36 символов), ULID — 26 символов.
Использование: UUID подходит для генерации уникальных идентификаторов, ULID — для систем с необходимостью упорядочивания по времени.

Когда что использовать:
UUID: Если важна глобальная уникальность, а порядок не имеет значения.
ULID: Когда необходимо сортировать идентификаторы по времени и иметь компактный формат.
Please open Telegram to view this post
VIEW IN TELEGRAM
Регулярные шахматы

Как думаете, сколько нужно регулярных выражений для игры в шахматы?
1? 2? А вот и нет! Для этого понадобилось 84 688 регулярных выражений.

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

📖 Подробнее о безумной идее

#новость
🔄 Поверхностное vs. Глубокое копирование в C#

В C# существуют два типа копирования объектов: поверхностное и глубокое.

Поверхностное копирование создаёт новый объект, но не копирует вложенные объекты. Вместо этого, вложенные объекты остаются ссылками на те же экземпляры, что и у исходного объекта. Это может привести к тому, что изменения в одном объекте отразятся на другом.

Глубокое копирование создаёт полную независимую копию объекта, включая все вложенные данные. Изменения в копии не затронут оригинал, так как каждый вложенный объект также будет скопирован.

⚡️ Важно понимать разницу: поверхностное копирование быстрее, но подходит только для объектов без вложенных данных или когда изменения вложенных объектов не критичны. Глубокое копирование гарантирует полную независимость копий, но может быть более затратным по производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Как снизить время загрузки .NET Core приложения?

Если ваше .NET Core приложение загружается медленно, не спешите отчаиваться! В статье автор делится реальными оптимизациями, которые помогли ему сократить время загрузки на 80%.

💡Вот несколько ключевых оптимизаций, которые можно легко применить:🤩
1️⃣ Удаление лишнего промежуточного ПО
Автор рекомендует тщательно проанализировать файл Startup.cs и оставить только те слои, которые действительно необходимы для работы приложения. Чем меньше промежуточного ПО — тем быстрее будет загрузка.

2️⃣ Отложенная загрузка ненужных сервисов
Сервисы, которые не критичны для первого запроса, можно отложить до момента их фактического использования. Такой подход помогает сократить время запуска приложения и ускорить отклик.

3️⃣ Оптимизация запросов к базе данных
Важно использовать асинхронные запросы, избегать дублирования запросов и оптимизировать индексы. Это значительно уменьшит задержки при извлечении данных и ускорит работу приложения.

⚡️Хотите полной оптимизации? Скорее в статью!
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ 10 ошибок в EF Core, которые легко исправить

EF Core — мощный инструмент для работы с базами данных, но даже опытные разработчики могут допускать мелкие ошибки, которые замедляют приложения.

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

Ещё одно упущение — использование отслеживания изменений в сценариях только для чтения. Это легко исправить с помощью метода AsNoTracking(). Также важно переходить на асинхронные методы (ToListAsync, SaveChangesAsync) для повышения отзывчивости приложения. А грамотная настройка миграций и отношений между сущностями помогает избежать проблем с совместимостью схемы базы данных.

🚀 Хотите узнать больше? Все детали и примеры вы найдёте в статье!
👨‍💻⭐️ Roadmap для ваших начинаний и продолжений!

🤩 На GitHub доступна полезная дорожная карта для тех, кто стремится стать разработчиком .NET. Эта карта охватывает ключевые навыки, инструменты и технологии, необходимые для освоения профессии в 2025 году. Она помогает систематизировать обучение и выбрать правильные направления для профессионального развития.

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

#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое StyleCop и почему он нужен каждому разработчику C#?

Что такое StyleCop?
StyleCop — это набор правил, которые проверяют ваш код на соответствие лучшим практикам и стандартам кодирования. Например, локальные переменные должны быть в camelCase, а классы — в PascalCase. Также фигурные скобки должны располагаться на своих местах, а код должен быть аккуратно выровнен. Он анализирует такие аспекты, как:
Документация (XML-комментарии).
Именование переменных, классов и методов.
Расположение и форматирование кода.
Читаемость и структура кода.
Порядок объявления элементов в классе.
Эти правила помогают автоматизировать проверку кода, снижая количество ошибок и улучшая читаемость.

Почему стоит использовать StyleCop?
Единообразие кода — код, написанный по стандартам, проще читать и поддерживать.
Снижение числа ошибок — некоторые правила помогают выявить потенциальные баги.
Автоматизация — styleCop упрощает код-ревью и снижает нагрузку на разработчиков.
Улучшение команды — следование единым стандартам помогает новым участникам быстрее влиться в команду.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сохраняйте себе #tip, чтобы не забыть!
🔐 Базовая аутентификация в ASP.NET Core Web API

Защита вашего API — задача №1 в современном мире. Один из самых простых способов это сделать — реализовать базовую аутентификацию. Давайте разберёмся, как это сделать в ASP.NET Core, не перегружая код сложными механизмами.

💡 Что такое аутентификация?
Представьте, что клиент (например, Postman, браузер или ваше мобильное приложение) отправляет запрос к вашему API. Вместе с этим запросом он передаёт свои логин и пароль в заголовке Authorization, закодированные в Base64. Сервер проверяет их и решает, пускать клиента дальше или нет.

Пример заголовка:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

(Это просто логин username и пароль password, закодированные в Base64).

🛠 Как это работает?
1️⃣Сервер видит запрос без заголовка авторизации и отвечает: 401 Unauthorized.
2️⃣Клиент отправляет повторный запрос с закодированными учётными данными.
3️⃣Сервер проверяет их и либо даёт доступ, либо отказывает.

Как реализовать в ASP.NET Core?
1️⃣ Создайте проект ASP.NET Core Web API.
2️⃣ Посмотрите статью
3️⃣ Реализуйте!
Please open Telegram to view this post
VIEW IN TELEGRAM
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа

А также примеры того, как говорить точно не надо 🌚

👉Читать
⚡️🛠Обновления в реальном времени с Server-Sent Events (SSE) в ASP.NET

В современном веб-разработке одной из ключевых задач является обеспечение взаимодействия сервера и клиента в режиме реального времени. Среди технологий, которые позволяют достичь этой цели, выделяется Server-Sent Events (SSE). SSE — это стандартный способ однонаправленной передачи данных от сервера к клиенту через постоянное соединение. В отличие от WebSockets, SSE проще в настройке и использовании, так как работает поверх HTTP и подходит для задач, где требуется обновление данных только от сервера к клиенту.

Что такое Server-Sent Events (SSE)?
SSE — это технология, позволяющая серверу отправлять данные на клиент через постоянное соединение. Клиент, подключаясь к серверу, получает поток событий, которые могут обновляться в реальном времени.

Преимущества SSE:
Работает поверх HTTP/HTTPS.
Простота реализации.
Поддержка автоматического переподключения.
Низкие накладные расходы по сравнению с WebSockets для однонаправленных задач.

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

Как реализовать SSE в ASP.NET?
Чтобы включить SSE в ваше приложение ASP.NET, нужно продумать три основные составляющие:
1️⃣ Установление соединения. Сервер и клиент устанавливают постоянное соединение. Для этого сервер отвечает специальными HTTP-заголовками, указывая, что используется SSE.
2️⃣ Поток данных. Сервер отправляет клиенту поток событий. Это могут быть текстовые сообщения, которые клиент получает в режиме реального времени.
3️⃣ Обработка на клиенте. Клиент использует объект EventSource, чтобы получать и обрабатывать входящие события.

👀 Готовый код можете подглядеть вот здесь
Please open Telegram to view this post
VIEW IN 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 запрещена на территории РФ