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

.NET *

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

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

Как провести курс для разработчиков (за 1.5 млн) в маленькой компании и не сойти с ума

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

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

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

Microsoft PowerToys: Король GitHub среди C# проектов с C++ ошибками

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

Microsoft PowerToys – это мощный и полезный инструмент. Он не только упрощает некоторые сценарии работы с Windows, но и привносит новые. А еще он занимает первую строчку топа по звездам на GitHub среди C# проектов. Посмотрим, насколько хорошо пишут код его разработчики, и узнаем, при чём здесь C++!

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

Искусство создания безопасных и надежных приложений

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

 Как сказал в свое время известный программист Эдсгер Вибе Дейкстра: «Программирование – это искусство контроля сложности». Чтобы достичь этого контроля необходимо не только уметь писать код, но и понимать, какие уязвимости могут возникнуть в процессе его выполнения. Поэтому среди множества проблем (особенно в начале пути в разработке): выбор идеи, оценка актуальности, построение архитектуры приложения, его внешнего вида, соблюдение чистоты кода и других, – не стоит забывать про важную часть любой разработки – про безопасность кода.

 

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

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

Микросервис отправки писем через smtp Yandex .Net Web Api MailKit

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

Эта статья предназначена для новичков и рассматривает микросервис отправки писем через smtp Yandex с использованием .Net Web Api и MailKit. В ней будет рассмотрено, как настроить и использовать данный микросервис для отправки писем с помощью почтового сервиса через существующий почтовый ящик Яндекса.

Ссылки для понимания и работы

GitHub Документация Яндекс

Дерево проекта:

Читать далее
Всего голосов 11: ↑5 и ↓6-1
Комментарии16

Истории

Как можно использовать .NET из Javascript (React) в 2023 году

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

Статья показывает опыт использования .NET из JavaScript (React) с помощью компиляции .NET кода в WebAssembly с помощью новых возможностей .NET 7. Включает инструкцию по созданию проекта для .NET для использования из Javascript, и интеграции его в веб-приложение, написанного с использованием React. Рассматривается также сборка такого проекта с помощью GitHub Actions (CI) и хостинг его на GitHub Pages. Содержатся ссылки репозитории на GitHub тестового и реального проекта, использующие данный подход.

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

Уязвимость XXE в .NET 6 SDK: с чем боролись…

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


Современный .NET даёт разработчикам защиту от XXE из коробки: парсишь себе XML и не забиваешь голову всякими DTD, сущностями и связанной с ними безопасностью. Разве не прекрасно? Однако жизнь — штука с иронией...


Под катом — разбор по кусочкам XXE из .NET 6 SDK: код, причины дефекта безопасности, фикс.

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

Изучаем Q#. Статистическое сравнение двух последовательностей чисел

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

Добро пожаловать в новый мир новых технологий вычислений!

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

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

Одним из таких критериев "похожести" является совпадение частотных характеристик этих последовательностей.

Рассмотрим вопрос, как реализовать такую проверку с использованием квантовых вычислений и напишем программку-тест на Q-sharp для проверки этих рассуждений.

Для понимания данного туториала вам потребуются базовые знания по

теории вероятности

алгебре

булевым функциям

свёртке, корреляции, скалярному произведению

квантовым вычислениям (кубиты и трансформации)

программированию на Q-sharp

Добро пожаловать, дорогу осилит идущий ...
Всего голосов 1: ↑1 и ↓0+1
Комментарии3

Мал, да удал. ASCADA. Простейшая система диспетчеризации (SCADA) для Arduino и других микроконтроллеров

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

Я, как любой другой любитель «поковыряться» в различных железках, связанных с датчиками, микроконтроллерами и сопутствующих штуках, несколько лет назад столкнулся с необходимостью связать очередную микроконтроллерную историю с ПК, а именно, мне нужно было выводить в реальном времени значения различных сигналов с микроконтроллера на дисплей компьютера в виде различных графиков, прогресс‑баров, а также, с помощью кнопок и ползунков управлять моим «железом».

Имея достаточный опыт работы с промышленными SCADA‑системами было принято написать свою! Да такую, чтобы с ней справился совсем уж начинающий программист.

Рад поделиться своими наработками и буду вдвойне рад если это пригодится еще кому‑то еще кроме меня!

Узнать подробнее про ASCADA
Всего голосов 25: ↑25 и ↓0+25
Комментарии45

Занимательная задача с микросервисами в .NET

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

Необходимо реализовать возможность приёма транзакций от разных клиентов для процессинга и дальнейшей отправки в разные банки. Клиенты могут присылать как равномерно (например, по 1шт в секунду), так и большими пачками (1000шт каждый час или 10000 раз в день), банки обрабатывают транзакции последовательно.

