Обновить
111.41

C# *

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

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

Пишем программы на C# для одноплатников: что, как и где на примере Orange Pi One

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

В своей жизни я обожаю как минимум три вещи: это C# (как и .NET в целом), интересное железо и одноплатные компьютеры. В Embedded-системах на Linux обычно принято писать код на C/C++ для решения чувствительных к производительности задач и интерпретируемых Lua/Python для быстрого прототипирования, которые стали популярны в встраиваемых устройствах сравнительно недавно. Однако о нативной разработке под одноплатники на C# практически ничего не слышно и я решил исправить это недоразумение! В сегодняшнем материале: рассмотрим, какие платформы .NET нам доступны на одноплатниках, научимся работать с GPIO и SPI в юзерспейсе, а также напишем практическое приложение, которое реализовывает драйвер дисплея и выводит на экран определенное изображение.
Читать дальше →

Паттерны проектирования в Unity: от Singleton до Object Pool

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

Паттерны проектирования в Unity: от Singleton до Object Pool

В этой статье мы подробно рассмотрим ключевые паттерны проектирования, такие как Singleton, Observer, Factory Method и Object Pool. Узнайте, как эти паттерны могут улучшить структуру вашего кода, повысить производительность игры и упростить управление ресурсами. Пошаговые примеры помогут вам внедрить эти методы в ваш проект и сделать его более масштабируемым и устойчивым.

Читать подробнее

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

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

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

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

Читать далее

.NET: итерируемую в foreach коллекцию изменять нельзя. Или…

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

Сегодня поговорим о неочевидной особенности некоторых коллекций в .NET. Долго вокруг да около ходить не будем и начнём с задачки на самопроверку.

Читать далее

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

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

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

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

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

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

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

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

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

Подборка докладов по С# 2023-2024

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

Недавно мы публиковали подборку докладов по C++, но не будем же мы обделять и C# разработчиков. Поэтому предлагаем вашему вниманию интересные доклады из мира .NET и C#.

Вперёд к новым знаниям!

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

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

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

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

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

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

Читать далее

typewriter: бесплатная программа, которая введёт любой текст за вас

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

Всем привет! Делюсь своей довольно простой программкой, полезной в таких ситуациях, когда нужно перенести некоторые количества текста в такие места, куда он простым буфером обмена не переносится, например - в remote console виртуального или физического сервера, как Proxmox или iBMC / iLO.

Исходный код и ссылки на скачивание - под катом.

Читать далее

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

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

В прошлой статье мы рассмотрели способы запуска наших проектов на удаленном VPS. Для этого мы арендовали хостинг, создали шаблонное приложение, перенесли его на хостинг через простое копирование через ssh и через git clone, запустили через dotnet run / dotnet publish, а также развернули приложение в докере.

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

Читать далее

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

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

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

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

Клятва на крови: контрактные тесты с Pact в .NET. Часть вторая

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

Продолжение темы использования библиотеки контрактного тестирования Pact для .NET. В первой части темы были рассмотрены теория и процесс контрактного тестирования взаимодействий по HTTP.

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

В этой статье подробнее остановимся на тестировании асинхронных коммуникаций на примере RabbitMq, а также познакомимся с инструментом PactBroker.

Читать далее

Клятва на крови: контрактные тесты с Pact в .NET. Часть первая

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

Необходимость написания тестов каждый определяет сам для себя. Модульные и интеграционные тесты вполне могут спасти нас от ошибок, вызванных нашей забывчивостью: убрали проверку на null или удалили строку сохранения сущности в БД? Хороший тест скорее всего обратит наше внимание на эту оплошность, и мы исправим её ещё до того, как задача перейдёт в стадию тестирования.

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

Есть ли способ зафиксировать контракт, обеспечить его неизменяемость и сделать результаты тестирования наглядными для всех участников взаимодействия? Да, библиотека Pact позволяет писать кроссплатформенные контрактные тесты, в результатах которых заинтересованы сразу несколько систем.

Читать далее

Гуманитарий с 0 знаний в программировании. 4 часть. Привет и пока, геймдев

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

Маленькие дети! Ни за что на свете. Не идите в геймдев, Игры создавать! В геймдеве реклама, В геймдеве обманы, В геймдеве большие деньги, Заработают на вас!

Но что же нам делать!?

Только лишь — качественная информация и самообразование!

Сохранить нервы, время и деньги

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

Как работает отрисовка в фреймворках на основе XAML

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

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

Сегодня хочу осветить один из таких аспектов работы, а именно то, как выполняется отрисовка разных данных и почему это вообще работает. В иллюстрирующих примерах буду использовать фреймворк AvaloniaUI.

Читать далее

Максимально точное увеличение разрешения изображений: билинейная аппроксимация

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

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

Продолжаем увеличивать апскейл...

Разработка сервиса для публикации препринтов. Архитектурный подход

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

Всем привет! Это мой первый пост на Хабре, в котором я бы хотел поделиться процессов разработки своего сервиса для публикации препринтов ScienceArchive.

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

С исходниками проекта также можно ознакомиться на GitHub.

Читать далее

Java и C#. История одного вдохновения

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

Вероятнее всего вы видели этот или похожий мемы. Когда я их видел, у меня возникал только один вопрос "А почему?". И я решил разобраться в истории сосуществования этих языков и их заимствований друг у друга

Читать далее

Быстрое вычисление степени

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

В статье описан процесс разработки алгоритма функции вычисления любой степени положительного числа, использующего «магическую константу». Приведены результаты её сравнения с исходной функцией вычисления обратного квадратного корня, а также со стандартной функцией вычисления степени Math.Pow.

Читать далее

Переход на .NET Aspire из отдельных проектов. Часть 2. Локальное развертывание с помощью Aspire

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

Эта статья является продолжением краткого туториала по переводу приложений на .Net Aspire. В ее рамках будет рассмотрено развертывание Aspire приложения в локальном кластере Kubernetes.

Читать далее

Переход на .NET Aspire из отдельных проектов. Часть 1. Перевод приложений в Aspire

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

Не так давно в свет вышел .NET Aspire - продукт для упрощения создания и публикации микросервисных приложений от Microsoft. В рамках данной статьи будет рассмотрен ручной переход на Aspire в "игрушечном" случае: пара небольших проектов, один из которых обращается к Postgres'у.

Читать далее

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