Как стать автором
Поиск
Написать публикацию
Обновить
107.98

C# *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Как настроить сериализацию с System.Text.Json в C#: кратко для новичков

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.6K

Сегодня поговорим о том, как сериализовать данные в C# с помощью библиотеки System.Text.Json. Если вы раньше использовали Newtonsoft.Json для преобразования объектов в JSON и обратно, то пришло время посмотреть, как этот процесс можно ускорить и упростить, применяя встроенные инструменты .NET.

Читать далее

Рефакторим легаси при помощи ООП

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров6.6K

Спустя годы проекты обрастают тёмными местами, в которые никто не хочет соваться, поскольку их сложно понять и легко сломать. Сегодня мы посмотрим на кейс рефакторинга такого кода с переводом на ООП рельсы при помощи паттернов, причём со стилем (современным).

Читать далее

Компиляция математического выражения из строки динамически во время выполнения в C# (.NET)

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.3K

В этой статье я продемонстрирую, как динамически компилировать математические выражения из строк в runtime в C#, исключительно просто и быстро. Это решение поддерживает различные математические контексты, включая логические выражения, научные вычисления и C#, а также позволяет расширять эти контексты пользовательскими переменными, операторами и функциями.

Читать далее

Способы создания экземпляра наследника класса в зависимости от данных

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.5K

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

В голову пришло три способа организации:

Читать далее

Отправка сообщения в ДМДК через stunnel на С#

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.4K

Задача - у нас есть розничные продажи и нам надо отправлять информацию о них в госсистему ДМДК.

Как зарегистрироваться в ДМДК и настроить stunnel я напишу отдельную статью, считаем что он есть, настроен и работает. Соответственно у нас еть ЭЦП, все необходимые сертификаты зарегистрированы.

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

Решаем передавать каждый чек как отдельное сообщение, благо их в день не много и можно передавать не сразу, а в течение нескольких дней после продажи. Передавать будем в фоне асинхронно, и пытаться передать до тех пор пока ДМДК не съест (иногда она глючит, иногда не работает, иногда на профилактике)

Читать далее

Проверяем зачисление в ВУЗ через телеграм бота

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров2.3K

Привет, Хабр! Последнюю неделю не могу найти себе места, так как со дня на день должен выйти приказ о моем зачислении в университет в магистратуру, но приказ предательски все никак не выходит, списки поступивших не обновляются, а я ежедневно захожу на страницу универа, проверяя изменилось ли что-нибудь. И ладно бы, если один раз в день.

В какой-то момент мне это надоело, и я вспомнил, что я – разработчик, в конце концов, поэтому зачем что-то проверять руками, если это можно автоматизировать? Собственно, так и пришла в голову идея о простом разовом проекте, который будет регулярно стучать на сайт, проверять статус зачисления и, в случае изменения, присылать радостное сообщение в телеграм.

Читать далее

Entity Framework c предустановленной БД в вашем приложении на .NET MAUI

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.4K

Данный текст является логичным продолжением статьи Entity Framework c Code-First миграциями для .NET MAUI. В ней рассказывалось как подключить и использовать, возможно, уже привычную вам по работе с апи технологию работы с БД Entity Framework теперь в вашем мобильном приложении.


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


Итак, допустим, в процессе разработки мы заполнили БД нужными вам значениями и теперь вы хотите чтобы они были доступны всем пользователям. Покажем на примере.


Кладем ваш файл базы данных в Resources/Raw/Db/app.db3 — Build Action: MauiAsset. Замечательно, файл уже с нами.


Теперь, чтобы его реально использовать при исполнении приложения, надо

Читать дальше →

.NET Digest #3

Время на прочтение4 мин
Количество просмотров5.8K

Добро пожаловать на третий выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов. Поехали!

Читать далее

Что будет, если скрестить конструирование компиляторов, DDD и Clean Architecture? Опыт HydraScript

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров6.5K


В этой статье я расскажу о двухлетнем эксперименте, проводимом над моим пет-проектом, интерпретатором ЯП HydraScript. Почему к разработке из области системного программирования были применены промышленные практики, и зачем конструированию компиляторов нужен Domain Driver Design с чистой архитектурой?

Исходники проекта
Читать дальше →

Как на C# написать программу в одно выражение?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров9.5K

Попалась на Stack Overflow интересная задачка: написать программу как можно короче и в одну строку. Что подразумевается под одной строкой? Это значит использовать только один оператор (statement) верхнего уровня с точкой с запятой в конце и не использовать блоки кода. Вложенные операторы допускаются.

Читать далее

Современное хранение игрового прогресса в контексте Unity

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров14K

Для чего нужна система сохранений? Какие задачи решает? Что происходят внутри? Как реализовать? Какие варианты существуют? Как адаптироваться к постоянно меняющемуся контексту? Какие современные особенности нужно учитывать?

Читать далее

Заметки по сериализации + System.Text.Json

Уровень сложностиСредний
Время на прочтение31 мин
Количество просмотров7.3K

Сериализация - важнейший механизм любого приложения, от поиска по фильтрам в онлайн магазинах, до сохранения прогресса в играх. Давайте коротко пройдемся по основным форматам сериализации и рассмотрим использование System.Text.Json.

Читать далее

Близкий родственник эльфа – программер

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров3.2K

Многие знакомы с ELF-файлами и их структурой. Поговорим о программерах. Программер – это файл в формате ELF (расширение может быть BIN, MBN или ELF), который предназначен для  работы с памятью смартфонов на Android с процессорами от Qualcomm в режиме аварийной загрузки (EDL mode – emergency download, 9008). Также его некоторые называют «пожарный шланг» (от английского firehose) или просто «шланг». Файл представляет из себя контейнер с набором команд для базовой работы с памятью, которые подписаны цепочкой сертификатов. Иногда возникает необходимость подобрать для своего устройства подходящий программер. Вот и попробуем разобраться в этом.