Для простоты интеграции необходимо использовать REST API для приёма транзакций

Необходимо исключить ситуации, когда:

Тысячи клиентов по несколько транзакции ожидают двух, у которых по 10000 транзакций

Несколько клиентов по 10000 ждут тысячи клиентов по несколько транзакций.

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

Обзор нововведений в C# 12

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

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

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

Изучаем Q#. Алгоритм Гровера. Не будите спящего Цезаря

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

Криптохомячкам посвящается ...


Алгоритм Гровера представляет собой обобщённый, независящей от конкретной задачи поиск, функция которого представляет "чёрный ящик" f: {0,1}^n to {0,1}^n, для которой известно, что EXISTS!w:f(w)=a, где a — заданное значение.


Считаем, что для f и заданного a можно построить оракул Uf: { |w> to |1>, |x> to |0> if |x> != |w> }


Алгоритм Гровера достаточно прост


  1. Задаём в регистре (массиве кубитов) начальное значение H|0>
  2. Повторяем несколько раз (исходя из оценки) пару трансформаций над регистром
    • Отражение от решения Uw: { |w> to -|w>, |x> to |x> if |x> != |w> } или Uw = I-2|w><w|
    • Отражение от s=H|0> Us = 2|s><s|-I
  3. Забираем нужное решение из регистра (с большой долей вероятности, что оно правильное)

Не будите спящего Цезаря!


Применим этот алгоритм для решения задачи нахождения ключа шифра Цезаря ...

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

PVS-Studio помогает оптимизировать проекты на Unity Engine

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

Недавно анализатор PVS-Studio начал выдавать предупреждения о возможностях оптимизации кода в проектах под Unity Engine. Какие они, эти предупреждения? Как анализатор понимает, какой код стоит оптимизировать? Почему это сделано именно для Unity? Ответы в заметке.

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

Общий буфер обмена для Windows/Linux систем, с активацией по требованию

Время на прочтение3 мин
Количество просмотров8.8K
image

Виртуальные машины плотно вошли в мое рабочее окружение, VMware, VirtualBox, Hyper-V и RDP. Наличие поддержки у них общего буфера обмена — это удобная возможность обмена данными между системами. Но есть и ряд минусов:

  • Автоматическая синхронизация буфера обмена далеко не безопасна, можно случайно «засветить» чувствительные данные в другой системе.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии6

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

Обзор библиотек для Hangfire

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

Hangfire — распределенный и расширяемый планировщик задач для приложений на.NET.

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

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

Пишем код, когда пишем код: сорс-генераторы

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

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

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

Пять забавных странностей в коде Entity Framework Core

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

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

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

Изучаем Q#. Делаем реализацию биноминального распределения

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

Биномиальное распределение с параметрами n и p в теории вероятностей — распределение количества «успехов» в последовательности из n независимых случайных экспериментов, таких, что вероятность «успеха» в каждом из них постоянна и равна p.

Рассмотрим случай, когда p=0.5 - это делается только для упрощения примера.

В этом случае, согласно теории, вероятность выпадения исхода k на вероятностном пространстве из целых чисел равно P(k)=C(k,n)/2**n, где C(k,n) = n!/(k!(n-k)!) - коэффициент бинома Ньютона.

Поставим перед собой цель - сформировать в массиве кубитов, который мы будем рассматривать как регистр из нескольких кубитов, состояние SUM SQRT(C(k,n))|k>

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

Особенности национальной автоматизации

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

Так сложилось, что я на данный момент работаю автоматизатором тестирования, до недавнего момента моим основным стеком в работе был C# + Selenium 3, однако не так давно было принято решение о переходе на Playwright и в данной статье я решил рассказать о своем опыте перехода с Selenium на Playwright и о том с каким трудностями и подводными камнями я столкнулся во время данного перехода.

Читать полностью
Всего голосов 4: ↑3 и ↓1+2
Комментарии13

Многопоточность в Photon Plugin

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

Плагины в фотоне предназначены для того, чтобы запускать какую-то свою логику на своём Photon облаке. Так же даже если используется Photon SDK плагин является более быстрым способом, получить что-то работающее без погружения в дебри SDK.

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

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

Pure.DI помогает сделать DI чистым

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

В статье поговорим о Dependency Injection. Обсудим что такое чистый DI, коснемся DI контейнеров и их эволюции. В основной части речь пойдет о генераторе исходного кода Pure.DI и о том, как он помогает создавать приложения в парадигме чистого DI.

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

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

Работа

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