Библиотека шарписта | 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
⚙️ 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 запрещена на территории РФ
😴🛠 Паттерн «Состояние»

Паттерн «Состояние» — это поведенческий паттерн проектирования, который позволяет объекту изменять своё поведение в зависимости от текущего состояния. Он помогает избежать большого количества условных операторов и делает код более читаемым, гибким и модульным.

Когда использовать паттерн «Состояние»?
Когда у объекта есть несколько состояний, и его поведение зависит от текущего состояния.
Когда в коде слишком много if-else или switch-case, которые проверяют состояние объекта.
Когда требуется обеспечить легкое добавление новых состояний без изменения существующего кода.

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

Недостатки паттерна
Увеличение числа классов, так как каждое состояние требует отдельной реализации.
Может быть избыточным для простых сценариев.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Fluent API в C#: Читаемый код и удобство разработки

Fluent API — это стиль проектирования интерфейсов, который позволяет вызывать методы цепочкой, улучшая читаемость и удобство работы с кодом. В C# этот подход особенно популярен в таких библиотеках, как Entity Framework, FluentValidation и других.

Пример Fluent API
Представим, что мы хотим создать систему для построения SQL-запросов. Сначала сравним два подхода:
Без Fluent API
QueryBuilder queryBuilder = new QueryBuilder();
queryBuilder.Select("name", "age");
queryBuilder.Where("age > 18");
queryBuilder.OrderBy("name");
string query = queryBuilder.Build();;


С Fluent API
string query = new QueryBuilder()
.Select("name", "age")
.Where("age > 18")
.OrderBy("name")
.Build();


Код с Fluent API выглядит как цепочка операций, что делает его более читаемым и похожим на естественный язык.

Преимущества Fluent API
Код выглядит как последовательность операций.
Удобно добавлять новые методы и расширять функциональность.
Все операции выполняются на одном объекте.

Недостатки Fluent API
При длинных цепочках вызовов сложнее отлаживать ошибки.
Неправильно спроектированное API может выглядеть громоздко.
Please open Telegram to view this post
VIEW IN TELEGRAM
👋Привет, шарписты!

Мы ищем участников для интервью на тему «Обучение навыкам в IT»!

Кто нам нужен?
Вы недавно (в последние 6 месяцев) проходили курсы по техническим специальностям или математике.
Вы разработчик, стремящийся освоить Data Science или Machine Learning.

Что вас ждет?
Участие в интервью по Zoom, которое займет не больше 45 минут.📞
🤑 1500 рублей на карту за ваше время.
Уникальный шанс пообщаться с нашим CEO!😎

Как откликнуться?
✏️Напишите в личные сообщения @artem_ceo
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 Сколько сантиметров у вас на рабочем столе?

Как часто вы задумывались о том, какие размеры имеют окна на вашем экране? Для разработчиков, гейм-дизайнеров и дизайнеров интерфейсов это порой становится важным вопросом. Здесь на помощь приходит LiveWinSize — лёгкая утилита, которая делает измерение окон точным и быстрым.

💡Особенности проекта:
Реальные размеры: помимо пикселей, вы можете видеть размеры в сантиметрах или дюймах.
Лёгкость: приложение весит всего 1,75 МБ.
Простота: минимальный интерфейс, всё, что нужно — запуск и информация о размере окна уже перед вами.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🚀Как ускорить LINQ: полезные трюки

1️⃣Избегайте повторной обработки коллекций
Повторный вызов методов LINQ, таких как Where, приводит к повторному перебору коллекции.
Решение: кэшируйте результаты, если они используются несколько раз:
var filtered = myCollection.Where(x => x.Age > 30).ToList(); // Выполняется один раз
var count = filtered.Count;
var average = filtered.Average(x => x.Salary);


2️⃣Используйте ForEach вместо Select, если результат не нужен
Использование Select для выполнения действий без необходимости возвращать коллекцию увеличивает накладные расходы.
Решение: используйте ForEach для простого выполнения действий:
myCollection.ForEach(x => Console.WriteLine(x.Name));


3️⃣Избегайте использования Count для проверки на пустоту
Count перебирает всю коллекцию, что замедляет выполнение.
Решение: используйте Any() вместо Count():
if (myCollection.Any()) // Быстрее, чем myCollection.Count > 0


4️⃣Параллельное выполнение (PLINQ)

Обработка больших коллекций может быть медленной.
Решение: используйте PLINQ для параллельного выполнения:
var result = myCollection.AsParallel()
.Where(x => x.IsActive)
.ToList();


5️⃣Проекционная оптимизация (Select)
Извлечение всех данных, когда требуется только несколько полей.
Решение: Используйте Select для выборки только необходимых данных:
var names = myCollection.Select(x => x.Name).ToList();


6️⃣Фильтрация перед проекцией
Проекция больших объёмов данных перед фильтрацией замедляет запрос.
Решение: сначала фильтруйте, затем проецируйте:
var result = myCollection.Where(x => x.Age > 30)
.Select(x => x.Name)
.ToList();


🐸Библиотека шарписта
#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
🔒 Релиз .NET 9.0.1: основные исправления безопасности

Microsoft выпустила обновление .NET 9.0.1, которое в первую очередь сфокусировано на устранении уязвимостей.

Вот ключевые моменты:
Устранены уязвимости, позволяющие удалённое выполнение кода через специально сформированные файлы.
Исправлена проблема повышения привилегий на Linux.
Затронуты как .NET, так и Visual Studio.

🐸Библиотека шарписта
#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻⚡️ Akka.NET: Ваш путь к созданию масштабируемых и надёжных приложений

Если вы ищете способ создавать распределённые, высокопроизводительные и отказоустойчивые приложения на платформе .NET, то Akka.NET — это инструмент, который стоит вашего внимания!

Что такое Akka.NET?
Akka.NET — это фреймворк, основанный на модели акторов (Actor Model). Он позволяет разработчикам легко работать с конкурентностью, параллелизмом и асинхронностью, избегая головной боли от многопоточности. Каждый «актор»" — это небольшая изолированная сущность, которая взаимодействует с другими через обмен сообщениями.

Почему
Akka.NET?
🔄 Отказоустойчивость: приложение не упадёт из-за сбоя — акторы можно перезапустить или перенести.
📡 Распределённость: стройте приложения, которые работают на нескольких серверах или в облаке.
⚡️ Масштабируемость: akka.NET легко справляется с нагрузкой, увеличиваясь вместе с вашими задачами.
🛠 Интеграция с .NET: используйте привычный C# и экосистему .NET для построения сложных систем.

Где это используется?
Чат-приложения: реальное время, тысячи пользователей.
Игровые серверы: управление игроками и состоянием мира.
Финансовые системы: обработка тысяч транзакций в секунду.
IoT: обработка данных от огромного числа устройств.

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
🔖📕 Что почитать?

Нашли для вас несколько новинок компьютерной литературы!

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