Читать далее

Ближайшие события

Практическая реализация современной аутентификации на платформе .NET: OpenID Connect, шаблон BFF и SPA

Уровень сложностиСредний
Время на прочтение34 мин
Количество просмотров6.4K

Построение современной и надежной системы аутентификации — задача, которая требует тщательного подхода. В огромном количестве информации легко запутаться: многие материалы представлены в неструктурированном виде, а часть из них и вовсе описывает устаревшие или даже небезопасные в настоящее время методы и подходы. К тому же каноническое описание шаблона Backend-For-Frontend (BFF) довольно абстрактно и вызывает сложности в практической реализации у многих разработчиков.

Это подтолкнуло меня создать подробное и максимально доступное руководство, посвященное реализации современного подхода к аутентификации на платформе .NET с использованием OpenID Connect, архитектурного шаблона Backend-For-Frontend (BFF) и распределению ответственности между одностраничным приложением (SPA) на React и серверным API.

В статье рассматриваются ключевые аспекты настройки аутентификации, такие как использование потока Authorization Code с Proof Key for Code Exchange (PKCE) и интеграция его с одностраничными приложениями (SPA) на React. Приведены примеры на базе .NET и React, включающие пошаговые инструкции по настройке клиента OpenID Connect и BFF, а также демонстрируется использование библиотеки YARP для проксирования запросов к внешним API. В результате выполнения инструкций вы самостоятельно создадите полнофункциональное приложение с безопасной аутентификацией и надежным взаимодействием с внешними сервисами и разберетесь в его внутреннем устройстве и взаимодействии с другими сервисами.

Читать далее

Гладкое бритье: Razor Pages для разработчиков веб-форм

Время на прочтение15 мин
Количество просмотров4.3K

Если вы, будучи разработчиком ASP.NET Web Forms, сомневаетесь в переносимости своих навыков на более современную платформу .NET (например, .NET Core или .NET 6), то спешу вас успокоить — все не так уж и плохо. Хоть Microsoft и не планирует переносить Web Forms, приобретенные вами навыки вполне применимы в аналогичном фреймворке под названием Razor Pages. Да, вам все равно придется адаптировать свое мышление к этой новой платформе, но если вы не пожалеете на это время, ты вы откроете для себя такой же мощный и простой в использовании инструмент для создания веб-приложений.

Читать далее

Что на DotNext 2024 расскажут о практиках .NET-разработки, архитектуре, «кишочках» .NET и не только

Время на прочтение14 мин
Количество просмотров3.2K

До конференции DotNext 2024 осталась всего пара недель, и уже хорошо известно обо всех докладах, которые там будут. Все они делятся на четыре основных категории:

Best practices: скажем, «Как собирать проекты просто» или «Как использовать АОП в .NET»
Архитектура: например, про DDD или Serverless
Internals: как в .NET всё устроено «под капотом»
«Расширяем горизонты»: всё, что не подходит предыдущим категориям, но тоже полезно дотнетчикам. Например, знали ли вы, что «монады есть у нас дома», то есть в .NET есть аналог этой концепции?

Темы бывают и фундаментальными, вроде «Асинхронность за пределами async/await», и экзотическими, вроде «.NET для чайников» (ну то есть физических чайников с кухни). И вишенкой на всём этом — выступление о саморазвитии от Максима Дорофеева, который хорошо известен многим разработчикам своими материалами о продуктивности.

В этом посте — описания сразу всех докладов, разделённые на эти четыре блока:

Читать далее

Головоломка со светом

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.9K

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

Читать далее

Телеграм бот на C# с использованием Yandex Cloud Functions

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.8K

Всем привет!

Данная статья содержит информация о том, как написать телеграм бота на C# с использованием Yandex Cloud Functions и Телеграм Webhook. Также в данной статье будет рассмотрено CI/CD с помощью GitHub Actions.

P.S. полезная литература находится в ссылках!

Читать далее

Заглядываем под капот FrozenDictionary: насколько он быстрее Dictionary и почему

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров15K

С релизом .NET 8 в арсенале C# разработчиков появилась новая коллекция – FrozenDictionary. Особенность этого словаря в том, что он неизменяемый, но при этом обеспечивает более быстрое чтение по сравнению с обычным Dictionary. Я неспроста разбил результаты на обложке по типам – используемые во FrozenDictionary алгоритмы сильно зависят от типа ключа, размера словаря или даже, например, количества строковых ключей одинаковой длины. В этой статье подробно разберем, насколько FrozenDictionary быстрее и почему.

Заглянуть под капот

Вот скажи мне, микросервис, в чем сила (часть 2)

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.4K

Если вы не читали начало - то оно здесь.

Вкратце же, там я описал как начал строить свой “интернет магазин электроники”. Да, именно в кавычках 🙂. Потому что это не магазин совсем, а эксперименты по реализации части механик. Конкретно, подбора товаров по параметрам. Запустил первый блин комом и сейчас буду наш первый блин улучшать.

В любом случае, первую часть будет полезно почитать хотя бы из-за дельных комментариев (как всегда на Хабре). Там любезно объяснили, что этому всему есть научный термин - фасетный поиск. И что данная реализация соответствует паттерну EAV. Да и вообще этот велосипед уже изобрели. Но меня это, конечно же, не остановит 🙂. Что может быть прекрасней собственного велосипеда!

Есть еще надежда, что написанные статьи привлекут внимание тех, кто реализует подобное не как я - ради развлечения, а ради работы. Может они в комментариях поделятся своими замерами производительности, или какими-то подводными камнями. Было бы интересно.

Показать

Вклад авторов