Волны ИИ
Open in Telegram
6 696
Subscribers
No data24 hours
-137 days
-4330 days
Posts Archive
6 696
🛠 Неявно типизированные переменные в C#: зачем и как?
Введение ключевого слова var в C# начиная с версии 3.0 стало важным шагом для повышения удобства разработки. Оно позволяет компилятору автоматически определять тип переменной на основе присваиваемого значения. Но что это дает и как использовать правильно?
🤨 Проблемы явной типизации
Избыточность: указывать типы вручную иногда громоздко, особенно при работе с длинными типами, такими как Dictionary<int, List<string>>.
Сложность восприятия: избыточный код может отвлекать от сути логики, особенно в простых ситуациях.
Необходимость явного объявления: сложности возникают при работе с анонимными типами, где явное указание типа вообще невозможно.
❓Что предлагает var?
Ключевое слово var позволяет объявить переменную, не указывая ее тип явно. Тип выводится компилятором на основе значения, присваиваемого переменной.
var число = 42; // Компилятор определяет тип как int var текст = "Привет, мир!"; // Тип: string var список = new List<string>();...
6 696
Почему null – это проблема?
Null в программировании изначально задумывался как универсальное значение, указывающее на отсутствие данных. Однако он стал одной из самых спорных концепций, которую со временем начали считать ошибкой на миллиард долларов. Почему?
❌ Неопределенность: наличие null требует постоянных проверок, иначе риск получить NullPointerException неизбежен.
❌ Усложнение кода: многочисленные проверки на null загрязняют код, делают его трудно читаемым и увеличивают вероятность ошибок.
❌ Хрупкость логики: неявное использование null часто приводит к неожиданным последствиям, особенно если null допускается в важных объектах или результатах функций.
❌ Проблемы совместимости: библиотеки и API с неконсистентной обработкой null добавляют еще больше путаницы.
Как избавиться от null? В статье автор делится двумя эффективными способами:
⚙️ Паттерн Null Object:
Вместо использования null создавайте дефолтные объекты с осмысленным поведением. Это избавляет от необходимости проверять, существует ли объект, ...
6 696
🎯 Как модернизировать свои навыки C# разработчика?
В мире разработки технологии постоянно меняются, и чтобы оставаться востребованным, важно регулярно обновлять свои знания и навыки. В своём видео Тим Кори делится 4 способами улучшить навыки C# и 5 современными технологиями, которые стоит изучить каждому разработчику.
Что обсудили в видео? 🧑💻
4 способа улучшить навыки C#:
1️⃣ Узнавайте о новых функциях в .NET: новые версии появляются ежегодно — не упускайте возможности изучать их.
2️⃣ Учитесь оценивать производительность вашего кода, чтобы не только "работало", но и "работало эффективно".
3️⃣ Освойте минимальные API, чтобы создавать более чистые и производительные RESTful-сервисы.
4️⃣ Попробуйте Blazor для создания современных веб-приложений.
5 современных технологий для изучения:
1️⃣ DevOps: автоматизация процессов (CI/CD, GitHub Actions).
2️⃣ Современный SQL: оптимизация запросов для лучшей производительности.
3️⃣ Контейнеризация (Docker): упрощение разработки и тестирования.
4️⃣ HTML5 и CSS3: ра...
6 696
🔥 Деконструкция в C#: Упрощаем работу с данными!
🎯 Что это такое?
Деконструкция — это процесс, который позволяет «распаковывать» объекты или кортежи в отдельные переменные. Вместо того чтобы обращаться к свойствам объекта через точки, вы можете сразу извлечь нужные значения, что делает код чище и проще.
🛠 Деконструкция полезна, если:
Вы работаете с кортежами.
Вам нужно удобно разбирать собственные классы и структуры.
Вы хотите упростить сложные условия и логику в switch или LINQ-запросах.
📌 Почему это полезно?
1️⃣ Упрощение чтения кода: меньше обращений к свойствам объекта или методам.
2️⃣ Лаконичность: меньше лишнего кода и больше концентрации на логике.
3️⃣ Гибкость: можно кастомизировать деконструкцию под свои типы данных, добавляя поддержку через метод Deconstruct.
Пример:
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void Deconstruct(out string...6 696
🎨✨ Паттерн "Декоратор" — динамическое улучшение вашего кода!
🔍 Что это?
Decorator — это структурный паттерн, который позволяет динамически добавлять объекту новую функциональность. Вместо создания бесконечных подклассов, вы оборачиваете объект в "декораторы".
🛠 Как это работает?
1️⃣ Есть базовый компонент с определенным интерфейсом.
2️⃣ Декоратор реализует этот же интерфейс, добавляя новые возможности.
3️⃣ Оборачивая объект в декораторы, вы комбинируете функции так, как вам нужно!
✏️ Пример:
Представьте текстовый редактор:
Базовый объект — текст.
Один декоратор добавляет подсветку синтаксиса.
Другой — проверку орфографии.
IText plainText = new PlainText("Hello, world!");
IText highlightedText = new SyntaxHighlighter(plainText);
IText spellCheckedText = new SpellChecker(highlightedText);
Console.WriteLine(spellCheckedText.GetContent());
// [Spell Checked] [Syntax Highlighted] Hello, world!
🤔 Когда использовать?
➖ Когда нужно добавить функционал без изменения кода объекта.
➖ Если у вас слишком м...6 696
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 в контрол...
6 696
👨💻 Прокачайте навыки 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,...6 696
LTS vs STS в .NET: Какую версию выбрать для вашего проекта?
Выбор версии .NET может значительно повлиять на стабильность и возможности вашего приложения. В экосистеме .NET существуют два основных подхода к релизам: Long-Term Support (LTS) и Standard-Term Support (STS). Давайте разберем, что они означают и какой путь лучше выбрать для вашего проекта.
Что такое LTS?
LTS (Долгосрочная поддержка) предназначен для тех, кто ценит стабильность и надежность.
✅ Ключевые характеристики:
Период поддержки: 3 года с момента выпуска.
Частота релизов: каждые 2 года.
Версии: четные номера (например, .NET 6, .NET 8).
Основной акцент: исправление ошибок, обновления безопасности, максимальная стабильность.
📌 Кому подходит:
Для производственных систем и корпоративных приложений, где важно избегать частых обновлений.
Для команд, предпочитающих стабильные и проверенные решения.
Что такое STS?
STS (Краткосрочная поддержка) — это выбор для тех, кто хочет оставаться на передовой инноваций.
✅ Ключевые характеристики:
Период п...
6 696
🔄 Повторить поиск одной кнопкой!
В последнем обновлении Visual Studio 2022 представлена функция обновления результатов поиска, упрощающая работу с кодом.
✅ После выполнения поиска нажмите на значок с круговой стрелкой в окне результатов, чтобы мгновенно обновить данные без повторного открытия окна поиска.
✏️ Для уточнения критериев поиска используйте кнопку с изображением карандаша. Она открывает окно «Найти в файлах» с предыдущими параметрами, позволяя быстро внести изменения и получить более точные результаты.
#новость
6 696
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
6 696
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
6 696
🤔 Классическая задача философов за обедом: параллельное программирование в действии
Проблема философов, обедающих за круглым столом, — это фундаментальная задача параллельных вычислений, демонстрирующая сложности синхронизации в многопоточных системах.
❓Суть проблемы заключается в том, что пять философов сидят за столом с ограниченным количеством вилок между ними. Каждому философу требуются две вилки для принятия пищи, что создает потенциальный риск взаимоблокировки и голодания участников.
В статье задача решается с использованием асимметричного подхода к захвату ресурсов. Основные шаги:
1️⃣Моделирование:
Философы — потоки.
Вилки — объекты синхронизации (мьютексы или семафоры).
2️⃣Предотвращение взаимоблокировок:
Один из философов берёт сначала правую вилку, а потом левую, чтобы разрушить цикл ожидания.
3️⃣Учет справедливости:
Вводятся тайм-ауты или очереди, чтобы избежать голодания философов.
4️⃣Применение примитивов C#:
Используются Mutex и Semaphore для синхронизации потоков и упр...
6 696
😊 Привет, разработчики!
Работаете из дома?
Расскажите, что вас больше всего раздражает на домашнем рабочем месте. 👀
А может, у вас есть крутые находки, которые сделали удалёнку комфортнее? 🖥🪑
Делитесь своими лайфхаками или топовыми покупками — возможно, они помогут кому-то из нас улучшить своё пространство! 🔝
#интерактив
6 696
🚀 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());6 696
🌍 Как и просили.. Get запрос разными языками
Если ваш Web API на ASP.NET Core должен поддерживать несколько языков, стоит обратить внимание на статью. Она расскажет, как адаптировать приложение под разные языки и культуры.
Основная идея проста: использовать ресурсные файлы (.resx) для перевода текстов, настроить локализацию через RequestLocalizationOptions и добавить middleware, которое будет определять язык на основе заголовка Accept-Language. В статье также показан пример API, где данные, например, о пользователе, возвращаются уже с учётом выбранного языка.
Локализация делает ваше приложение более доступным и готовым к расширению. Теперь добавить новый язык — дело пары минут!
6 696
🛠️ Анонс .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.
📎 Узнайте все детали обновления в блоге разработчиков
6 696
❌ Почему не стоит использовать события в ASP.NET Core?
События (events) в C# — мощный инструмент, который позволяет одному объекту уведомлять других о произошедших изменениях. Однако в контексте ASP.NET Core их использование может привести к неожиданным проблемам:
🔸 Сложность отладки: понять, кто подписался на событие и в каком порядке вызываются обработчики, может быть непросто.
🔸 Утечки памяти: если обработчики событий не отписываются, объекты могут оставаться в памяти, создавая утечки.
🔸 Проблемы с жизненным циклом объектов: ASP.NET Core управляет объектами через DI-контейнер, и события могут нарушить этот процесс.
Вместо событий автор статьи предлагает использовать более современные подходы:
👉 Шаблон Mediator для передачи команд между компонентами.
👉 Шаблон Observer для управления подпиской на изменения.
👉 Чётко продуманное внедрение зависимостей (DI).
📎 Подробнее о том, почему события могут быть проблемой и какие есть альтернативы, читайте в статье
6 696
🌐 Работа с Amazon SQS в C#: асинхронная обработка сообщений
⚙️ Асинхронная обработка данных играет ключевую роль в построении масштабируемых приложений, особенно если речь идёт о микросервисах. Amazon SQS (Simple Queue Service) — один из самых популярных сервисов AWS для работы с очередями сообщений.
❓ Статья объясняет, как подключиться к SQS, начиная с настройки AWS SDK for .NET. Автор показывает, как создать очередь, отправлять и получать сообщения, а также настроить права доступа для взаимодействия с сервисом.
🛠️ Основное внимание уделено подходам к polling — способам получения сообщений из очереди. Здесь затрагиваются две стратегии: short polling, при котором запросы на получение выполняются немедленно, и long polling, при котором сервер ожидает появления сообщений, чтобы минимизировать задержки и затраты.
6 696
🍎🍏 Подборка лучших статей «Библиотеки шарписта» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
⚙️🚦 Лучшие практики для тестирования асинхронного кода
🚀 CountBy: Новый метод LINQ в .NET 9, который упростит вашу жизнь
❓ Беспощадный фронтенд-тест
⚙️⚙️ System.Threading.Channels или каналы в C#
🛠️🚀 Что нового в Visual Studio 17.12?
