Telegram Web Link
🖥Наглядный пример использования оператора explicit в C#

В .NET у нас есть множество способов сопоставлять объекты друг с другом. Выше — пример использования оператора explicit для этих целей.

⚡️ Подробнее

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Выпуск .NET Aspire 8.2!

Команда .NET Aspire выпустила новую версию 8.2, которая улучшает процесс внедрения и тестирования.

Главное изменение — Components теперь называются Integrations, что упрощает работу с облачными сервисами.

Подробности: https://devblogs.microsoft.com/dotnet/announcing-dotnet-aspire-8-2/

@csharp_1001_notes
🖥 Почему стоит избегать throw ex в C#/.NET

Исключения играют важную роль в C#/.NET приложениях, помогая поддерживать их стабильность. Важно использовать throw; вместо throw ex; в блоках catch, чтобы сохранить исходный стек вызовов и упростить отладку. Использование throw ex; сбрасывает стек, усложняя устранение ошибок.

Подробности: https://nilebits.hashnode.dev/c-net-exception-handling-why-you-should-avoid-using-throw-ex-in-catch-blocks

#en
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Новый SDK Pinecone для .NET: Расширяйте свои возможности в AI!

Экосистема AI в .NET постоянно растет, и команда платформы не собирается останавливаться.

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

📍 Читать

@csharp_1001_notes
🖥 RethinkDB — база данных, ориентированная на работу в реальном времени. Она поддерживает хранение данных в формате JSON любой структуры (NoSQL) и позволяет "слушать" стримы данных.

Упрощает создание:
приложений для совместного редактирования документов (например, Google Docs, Trello),
мультиплеерных игр (например, для мгновенного оповещения игроков о действиях других),
маркетплейсов (биржи, ставки),
дешбордов с данными в реальном времени,
систем для общения между IoT-устройствами: обмен сообщениями, сигнализация, запуск действий через прослушивание одного источника.

https://github.com/rethinkdb/rethinkdb

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Создаём реальное чат-приложение на SignalR в .NET и React

Статья подробно описывает процесс создания реального чат-приложения с использованием SignalR в .NET и React. Разбираются этапы настройки бэкенда с помощью ASP.NET Core и фронтенда с использованием React, а также взаимодействие между ними для обеспечения реального времени в чате.

https://blog.ghanshyamdigital.com/building-a-real-time-chat-app-with-signalr-in-net-and-react

@csharp_1001_notes
🏬 Разработка масштабируемого веб-API для приложения e-commerce с использованием .NET и MongoDB: пошаговый гайд

Гайд проведет вас через ключевые компоненты и принципы проектирования чистой архитектуры .NET, интеграцию MongoDB и различные функции и возможности приложения электронной коммерции.

👉 Читать
💁💁 LXC vs. Docker: что использовать?

В современных условиях разработки программного обеспечения технология контейнеризации стала ключевым инструментом для разработчиков, стремящихся повысить эффективность и обеспечить согласованность в различных средах. Среди различных контейнерных технологий, доступных сегодня, контейнеры Linux (LXC) и Docker являются двумя наиболее популярными вариантами.
В статье рассматриваются виртуальные среды LXC и Docker и их функциональные возможности.

Продолжение тут

#почитать
Awesome-Avalonia PRs Welcome

Коллекция полезных библиотек и инструментов для проекта Avalonia включает в себя множество полезных ресурсов.

Если вы работаете с кроссплатформенным XAML-фреймворком для экосистемы .NET, то репозиторий awesome-avalonia заслуживает вашего внимания. Он содержит множество полезной информации и будет отличным дополнением к вашим закладкам.

GitHub
⚡️ Сможет ли Blazor превзойти React/Angular?

Очень интересное обсуждение на Reddit от новичка в .NET-разработке. Комментаторы считают, что Blazor учить легче, но в то же время он не развивается так быстро как популярные JavaScript-фреймворки.

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

@csharp_1001_notes
Обновление в .NET Smart Components

.NET Smart Components теперь доступны на GitHub! Эти AI-ориентированные компоненты облегчают интеграцию умных функций в ваши приложения. Ознакомьтесь с кодом, документацией и примерами, чтобы начать использовать AI в своих проектах, и делитесь своими идеями на GitHub.

Подробности: https://devblogs.microsoft.com/dotnet/join-the-dotnet-smart-components-ecosystem/

#en
🖥 Малоизвестная функция C#: Caller Information

❗️ Функциональность Caller Information позволяет передавать в метод информацию о вызывающем его коде, например:

