Спустя годы проекты обрастают тёмными местами, в которые никто не хочет соваться, поскольку их сложно понять и легко сломать. Сегодня мы посмотрим на кейс рефакторинга такого кода с переводом на ООП рельсы при помощи паттернов, причём со стилем (современным).
.NET *
Хаб со знаниями про .NET
Новости
Компиляция математического выражения из строки динамически во время выполнения в C# (.NET)
В этой статье я продемонстрирую, как динамически компилировать математические выражения из строк в runtime в C#, исключительно просто и быстро. Это решение поддерживает различные математические контексты, включая логические выражения, научные вычисления и C#, а также позволяет расширять эти контексты пользовательскими переменными, операторами и функциями.
Способы создания экземпляра наследника класса в зависимости от данных
У нас есть табличка в базе данных с поставщиками, каждому поставщику соответствует класс обработчика, который является наследником от базового класса. Надо сделать красивый генератор для создания обработчиков.
В голову пришло три способа организации:
Отправка сообщения в ДМДК через stunnel на С#
Задача - у нас есть розничные продажи и нам надо отправлять информацию о них в госсистему ДМДК.
Как зарегистрироваться в ДМДК и настроить stunnel я напишу отдельную статью, считаем что он есть, настроен и работает. Соответственно у нас еть ЭЦП, все необходимые сертификаты зарегистрированы.
Далее лезем в документацию сервиса и берем структуру отправляемого xml файла в качестве шаблона, для простоты решения этот шаблон было решено сохранить в виде файлика в папке с программой и туда засовывать необходимые данные.
Решаем передавать каждый чек как отдельное сообщение, благо их в день не много и можно передавать не сразу, а в течение нескольких дней после продажи. Передавать будем в фоне асинхронно, и пытаться передать до тех пор пока ДМДК не съест (иногда она глючит, иногда не работает, иногда на профилактике)
Истории
О том, как я пытался сделать свой агрегатор фриланс-проектов, но он не взлетел
История о том, как я хотел сделать свой собственный агрегатор проектов с фриланс-бирж, и о том как в конечном итоге у меня ничего не получилось, несмотря на то что технически всё-таки получилось.
Проверяем зачисление в ВУЗ через телеграм бота
Привет, Хабр! Последнюю неделю не могу найти себе места, так как со дня на день должен выйти приказ о моем зачислении в университет в магистратуру, но приказ предательски все никак не выходит, списки поступивших не обновляются, а я ежедневно захожу на страницу универа, проверяя изменилось ли что-нибудь. И ладно бы, если один раз в день.
В какой-то момент мне это надоело, и я вспомнил, что я – разработчик, в конце концов, поэтому зачем что-то проверять руками, если это можно автоматизировать? Собственно, так и пришла в голову идея о простом разовом проекте, который будет регулярно стучать на сайт, проверять статус зачисления и, в случае изменения, присылать радостное сообщение в телеграм.
Entity Framework c предустановленной БД в вашем приложении на .NET MAUI
Данный текст является логичным продолжением статьи Entity Framework c Code-First миграциями для .NET MAUI. В ней рассказывалось как подключить и использовать, возможно, уже привычную вам по работе с апи технологию работы с БД Entity Framework теперь в вашем мобильном приложении.
Данная статья явно требует продолжения для практического использования: когда у вас уже есть некая предварительно заполненная база данных, и ее надо выпустить вместе с приложением.
Итак, допустим, в процессе разработки мы заполнили БД нужными вам значениями и теперь вы хотите чтобы они были доступны всем пользователям. Покажем на примере.
Кладем ваш файл базы данных в Resources/Raw/Db/app.db3
— Build Action: MauiAsset
. Замечательно, файл уже с нами.
Теперь, чтобы его реально использовать при исполнении приложения, надо
.NET Digest #3
Добро пожаловать на третий выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов. Поехали!
Что будет, если скрестить конструирование компиляторов, DDD и Clean Architecture? Опыт HydraScript
В этой статье я расскажу о двухлетнем эксперименте, проводимом над моим пет-проектом, интерпретатором ЯП HydraScript. Почему к разработке из области системного программирования были применены промышленные практики, и зачем конструированию компиляторов нужен Domain Driver Design с чистой архитектурой?
Исходники проекта
Как на C# написать программу в одно выражение?
Попалась на Stack Overflow интересная задачка: написать программу как можно короче и в одну строку. Что подразумевается под одной строкой? Это значит использовать только один оператор (statement) верхнего уровня с точкой с запятой в конце и не использовать блоки кода. Вложенные операторы допускаются.
Деплой .NET приложений для самых маленьких. Часть 2. Github Actions
В прошлой статье мы рассмотрели чрезвычайно популярный инструмент для выкатки приложений Jenkins. Мы подружили его через плагины с SSH, с GitHub, построили простой пайплайн с помощью Groovy. И вроде все здорово, все работает как должно, но все равно есть ощущение, что можно сделать лучше. И действительно, наш процесс можно улучшить, перестав проводить сборку на VPS.
Ранее для сборки мы использовали агент Jenkins, который был установлен на нашем хостинге, где и происходила сборка приложения и его выкатка. Конечно, в реальных проектах существует больше одного боевого сервера, существуют промежуточные серверы – тестовые, демо, стейдж. Не всегда и везде, конечно, но когда у вас несколько серверов, то и сборку приложений можно проводить на каких-то промежуточных, а после всех тестов и проверок, рабочее собранное приложение доставлять до прода. Но у нас все по простому, сразу в прод и агент был там же.
В этой статье предлагаю воспользоваться альтернативным подходом – собирать наше приложение, не покидая репозиторий, никаких дополнительных программ, и никаких агентов. Одним из таких инструментов является GithubActions, который позволяет создавать пайплайн деплоя и настроить доставку приложения на хостинг различными способами.
Вычислительные выражения в F#
Цикл из одиннадцати статей Скотта Влащина, посвящённый вычислительным выражениям (computation expressions) в F#.
Вычислительные выражения: Оставшиеся стандартные методы
Скотт Влащин завершает рассказ о вычислительных выражениях в F#.
Сегодня поговорим про методы класса-построителя, с которыми мы ещё не сталкивались.
Ближайшие события
Вычислительные выражения: Добавляем ленивость
Скотт Влащин продолжает рассказ о вычислительных выражениях в F#.
Сегодня мы узнаем, как создавать ленивые вычислительные выражения.
Заметки по сериализации + System.Text.Json
Сериализация - важнейший механизм любого приложения, от поиска по фильтрам в онлайн магазинах, до сохранения прогресса в играх. Давайте коротко пройдемся по основным форматам сериализации и рассмотрим использование System.Text.Json
.
Апгрейд с Xamarin.Native на .NET 8
Привет Хабр!
Меня зовут Андрей и я Xamarin разработчик в компании EvApps. Для тех, кто занят в кроссплатформенной мобильной разработке на Xamarin не секрет, что Microsoft прекратил поддержку этой платформы и выкатил обновленную реализацию на чистом .NET. Речь о .NET Android, .NET iOS, MAUI и т.д. Поначалу мне казалось, ну сделали и сделали, что такого может случиться, но как это бывает беда всё же пришла.
Практическая реализация современной аутентификации на платформе .NET: OpenID Connect, шаблон BFF и SPA
Построение современной и надежной системы аутентификации — задача, которая требует тщательного подхода. В огромном количестве информации легко запутаться: многие материалы представлены в неструктурированном виде, а часть из них и вовсе описывает устаревшие или даже небезопасные в настоящее время методы и подходы. К тому же каноническое описание шаблона 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. В результате выполнения инструкций вы самостоятельно создадите полнофункциональное приложение с безопасной аутентификацией и надежным взаимодействием с внешними сервисами и разберетесь в его внутреннем устройстве и взаимодействии с другими сервисами.
Что на DotNext 2024 расскажут о практиках .NET-разработки, архитектуре, «кишочках» .NET и не только
До конференции DotNext 2024 осталась всего пара недель, и уже хорошо известно обо всех докладах, которые там будут. Все они делятся на четыре основных категории:
— Best practices: скажем, «Как собирать проекты просто» или «Как использовать АОП в .NET»
— Архитектура: например, про DDD или Serverless
— Internals: как в .NET всё устроено «под капотом»
— «Расширяем горизонты»: всё, что не подходит предыдущим категориям, но тоже полезно дотнетчикам. Например, знали ли вы, что «монады есть у нас дома», то есть в .NET есть аналог этой концепции?
Темы бывают и фундаментальными, вроде «Асинхронность за пределами async/await», и экзотическими, вроде «.NET для чайников» (ну то есть физических чайников с кухни). И вишенкой на всём этом — выступление о саморазвитии от Максима Дорофеева, который хорошо известен многим разработчикам своими материалами о продуктивности.
В этом посте — описания сразу всех докладов, разделённые на эти четыре блока:
Вычислительные выражения: Перегрузка
Скотт Влащин продолжает рассказ о вычислительных выражениях в F#.
Отклонимся от основной темы и поговорим, как в вычислительных выражениях можно использовать перегрузку функций.
Телеграм бот на C# с использованием Yandex Cloud Functions
Всем привет!
Данная статья содержит информация о том, как написать телеграм бота на C# с использованием Yandex Cloud Functions и Телеграм Webhook. Также в данной статье будет рассмотрено CI/CD с помощью GitHub Actions.
P.S. полезная литература находится в ссылках!
Вклад авторов
sidristij 3013.4XaocCPS 1863.6sahsAGU 1303.2olegchir 1250.6mezastel 1199.6SergVasiliev 1159.0SergeyT 1140.6phillennium 1079.6marshinov 888.2chernikov 822.0