Как стать автором
Обновить
106.05

.NET *

Хаб со знаниями про .NET

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

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

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

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

Читать далее
Всего голосов 5: ↑4 и ↓1+4
Комментарии2

Новости

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

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

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

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии17

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

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

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

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

Читать далее
Всего голосов 5: ↑0 и ↓5-5
Комментарии8

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

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

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

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

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

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

Читать далее
Всего голосов 3: ↑3 и ↓0+4
Комментарии9

Истории

О том, как я пытался сделать свой агрегатор фриланс-проектов, но он не взлетел

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

История о том, как я хотел сделать свой собственный агрегатор проектов с фриланс-бирж, и о том как в конечном итоге у меня ничего не получилось, несмотря на то что технически всё-таки получилось.

Читать далее
Всего голосов 15: ↑13 и ↓2+13
Комментарии17

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

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

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

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

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

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

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


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


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


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


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

Читать дальше →
Всего голосов 2: ↑1 и ↓10
Комментарии2

.NET Digest #3

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

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

Читать далее
Всего голосов 28: ↑28 и ↓0+32
Комментарии0

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

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


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

Исходники проекта
Читать дальше →
Всего голосов 33: ↑32 и ↓1+52
Комментарии10

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

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

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

Читать далее
Всего голосов 13: ↑11 и ↓2+14
Комментарии18

Деплой .NET приложений для самых маленьких. Часть 2. Github Actions

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

В прошлой статье мы рассмотрели чрезвычайно популярный инструмент для выкатки приложений Jenkins. Мы подружили его через плагины с SSH, с GitHub, построили простой пайплайн с помощью Groovy. И вроде все здорово, все работает как должно, но все равно есть ощущение, что можно сделать лучше. И действительно, наш процесс можно улучшить, перестав проводить сборку на VPS.

Ранее для сборки мы использовали агент Jenkins, который был установлен на нашем хостинге, где и происходила сборка приложения и его выкатка. Конечно, в реальных проектах существует больше одного боевого сервера, существуют промежуточные серверы – тестовые, демо, стейдж. Не всегда и везде, конечно, но когда у вас несколько серверов, то и сборку приложений можно проводить на каких-то промежуточных, а после всех тестов и проверок, рабочее собранное приложение доставлять до прода. Но у нас все по простому, сразу в прод и агент был там же.

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

Читать далее
Всего голосов 17: ↑16 и ↓1+26
Комментарии2

Вычислительные выражения в F#

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

Цикл из одиннадцати статей Скотта Влащина, посвящённый вычислительным выражениям (computation expressions) в F#.

Читать далее
Всего голосов 5: ↑4 и ↓1+8
Комментарии3

Вычислительные выражения: Оставшиеся стандартные методы

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

Скотт Влащин завершает рассказ о вычислительных выражениях в F#.

Сегодня поговорим про методы класса-построителя, с которыми мы ещё не сталкивались.

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн

Вычислительные выражения: Добавляем ленивость

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

Скотт Влащин продолжает рассказ о вычислительных выражениях в F#.

Сегодня мы узнаем, как создавать ленивые вычислительные выражения.

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

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

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

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

Читать далее
Всего голосов 7: ↑6 и ↓1+8
Комментарии3

Апгрейд с Xamarin.Native на .NET 8

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

Привет Хабр!

Меня зовут Андрей и я Xamarin разработчик в компании EvApps. Для тех, кто занят в кроссплатформенной мобильной разработке на Xamarin не секрет, что Microsoft прекратил поддержку этой платформы и выкатил обновленную реализацию на чистом .NET. Речь о .NET Android, .NET iOS, MAUI и т.д. Поначалу мне казалось, ну сделали и сделали, что такого может случиться, но как это бывает беда всё же пришла.

Читать далее
Всего голосов 19: ↑19 и ↓0+21
Комментарии5

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

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

Построение современной и надежной системы аутентификации — задача, которая требует тщательного подхода. В огромном количестве информации легко запутаться: многие материалы представлены в неструктурированном виде, а часть из них и вовсе описывает устаревшие или даже небезопасные в настоящее время методы и подходы. К тому же каноническое описание шаблона 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. В результате выполнения инструкций вы самостоятельно создадите полнофункциональное приложение с безопасной аутентификацией и надежным взаимодействием с внешними сервисами и разберетесь в его внутреннем устройстве и взаимодействии с другими сервисами.

Читать далее
Всего голосов 5: ↑4 и ↓1+6
Комментарии8

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

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

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

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

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

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

Читать далее
Всего голосов 9: ↑9 и ↓0+13
Комментарии4

Вычислительные выражения: Перегрузка

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

Скотт Влащин продолжает рассказ о вычислительных выражениях в F#.

Отклонимся от основной темы и поговорим, как в вычислительных выражениях можно использовать перегрузку функций.

Читать далее
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

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

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

Всем привет!

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0+11
Комментарии12
1
23 ...

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

Работа

.NET разработчик
52 вакансии