- Имя файла
- Номер строки в файле
- Имя вызывающего метода

🌟 Эта особенность может быть крайне полезной для логирования, отладки и тестирования кода. Хотя она существует с версии C# 5.0, о ней часто забывают.

Как это работает?

💡 Для получения информации о вызывающем методе используются специальные атрибуты:

🌟 [CallerFilePath] — возвращает полный путь к исходному файлу, в котором был вызван метод.
🌟 [CallerLineNumber] — возвращает номер строки в файле, где был вызван метод.
🌟 [CallerMemberName] — возвращает имя метода или свойства, из которого был вызван метод.

🔍 Пример использования

Предположим, у нас есть метод Log, который записывает сообщение в консоль вместе с информацией о вызове:


using System;
using System.Runtime.CompilerServices;

class Program
{
static void Main()
{
TestMethod();
}

static void TestMethod()
{
Log("Это тестовое сообщение");
}

static void Log(string message,
[CallerFilePath] string filePath = "",
[CallerLineNumber] int lineNumber = 0,
[CallerMemberName] string memberName = "")
{
Console.WriteLine($"Сообщение: {message}");
Console.WriteLine($"Файл: {filePath}");
Console.WriteLine($"Метод: {memberName}");
Console.WriteLine($"Строка: {lineNumber}");
}
}


🔍 Вывод:


Файл: C:\Users\...\Program.cs
Метод: TestMethod
Строка: 11


💡 Применение:

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

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Serilog — Это библиотека для структурированного логирования, которая позволяет гибко настраивать вывод логов в разных форматах (текст, JSON и др.). Serilog поддерживает множество синков (каналов для записи логов), таких как консоль, файлы, базы данных и различные облачные сервисы. Библиотека упрощает мониторинг и отладку приложений, позволяя анализировать лог-файлы для выявления ошибок и потенциальных проблем

🌟 Если вам нужно легкое и настраиваемое логирование в .NET проектах, Serilog будет отличным выбором

🔐 Лицензия: Apache 2.0

▪️Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 А вы знали, что INumber<T> — это встроенный способ ограничить дженерики только числовыми типами?

🌟 Этот способ появился довольно давно, начиная с dotnet 7!

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 UUID (Guid в C#) широко используются в качестве уникальных идентификаторов в базах данных. UUID являются случайными, что делает их популярными в распределенных системах

❗️ Однако у UUID есть некоторые недостатки:

🌟 UUID замедляют вставки в базу данных. Каждая вставка должна обновлять кластеризованный индекс, дерево B+. Поскольку UUID являются случайными, это дорогостоящая операция, так как она требует повторной балансировки дерева. Фрагментация индекса также высока (это плохо)

🌟 Более высокие затраты на хранение. Длина UUID составляет 128 бит, а если хранить его в виде строки в удобном для чтения формате, то он становится еще больше

💡 Эти недостатки можно исправить с ULID. Он также 128-битный, поэтому совместим с UUID. Однако, в отличие от UUID, ULID можно сортировать. Первые 40 бит ULID представляют собой временную метку, что делает ULID монотонно увеличивающимися.

🌟 Существует пакет .NET, реализующий спецификацию ULID, поэтому вы можете начать использовать его немедленно!

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Включение функций без повторного развёртывания приложения

❗️ Используйте Feature Flags!

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

🔍 Основные концепции:

🌟 Флаги функций: Переключатели, управляющие включением или отключением определённых функций

🌟 Управление флагами: В .NET 8 появился встроенный API для управления флагами

🌟 Постепенный запуск: Позволяет запускать новые функции для ограниченного числа пользователей, а затем включать для всех

🌟 Источники конфигурации: Флаги можно настраивать через appsettings.json, Azure App Configuration или внешние сервисы

🌟 Фильтры функций: Условия для активации флагов (например, на основе ролей пользователей или окружения)


💡 Пример: Вы можете включить новую функцию только для 10% пользователей и анализировать, как они реагируют на изменения, прежде чем развернуть её глобально

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
openai-dotnet — библиотека, которая предоставляет .NET SDK для работы с OpenAI API. Она позволяет разработчикам легко интегрировать модели OpenAI в приложения, написанные на языке C# и других языках платформы .NET

🌟 Библиотека поддерживает взаимодействие с различными возможностями OpenAI, такими как GPT и другие инструменты, предлагаемые через их API

🔐 Лицензия: MIT

▪️Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/07/04 08:57:26
Back to Top
HTML Embed Code: