Обновить
117.55

C# *

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

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

Простое решение для автоматизации контроля за состоянием базы данных с использованием EF Core

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

Привет, Хабр! Меня зовут Кирилл Салихов, и я занимаюсь разработкой бизнес-приложений на платформе .NET в компании КРОК. При оптимизации процессов развертывания приложений возник вопрос о том, как эффективно хранить SQL-код, предназначенный для применения к базе данных, чтобы избежать необходимости в ручном труде и перемещении файлов.

В короткой статье дам пошаговую инструкцию автоматического применения миграций к базе данных и управлению представлениями и процедурами, без всяких сиай/сиди…

So what if I swagger?

GraphQL для C#. БД прилагается

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

Приветствую, Хабр! Относительно недавно я решил влиться в С# и его технологию для создания веб-приложений ASP.NET. До этого писал в основном на С++ и Python с Django. Ну а так как я по жизни практик, то и чтоб чему-то научиться, надо что-то сделать, пусть и корявенькое (хотя пару книжек, конечно, прочитал). Выбор пал на стандартное приложение магазина книг, а точнее его бэк составляющую, ибо с дизайном и любыми, даже базовыми, проявлениями фронтовой части я не дружу от слова совсем)

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

Читать далее

Совместить DDD и MVVM: Разработка приложения-трекера расходов по правилу 50-30-20 на .NET MAUI

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

Всем привет! Сегодня я бы хотел рассказать вам про свое приложение Profitocracy, которое помогает мне следить за личными расходами, а также автоматически планировать бюджет на месяц.

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

Читать далее

Лента Мёбиуса, биомеханические прыжки, мягкие посадки и PD-контроллер

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

Продолжаю описание внутреннего устройства шаблона 3D-игры с ходьбой по ленте Мёбиуса.

В прошлой статье рассмотрена генерация самой ленты Мёбиуса и расчет вектора локальной гравитации. Если есть гравитация, значит, есть прыжки и падения. Их и рассмотрим.

Идём прыгать на ленте Мёбиуса!

К чистому коду через рефакторинг

Время на прочтение13 мин
Количество просмотров6.2K
Чистые функции — это такие методы, при выполнении которых не возникает побочных эффектов. В функциональном программировании чистые функции — скорее правило, чем исключение. Но в большинстве объектно-ориентированных языков с ними приходится сталкиваться нечасто, или, как минимум, они редко считаются предпочтительным вариантом. В дотнет-среде серьёзный акцент делается на внедрении зависимостей и более-менее обширных абстракциях, использующих интерфейсы.

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

Знакомство с гипермедийными системами на ASP.NET Core 8.0

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

Быстрый старт с HTMX 2.0. Знакомство с гипермедийными системами на основе современной серверной платформы ASP.NET Core.

Гипермедийные системы облегчают создание прежде всего низконагруженных веб-приложений.

Читать далее

Вот здесь точно нужен рефакторинг, есть идеи?

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

Бывают пет-проекты, а у нас получился проект с наработками, которые вроде бы могут быть полезны например студентам технических специальностей и просто всем кому интересно поразбираться с возможностями визуализации на C# + WPF, например, или с системой избыточного кодирования.

Мы со студентами сделали приложение для анализа характеристик LDPC кодов изначально на Java (Java код тоже присутствует в репозитории) потом я переписал его в виде проекта C# + WPF, чтобы добавить возможность конфигурации статистических экспериментов через визуальный интерфейс, а главное чтобы иметь возможность визуализации результатов экспериментов в виде графиков (обычных, в X, Y осях). Я как раз для работы сделал библиотеку для рисования обычных математических графиков по массивам значений с возможностью масштабирования области просмотра мышкой.

Думаю студентам любых технических направлений может пригодиться такая библиотека при том, что весь ее достаточно компактный исходный код (5-7 файлов) локализован в проекте и доступен как для изучения так и для любых изменений и доработок.

Под катом ссылка на Гит-репозиторий с исходным кодом и обзор реализованной функциональности со скриншотами.

Читать далее

Гипермедийные системы на ASP.NET MVC 5. Часть третья — окончание

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

Окончание статьи по быстрой разработке гипермедиа-ориентированного веб-приложения с HTMX 2.0.

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

В статье будет использоваться библиотека Htmx.js вместе с устаревшей серверной платформой ASP.NET MVC 5.

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

Оптимизация небрежно написанного маппера

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

В один день тестировщик пришла к программистам с вопросами об эндоинте, который работает "вечно". Сие утверждение было странным, потому как ранее его не замечали, но было одно НО. Пару дней до этого случилось долгожданное событие - нам предоставили полноценный бекап тестовой базы, который конечно же мы быстренько залили на наши тестовые энвы вместо нагенерированных данных. В следующие несколько дней было обнаружено ещё с десяток "вечно" работающих эндпоинтов, но в этой статье будет исправление только одного из них, который работал около 30 секунд на тестовом маломощном окружении и около 16 секунд на моем ПК.

