Обновить
103.01

C# *

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

Шаблон Go-микросервиса для начинающих от .NET разработчика. Часть 1

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

Привет, Хабр! У многих разработчиков на .NET вызывает интерес относительно свежий язык программирования Go (Golang). Однако при поиске информации и учебных материалов он может отпугивать. Нам предлагается забыть все удобное и красивое, чему нас научила .NET, и принять что-то новое, но кажущееся непривычным и не всегда приятным.

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

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

Читать далее

.NET Aspire — империя дотнета наносит ответный удар

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

Когда я первый раз услышал про .NET Aspire, я подумал что это какая-то очередная лажа от Майкрософта, про которую все забудут через неделю.

Особенно, учитывая какую дичь часто завозят в шарп (например те же ужасно спроектированные Primary Constructor'ы про которые я писал, или вот прикол-пропозал от самого Тоуба). Так что ожидания у меня, честно говоря, были ниже нуля.

Но попробовав его лично, я был, честно говоря, шокирован. Трепещите, жависты!! Трепещите гошники! Трещепищите питонисты - такого вы еще точно не видели.

Я даже представить не мог, что DevEx можно сделать настолько офигительным.

Узнать про Aspire без смс и регистрации

Desktop приложение для хранения текстовой информации

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

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

Читать далее

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