Как улучшить поисковую видимость сайта с помощью микроразметки
Финансовый маркетплейс «Выберу.ру» делится опытом внедрения микроразметки для оптимизации поисковой выдачи. Описывается использование стандарта Schema.org и выбор между синтаксисами "микроданные" и "JSON-LD". Узнайте, как микроразметка может выделить ваш сайт среди конкурентов. Надежное создание микроразметки с Schema.NET
Новая статья рассматривает использование nuget пакета Schema.NET для работы с микроразметкой, избегая ошибок прошлых решений. Schema.NET помогает легко создавать JSON-LD микроразметку для сайтов, следуя стандартам Schema.org. Это решение устраняет некоторые сложности, с которыми сталкиваются разработчики. Преимущества и недочёты использования Schema.NET
Для удобного внедрения микроразметки мы использовали Schema.NET. Пакет упрощает процесс, снижает сложность для новичков и повышает устойчивость кода. Однако в нём есть ограничения, такие как отсутствие разнообразия типов данных и возможность неявных ошибок.
Читать подробнее: https://habr.com/ru/articles/856120/
#ru
@dot_net_c_sharp | Другие наши каналы
Финансовый маркетплейс «Выберу.ру» делится опытом внедрения микроразметки для оптимизации поисковой выдачи. Описывается использование стандарта Schema.org и выбор между синтаксисами "микроданные" и "JSON-LD". Узнайте, как микроразметка может выделить ваш сайт среди конкурентов. Надежное создание микроразметки с Schema.NET
Новая статья рассматривает использование nuget пакета Schema.NET для работы с микроразметкой, избегая ошибок прошлых решений. Schema.NET помогает легко создавать JSON-LD микроразметку для сайтов, следуя стандартам Schema.org. Это решение устраняет некоторые сложности, с которыми сталкиваются разработчики. Преимущества и недочёты использования Schema.NET
Для удобного внедрения микроразметки мы использовали Schema.NET. Пакет упрощает процесс, снижает сложность для новичков и повышает устойчивость кода. Однако в нём есть ограничения, такие как отсутствие разнообразия типов данных и возможность неявных ошибок.
Читать подробнее: https://habr.com/ru/articles/856120/
#ru
@dot_net_c_sharp | Другие наши каналы
Обновление NetEscapades.EnumGenerators: теперь с интерсепторами!
Недавно в пакете NetEscapades.EnumGenerators появилась поддержка интерсепторов. Эта экспериментальная функция версии 1.0.0-beta11 позволяет заменять вызов одного метода другим, что значительно ускоряет обработку enum. Подробности и примеры использования читайте в статье! Новая функция интерсепторов в NetEscapades.EnumGenerators
Вышло обновление 1.0.0-beta11 для NetEscapades.EnumGenerators с поддержкой интерсепторов. Теперь можно перехватывать вызовы ToString() для перечислений, настроив проект на SDK версии 8.0.400 или выше и активировав настройку EnableEnumGeneratorInterceptor. Поддерживается только в проекте, где определены перечисления.
Подробности: https://andrewlock.net/recent-updates-for-netescapades-enumgenerators-interceptors/
#en
@dot_net_c_sharp | Другие наши каналы
Недавно в пакете NetEscapades.EnumGenerators появилась поддержка интерсепторов. Эта экспериментальная функция версии 1.0.0-beta11 позволяет заменять вызов одного метода другим, что значительно ускоряет обработку enum. Подробности и примеры использования читайте в статье! Новая функция интерсепторов в NetEscapades.EnumGenerators
Вышло обновление 1.0.0-beta11 для NetEscapades.EnumGenerators с поддержкой интерсепторов. Теперь можно перехватывать вызовы ToString() для перечислений, настроив проект на SDK версии 8.0.400 или выше и активировав настройку EnableEnumGeneratorInterceptor. Поддерживается только в проекте, где определены перечисления.
Подробности: https://andrewlock.net/recent-updates-for-netescapades-enumgenerators-interceptors/
#en
@dot_net_c_sharp | Другие наши каналы
Защитите свои инвестиции: хеджирование позиций Uniswap
Если вы используете Uniswap V3, то знаете о рисках, связанных с изменением стоимости эфира. Для снижения этих рисков, стоит рассмотреть покупку опционов. Опцион позволяет провайдеру ликвидности зафиксировать продажу актива по заранее оговоренной цене, защищая свои инвестиции от падения рынка. Хеджирование Uniswap V3 с помощью пут-опционов
Статья раскрывает, как пут-опционы могут хеджировать позиции на Uniswap V3. Важная идея: правильно подобранный опцион позволяет снизить риск потерь. Однако стоит учитывать, что затраты на опционы могут превышать доходы от комиссий платформы.
Читать подробнее: https://habr.com/ru/articles/855988/
#ru
@dot_net_c_sharp | Другие наши каналы
Если вы используете Uniswap V3, то знаете о рисках, связанных с изменением стоимости эфира. Для снижения этих рисков, стоит рассмотреть покупку опционов. Опцион позволяет провайдеру ликвидности зафиксировать продажу актива по заранее оговоренной цене, защищая свои инвестиции от падения рынка. Хеджирование Uniswap V3 с помощью пут-опционов
Статья раскрывает, как пут-опционы могут хеджировать позиции на Uniswap V3. Важная идея: правильно подобранный опцион позволяет снизить риск потерь. Однако стоит учитывать, что затраты на опционы могут превышать доходы от комиссий платформы.
Читать подробнее: https://habr.com/ru/articles/855988/
#ru
@dot_net_c_sharp | Другие наши каналы
Поддержка Oracle Forms завершится: выбираем альтернативы
Oracle объявила об окончании поддержки Oracle Forms к 2027 году. Это создаёт риски для компаний, зависящих от этой системы. Рассматривая замены, стоит обратить внимание на Java с Angular/React, Oracle APEX, .NET или низкокодовые платформы. Каждая из них предлагает свои преимущества и решает актуальные задачи бизнеса.
Подробности: https://modernization-blueprint.hashnode.dev/oracle-forms-support-ending-what-are-alternatives
#en
@dot_net_c_sharp | Другие наши каналы
Oracle объявила об окончании поддержки Oracle Forms к 2027 году. Это создаёт риски для компаний, зависящих от этой системы. Рассматривая замены, стоит обратить внимание на Java с Angular/React, Oracle APEX, .NET или низкокодовые платформы. Каждая из них предлагает свои преимущества и решает актуальные задачи бизнеса.
Подробности: https://modernization-blueprint.hashnode.dev/oracle-forms-support-ending-what-are-alternatives
#en
@dot_net_c_sharp | Другие наши каналы
Простой доступ к REST API с Refit в .NET
Refit — библиотека для .NET, облегчающая создание типизированных HTTP-клиентов. Переходите от HttpClient к более легкому способу интеграции с REST API, используя интерфейсы и аннотации. Она улучшает читаемость кода и добавляет функции, такие как логгирование. Узнайте больше!
Читать подробнее: https://habr.com/ru/articles/828040/
#ru
@dot_net_c_sharp | Другие наши каналы
Refit — библиотека для .NET, облегчающая создание типизированных HTTP-клиентов. Переходите от HttpClient к более легкому способу интеграции с REST API, используя интерфейсы и аннотации. Она улучшает читаемость кода и добавляет функции, такие как логгирование. Узнайте больше!
Читать подробнее: https://habr.com/ru/articles/828040/
#ru
@dot_net_c_sharp | Другие наши каналы
🔍 Алгоритмы и рекурсия в F#
Статья исследует роль алгоритмов в разработке на F# и взаимодействие рекурсии с иммутабельными структурами. Описываются преимущества использования шадовинга и рекурсии для управления скоупом, а также их влияние на читаемость и эффективность кода, особенно в контексте задач с PriorityStack.
Читать подробнее: https://habr.com/ru/companies/first/articles/856406/
#ru
@dot_net_c_sharp | Другие наши каналы
Статья исследует роль алгоритмов в разработке на F# и взаимодействие рекурсии с иммутабельными структурами. Описываются преимущества использования шадовинга и рекурсии для управления скоупом, а также их влияние на читаемость и эффективность кода, особенно в контексте задач с PriorityStack.
Читать подробнее: https://habr.com/ru/companies/first/articles/856406/
#ru
@dot_net_c_sharp | Другие наши каналы
Эффективное обновление зависимостей в .Net
Максим Родин поделился опытом обновления зависимостей в .Net проектах. Рассмотрены стимулы к обновлению: от смены платформ до устранения уязвимостей. Узнайте о ключевых методах, важности выбора инструментов и контроле версий для стабильности проекта.
Читать подробнее: https://habr.com/ru/companies/usetech/articles/856806/
#ru
@dot_net_c_sharp | Другие наши каналы
Максим Родин поделился опытом обновления зависимостей в .Net проектах. Рассмотрены стимулы к обновлению: от смены платформ до устранения уязвимостей. Узнайте о ключевых методах, важности выбора инструментов и контроле версий для стабильности проекта.
Читать подробнее: https://habr.com/ru/companies/usetech/articles/856806/
#ru
@dot_net_c_sharp | Другие наши каналы
Подготовьтесь к .NET Conf 2024!
.NET Conf 2024 пройдет 12-14 ноября в онлайн-формате. Вас ждут новые функции .NET 9, глубокие сессии по ASP.NET Core и Blazor, круглосуточные трансляции и уникальные призы. Присоединяйтесь к трансляции, задавайте вопросы и участвуйте в розыгрыше подарков. Подробности на dotnetconf.net.
Подробности: https://devblogs.microsoft.com/dotnet/get-ready-for-dotnet-conf-2024/
#en
@dot_net_c_sharp | Другие наши каналы
.NET Conf 2024 пройдет 12-14 ноября в онлайн-формате. Вас ждут новые функции .NET 9, глубокие сессии по ASP.NET Core и Blazor, круглосуточные трансляции и уникальные призы. Присоединяйтесь к трансляции, задавайте вопросы и участвуйте в розыгрыше подарков. Подробности на dotnetconf.net.
Подробности: https://devblogs.microsoft.com/dotnet/get-ready-for-dotnet-conf-2024/
#en
@dot_net_c_sharp | Другие наши каналы
🔥4
Что такое Semantic Versioning?
Пост: Узнайте, как схема Semantic Versioning помогает управлять версиями программного обеспечения. Трёхкомпонентные номера версий в формате major.minor.patch обеспечивают ясность и предсказуемость обновлений, от исправлений до новых функций и изменений, влияющих на совместимость.
Подробности: https://freecodecamp.org/news/set-semantic-versioning-for-net
#en
@dot_net_c_sharp | Другие наши каналы
Пост: Узнайте, как схема Semantic Versioning помогает управлять версиями программного обеспечения. Трёхкомпонентные номера версий в формате major.minor.patch обеспечивают ясность и предсказуемость обновлений, от исправлений до новых функций и изменений, влияющих на совместимость.
Подробности: https://freecodecamp.org/news/set-semantic-versioning-for-net
#en
@dot_net_c_sharp | Другие наши каналы
freeCodeCamp.org
How to Set Semantic Version for .NET Core Apps and Libraries
Semantic Versioning (or SemVer for short) is a software versioning scheme that stipulates three-part version numbers of the form <major>.<minor>.<patch>, such as 1.0.2, with an optional prerelease suffix of the form -<prerelease>, as in 1.0.2-beta. S...
Будущее .NET в России: Рост или стагнация?
Платформа .NET сохраняет популярность в России: компании расширяют команды и увеличивают количество вакансий. Однако, разногласия остаются — часть экспертов видит большие перспективы, в то время как другие отмечают проблемы с усложнением C# и доступом к инструментам.
Читать подробнее: https://habr.com/ru/articles/857042/
#ru
@dot_net_c_sharp | Другие наши каналы
Платформа .NET сохраняет популярность в России: компании расширяют команды и увеличивают количество вакансий. Однако, разногласия остаются — часть экспертов видит большие перспективы, в то время как другие отмечают проблемы с усложнением C# и доступом к инструментам.
Читать подробнее: https://habr.com/ru/articles/857042/
#ru
@dot_net_c_sharp | Другие наши каналы
🦄5👍3
🔍 Оптимизация интерпретаторов байткода: миф или реальность?
Статья освещает разработку интерпретатора, который якобы превосходит JIT/AOT-компиляцию, но убедительных доказательств пока нет. Образовательный разбор байткода в OpenJDK показывает влияние количества инструкций на скорость работы. Узнайте больше о сравнении производительности в мире байткода.
Читать подробнее: https://habr.com/ru/articles/857342/
#ru
@dot_net_c_sharp | Другие наши каналы
Статья освещает разработку интерпретатора, который якобы превосходит JIT/AOT-компиляцию, но убедительных доказательств пока нет. Образовательный разбор байткода в OpenJDK показывает влияние количества инструкций на скорость работы. Узнайте больше о сравнении производительности в мире байткода.
Читать подробнее: https://habr.com/ru/articles/857342/
#ru
@dot_net_c_sharp | Другие наши каналы
Изучение платформ .NET и Mono: Разница и Общие Черты
В статье обсуждается, что такое .NET и Mono, а также их роль в разработке приложений. Обучающие курсы редко отвечают на вопросы об этих платформах, что затрудняет поиск работы для начинающих разработчиков, сталкивающихся с вопросами о компиляторе и рантайме на собеседованиях.
Читать подробнее: https://habr.com/ru/articles/857164/
#ru
@dot_net_c_sharp | Другие наши каналы
В статье обсуждается, что такое .NET и Mono, а также их роль в разработке приложений. Обучающие курсы редко отвечают на вопросы об этих платформах, что затрудняет поиск работы для начинающих разработчиков, сталкивающихся с вопросами о компиляторе и рантайме на собеседованиях.
Читать подробнее: https://habr.com/ru/articles/857164/
#ru
@dot_net_c_sharp | Другие наши каналы
Forwarded from Типичный программист
200 проектов для практики программистам любого уровня
Пет-проекты обычно делают для себя в свободное время. Но основная проблема — это найти такие пет-проекты, чтобы научиться чему-нибудь полезному, не забить на них в процессе и сделать их так, чтобы в портфолио не стыдно было приложить.
Тут автор проделал огромную работу и сделал аж 200 идей для ваших проектов. И что круто — этот список подходит не только новичкам и не ограничивается какими-то определёнными технологиями. Все проекты удобно разделены по уровню сложности и стеку: блокчейн, веб, редактор изображений — да буквально что угодно! Остаётся только выбрать и начать.
#хобби #карьера
Пет-проекты обычно делают для себя в свободное время. Но основная проблема — это найти такие пет-проекты, чтобы научиться чему-нибудь полезному, не забить на них в процессе и сделать их так, чтобы в портфолио не стыдно было приложить.
Тут автор проделал огромную работу и сделал аж 200 идей для ваших проектов. И что круто — этот список подходит не только новичкам и не ограничивается какими-то определёнными технологиями. Все проекты удобно разделены по уровню сложности и стеку: блокчейн, веб, редактор изображений — да буквально что угодно! Остаётся только выбрать и начать.
#хобби #карьера
👍5💯3😢2
Улучшаем ASP.NET Core MVC с помощью Tag Helper
Использование Tag Helper для отображения строго типизированного частичного вида в ASP.NET Core MVC делает код чище и интуитивнее. Создайте модель, добавьте частичный вид и используйте его в основном представлении с помощью Partial Tag Helper. Это упрощает синтаксис и обеспечивает поддержку IntelliSense.
Подробности: https://measifalam.hashnode.dev/using-a-tag-helper-to-render-a-strongly-typed-partial-view-in-aspnet-core-mvc
#en
@dot_net_c_sharp | Другие наши каналы
Использование Tag Helper для отображения строго типизированного частичного вида в ASP.NET Core MVC делает код чище и интуитивнее. Создайте модель, добавьте частичный вид и используйте его в основном представлении с помощью Partial Tag Helper. Это упрощает синтаксис и обеспечивает поддержку IntelliSense.
Подробности: https://measifalam.hashnode.dev/using-a-tag-helper-to-render-a-strongly-typed-partial-view-in-aspnet-core-mvc
#en
@dot_net_c_sharp | Другие наши каналы
🌟 Новый релиз .NET 9: что ждет разработчиков? 🌟
Вышел .NET 9, и пора переносить проекты на новую версию. Основное внимание уделено облачным приложениям и производительности. Улучшения коснулись C# 13, GC, LINQ и других компонентов. Это стандартный релиз с полугодовой поддержкой. Узнайте больше о новинках и оптимизациях платформы! 🔧 Новшества в .NET 9: что изменилось?
.NET 9 привносит множество нововведений для разработчиков. Ключевые из них — это автоматизированный Parallel тестовый запуск, улучшенные проверки на уязвимости в NuGet и новая функция защиты от ошибок сборки. Также обновлен JIT для оптимизации исполнения кода. Узнайте больше о всех обновлениях! Новинки в .NET 9 для разработчиков
Вышла новая версия .NET 9! Основные улучшения включают повышение производительности, оптимизацию времени загрузки и возможности для разработчиков. В то время как многие изменения скрыты от глаз, они делают платформу более эффективной. Ознакомьтесь с подробностями и будьте готовы к .NET 10!
Читать подробнее: https://habr.com/ru/companies/pvs-studio/articles/858174/
#ru
@dot_net_c_sharp | Другие наши каналы
Вышел .NET 9, и пора переносить проекты на новую версию. Основное внимание уделено облачным приложениям и производительности. Улучшения коснулись C# 13, GC, LINQ и других компонентов. Это стандартный релиз с полугодовой поддержкой. Узнайте больше о новинках и оптимизациях платформы! 🔧 Новшества в .NET 9: что изменилось?
.NET 9 привносит множество нововведений для разработчиков. Ключевые из них — это автоматизированный Parallel тестовый запуск, улучшенные проверки на уязвимости в NuGet и новая функция защиты от ошибок сборки. Также обновлен JIT для оптимизации исполнения кода. Узнайте больше о всех обновлениях! Новинки в .NET 9 для разработчиков
Вышла новая версия .NET 9! Основные улучшения включают повышение производительности, оптимизацию времени загрузки и возможности для разработчиков. В то время как многие изменения скрыты от глаз, они делают платформу более эффективной. Ознакомьтесь с подробностями и будьте готовы к .NET 10!
Читать подробнее: https://habr.com/ru/companies/pvs-studio/articles/858174/
#ru
@dot_net_c_sharp | Другие наши каналы
Понимание структуры папок в .NET проектах
Разбираетесь в .NET? Узнайте, как правильно организовать структуру папок для разных типов проектов: от базового ASP.NET MVC до сложной структуры DDD. Каждый подход помогает лучше управлять кодом и облегчает сопровождение. Интересно? Ознакомьтесь с подробным гидом.
Подробности: https://doquoctuan.id.vn/folder-structures-in-net-projects-a-comprehensive-guide
#en
@dot_net_c_sharp | Другие наши каналы
Разбираетесь в .NET? Узнайте, как правильно организовать структуру папок для разных типов проектов: от базового ASP.NET MVC до сложной структуры DDD. Каждый подход помогает лучше управлять кодом и облегчает сопровождение. Интересно? Ознакомьтесь с подробным гидом.
Подробности: https://doquoctuan.id.vn/folder-structures-in-net-projects-a-comprehensive-guide
#en
@dot_net_c_sharp | Другие наши каналы
This media is not supported in your browser
VIEW IN TELEGRAM
Встречайте .NET Aspire Community Toolkit!
Мы рады сообщить, что .NET Aspire Community Toolkit теперь доступен на NuGet и поддерживает .NET Aspire 9! Этот набор интеграций и расширений позволяет улучшить работу с .NET Aspire. Присоединяйтесь к сообществу и внесите свой вклад в развитие технологии на GitHub!
Подробности: https://devblogs.microsoft.com/dotnet/introducing-the-dotnet-aspire-community-toolkit/
#en
@dot_net_c_sharp | Другие наши каналы
Мы рады сообщить, что .NET Aspire Community Toolkit теперь доступен на NuGet и поддерживает .NET Aspire 9! Этот набор интеграций и расширений позволяет улучшить работу с .NET Aspire. Присоединяйтесь к сообществу и внесите свой вклад в развитие технологии на GitHub!
Подробности: https://devblogs.microsoft.com/dotnet/introducing-the-dotnet-aspire-community-toolkit/
#en
@dot_net_c_sharp | Другие наши каналы
🔥2
История и будущее nullability в F#
В новой версии F# 9 представлены Nullable Reference Types, которые усиливают безопасность кода, особенно при взаимодействии с другими языками, такими как C#. Эта функция помогает F# разработчикам лучше управлять null значениями и предотвращать связанные ошибки. Новая возможность интегрируется с .NET 9 и предназначена для повышения надежности кода. Новые возможности F# 9 для работы с null
F# 9 вводит новые типы и ограничения для безопасной работы с null. Использование объявления типа | null помогает в миграции и совместимости кода. Добавлены предупреждения компилятора о неправомерном использовании null и усовершенствования в обработке значений через pattern matching. Новые возможности работы с null в F#
F# 9 представляет опциональную настройку <Nullable>enable</Nullable> для более точного управления null-ссылками на этапе компиляции. Это нововведение поможет отличать nullable и non-nullable типы, улучшая надёжность кода. Рассматривается введение операторов, схожих с ?. и ?? из C#.
Подробности: https://devblogs.microsoft.com/dotnet/nullable-reference-types-in-fsharp-9/
#en
@dot_net_c_sharp | Другие наши каналы
В новой версии F# 9 представлены Nullable Reference Types, которые усиливают безопасность кода, особенно при взаимодействии с другими языками, такими как C#. Эта функция помогает F# разработчикам лучше управлять null значениями и предотвращать связанные ошибки. Новая возможность интегрируется с .NET 9 и предназначена для повышения надежности кода. Новые возможности F# 9 для работы с null
F# 9 вводит новые типы и ограничения для безопасной работы с null. Использование объявления типа | null помогает в миграции и совместимости кода. Добавлены предупреждения компилятора о неправомерном использовании null и усовершенствования в обработке значений через pattern matching. Новые возможности работы с null в F#
F# 9 представляет опциональную настройку <Nullable>enable</Nullable> для более точного управления null-ссылками на этапе компиляции. Это нововведение поможет отличать nullable и non-nullable типы, улучшая надёжность кода. Рассматривается введение операторов, схожих с ?. и ?? из C#.
Подробности: https://devblogs.microsoft.com/dotnet/nullable-reference-types-in-fsharp-9/
#en
@dot_net_c_sharp | Другие наши каналы
👍2
Новинки C# 13: улучшенные params
В C# 13 введены новые возможности для params, которые теперь могут принимать любые коллекции, поддерживающие выражения коллекций. Это позволяет оптимизировать код, улучшая производительность, и дает разработчикам больше гибкости при вызове методов. Узнайте больше на сайте "What's new in C# 13".
Подробности: https://devblogs.microsoft.com/dotnet/csharp13-calling-methods-is-easier-and-faster/
#en
@dot_net_c_sharp | Другие наши каналы
В C# 13 введены новые возможности для params, которые теперь могут принимать любые коллекции, поддерживающие выражения коллекций. Это позволяет оптимизировать код, улучшая производительность, и дает разработчикам больше гибкости при вызове методов. Узнайте больше на сайте "What's new in C# 13".
Подробности: https://devblogs.microsoft.com/dotnet/csharp13-calling-methods-is-easier-and-faster/
#en
@dot_net_c_sharp | Другие наши каналы
❤3🥱1
🌐 Инновации в управлении медиаконтентом
Как улучшить обработку видео? В статье обсуждается применение Minio и FFmpeg для загрузки и обработки видеофайлов, а также решения от Api.video и Cloudinary. Простой и эффективный подход позволяет усовершенствовать пользовательский опыт в приложениях. Узнайте подробности.
Читать подробнее: https://habr.com/ru/articles/858768/
#ru
@dot_net_c_sharp | Другие наши каналы
Как улучшить обработку видео? В статье обсуждается применение Minio и FFmpeg для загрузки и обработки видеофайлов, а также решения от Api.video и Cloudinary. Простой и эффективный подход позволяет усовершенствовать пользовательский опыт в приложениях. Узнайте подробности.
Читать подробнее: https://habr.com/ru/articles/858768/
#ru
@dot_net_c_sharp | Другие наши каналы
Обновленный Modbus терминал: теперь на Avalonia UI
Новая версия Modbus терминала теперь поддерживает Windows и Linux благодаря переходу на Avalonia UI. Улучшены дизайн и функциональность, добавлен Modbus сканер и возможность работы с float числами. Все подробности и ссылки на скачивание доступны в статье.
Читать подробнее: https://habr.com/ru/articles/854824/
#ru
@dot_net_c_sharp | Другие наши каналы
Новая версия Modbus терминала теперь поддерживает Windows и Linux благодаря переходу на Avalonia UI. Улучшены дизайн и функциональность, добавлен Modbus сканер и возможность работы с float числами. Все подробности и ссылки на скачивание доступны в статье.
Читать подробнее: https://habr.com/ru/articles/854824/
#ru
@dot_net_c_sharp | Другие наши каналы
👍3