Подробности внутри

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

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

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

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

Читать далее

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

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

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


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


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


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


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

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

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

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

Читать далее

Применение Identity Server 4 в распределенном монолите

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

Некоторое время назад перед нами возникла задача разграничения прав доступа к ресурсам, то есть задача аутентификации и управления аутентификацией. Поскольку архитектура основных проектов представляла нечто похожее на распределенный монолит, мы решили остановиться на Identity Server.

Читать далее

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

Глубокое погружение в CancellationToken: эффективное управление отменой в .NET

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

Привет, Хабр! Меня зовут Давид, я C#-разработчик в SimbirSoft. В современном программировании эффективное управление ресурсами и контроль за выполнением задач становятся ключевыми аспектами для создания надежных и масштабируемых приложений. В C# одним из важнейших инструментов в для достижения этих целей является механизм Cancellation Token. Эта концепция позволяет разработчикам изящно и безопасно управлять долгосрочными или ресурсоемкими операциями, обеспечивая возможность их отмены по требованию.

В этой статье мы погрузимся в мир Cancellation Token в C#, исследуя его роль, принципы работы и практическое применение. Мы обсудим, как эта технология позволяет разработчикам улучшить производительность и надежность их приложений, а также — как избежать распространенных ошибок при работе с асинхронными операциями. Подробно рассмотрим примеры кода, демонстрирующие использование Cancellation Token в различных сценариях, что сделает наше обсуждение не только теоретически насыщенным, но и довольно практичным для программистов любого уровня.

Читать далее

Управление секретами IT-инфраструктуры

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

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

Что вы получите от статьи?

В статье будет показан практический пример применения шифрования и комбинацией разных видов шифрования. Также вы узнаете базовые принципы работы цифровой подписи и криптографии. Ссылка на исходный код проекта доступна в конце статьи.

Зачем это нужно?

У компании, в которой я проходил практику, есть около 60 веб-сервисов и приложений, которые продолжают улучшаться и поддерживаться. У каждого сервиса есть в среднем около 15-20 секретов, например: логин и пароль от админки, API-ключи, строки подключения к БД, ключи шифрования и т.д. Обычно они хранятся в специальных файлах конфигурации проекта (appsettings.json) либо прямо в коде. Управлять ими в таком формате, когда они разбросаны по разным репозиториям и файлам, проблематично. Под "управлять" я имею в виду такие действия, как получение и периодическое обновление секретов. Передаются эти секреты между разработчиками обычно через мессенджеры, что приводит к их расползанию.

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

Показать полностью

Proton Mail в командной строке: пошаговая инструкция

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

Привет, Хабр!

В этом посте мы расскажем, как подключить учетную запись Proton Mail в Eppie CLI — консольный клиент Eppie.

Proton Mail использует при аутентификации протокол Secure Remote Password (SRP) — обычные почтовые клиенты его не поддерживают. В Eppie SRP реализован (мы об этом уже рассказывали здесь), попробовать можно уже сейчас, если скачать наше CLI приложение. Вся настройка займет минуту.

Прежде чем мы начнем, возможно, вам захочется узнать больше об Eppie. Это наш GitHub. Кое-что можно почитать и здесь, на Хабре. А теперь к делу.

Читать далее

Кликер на Unity с использованием нейросети для генерации графики

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

Разработка кликера на Unity под ПК/Андроид и быстрое создание графики при помощи пиксель-арт нейросети.

Ну типа... Читать

Хостинг приложения Asp.Net Core Blazor c БД PostgreSQL на сервер через git push

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

В этой статье мы рассмотрим, как развернуть на сервере Asp.Net приложение. Подключим его к PostgreSQL и сделаем так, чтобы доставка обновлений осуществлялась через простое обновление кода в Git-репозитории.

Читать далее

Музыкальное время и MIDI

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

В статье завершим цикл материалов по преобразованию MIDI-времени в другие форматы. Попутно столкнёмся с неожиданным приступом оверинжиниринга, напишем микроскопическое количество кода и откроем для себя неправильную музыку.

Читать далее

Просто, но быстро. Телеграм бот на коленке

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

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

Иногда бывает так, что возникает необходимость создать собственного телеграм-бота. Меня тоже коснулся этот момент. Начав искать готовые решения, столкнулся с небольшим разочарованием: оказалось, что подходящих фреймворков нет, и придется разрабатывать бота с нуля.

Не страшно! В этой статье я поделюсь с вами всеми этапами создания собственного фреймворка для телеграм-бота с использованием C#.

Читать далее

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