Не получилось нанять действительно толковых джунов с рынка – воспитайте их сами. Рассказываю, как получилось реализовать идею летней стажировки, и предостерегаю от ошибок, которые мы совершили.
.NET *
Хаб со знаниями про .NET
Microsoft PowerToys: Король GitHub среди C# проектов с C++ ошибками
Microsoft PowerToys – это мощный и полезный инструмент. Он не только упрощает некоторые сценарии работы с Windows, но и привносит новые. А еще он занимает первую строчку топа по звездам на GitHub среди C# проектов. Посмотрим, насколько хорошо пишут код его разработчики, и узнаем, при чём здесь C++!
Искусство создания безопасных и надежных приложений
Как сказал в свое время известный программист Эдсгер Вибе Дейкстра: «Программирование – это искусство контроля сложности». Чтобы достичь этого контроля необходимо не только уметь писать код, но и понимать, какие уязвимости могут возникнуть в процессе его выполнения. Поэтому среди множества проблем (особенно в начале пути в разработке): выбор идеи, оценка актуальности, построение архитектуры приложения, его внешнего вида, соблюдение чистоты кода и других, – не стоит забывать про важную часть любой разработки – про безопасность кода.
В этой статье разберем основные моменты, которые необходимо учесть при разработке приложения с точки зрения безопасности.
Микросервис отправки писем через smtp Yandex .Net Web Api MailKit
Эта статья предназначена для новичков и рассматривает микросервис отправки писем через smtp Yandex с использованием .Net Web Api и MailKit. В ней будет рассмотрено, как настроить и использовать данный микросервис для отправки писем с помощью почтового сервиса через существующий почтовый ящик Яндекса.
Ссылки для понимания и работы
Дерево проекта:
Истории
Как можно использовать .NET из Javascript (React) в 2023 году
Статья показывает опыт использования .NET из JavaScript (React) с помощью компиляции .NET кода в WebAssembly с помощью новых возможностей .NET 7. Включает инструкцию по созданию проекта для .NET для использования из Javascript, и интеграции его в веб-приложение, написанного с использованием React. Рассматривается также сборка такого проекта с помощью GitHub Actions (CI) и хостинг его на GitHub Pages. Содержатся ссылки репозитории на GitHub тестового и реального проекта, использующие данный подход.
Уязвимость XXE в .NET 6 SDK: с чем боролись…
Современный .NET даёт разработчикам защиту от XXE из коробки: парсишь себе XML и не забиваешь голову всякими DTD, сущностями и связанной с ними безопасностью. Разве не прекрасно? Однако жизнь — штука с иронией...
Под катом — разбор по кусочкам XXE из .NET 6 SDK: код, причины дефекта безопасности, фикс.
Изучаем Q#. Статистическое сравнение двух последовательностей чисел
Добро пожаловать в новый мир новых технологий вычислений!
В быту, когда мы смотрим на разные предметы, мы пытаемся понять - похожи ли они или нет, и на сколько они похожи.
Так и в математике - когда мы смотрим на последовательностей чисел, мы пытаемся понять - похожи ли они или нет, и насколько они похожи.
Одним из таких критериев "похожести" является совпадение частотных характеристик этих последовательностей.
Рассмотрим вопрос, как реализовать такую проверку с использованием квантовых вычислений и напишем программку-тест на Q-sharp для проверки этих рассуждений.
Для понимания данного туториала вам потребуются базовые знания по
теории вероятности
алгебре
булевым функциям
свёртке, корреляции, скалярному произведению
квантовым вычислениям (кубиты и трансформации)
программированию на Q-sharp
Мал, да удал. ASCADA. Простейшая система диспетчеризации (SCADA) для Arduino и других микроконтроллеров
Я, как любой другой любитель «поковыряться» в различных железках, связанных с датчиками, микроконтроллерами и сопутствующих штуках, несколько лет назад столкнулся с необходимостью связать очередную микроконтроллерную историю с ПК, а именно, мне нужно было выводить в реальном времени значения различных сигналов с микроконтроллера на дисплей компьютера в виде различных графиков, прогресс‑баров, а также, с помощью кнопок и ползунков управлять моим «железом».
Имея достаточный опыт работы с промышленными SCADA‑системами было принято написать свою! Да такую, чтобы с ней справился совсем уж начинающий программист.
Рад поделиться своими наработками и буду вдвойне рад если это пригодится еще кому‑то еще кроме меня!
Занимательная задача с микросервисами в .NET
Необходимо реализовать возможность приёма транзакций от разных клиентов для процессинга и дальнейшей отправки в разные банки. Клиенты могут присылать как равномерно (например, по 1шт в секунду), так и большими пачками (1000шт каждый час или 10000 раз в день), банки обрабатывают транзакции последовательно.
Для простоты интеграции необходимо использовать REST API для приёма транзакций
Необходимо исключить ситуации, когда:
Тысячи клиентов по несколько транзакции ожидают двух, у которых по 10000 транзакций
Несколько клиентов по 10000 ждут тысячи клиентов по несколько транзакций.
Обзор нововведений в C# 12
Уже середина осени, а это значит, что новая версия C# на пороге. Самое время узнать, какие изменения настигнут язык совсем скоро. Хоть количество нововведений в этот раз уступает предыдущим релизам, интересных среди них немало.
Изучаем Q#. Алгоритм Гровера. Не будите спящего Цезаря
Криптохомячкам посвящается ...
Алгоритм Гровера представляет собой обобщённый, независящей от конкретной задачи поиск, функция которого представляет "чёрный ящик" 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> }
Алгоритм Гровера достаточно прост
- Задаём в регистре (массиве кубитов) начальное значение H|0>
- Повторяем несколько раз (исходя из оценки) пару трансформаций над регистром
- Отражение от решения Uw: { |w> to -|w>, |x> to |x> if |x> != |w> } или Uw = I-2|w><w|
- Отражение от s=H|0> Us = 2|s><s|-I
- Забираем нужное решение из регистра (с большой долей вероятности, что оно правильное)
Применим этот алгоритм для решения задачи нахождения ключа шифра Цезаря ...
PVS-Studio помогает оптимизировать проекты на Unity Engine
Недавно анализатор PVS-Studio начал выдавать предупреждения о возможностях оптимизации кода в проектах под Unity Engine. Какие они, эти предупреждения? Как анализатор понимает, какой код стоит оптимизировать? Почему это сделано именно для Unity? Ответы в заметке.
Общий буфер обмена для Windows/Linux систем, с активацией по требованию
Виртуальные машины плотно вошли в мое рабочее окружение, VMware, VirtualBox, Hyper-V и RDP. Наличие поддержки у них общего буфера обмена — это удобная возможность обмена данными между системами. Но есть и ряд минусов:
- Автоматическая синхронизация буфера обмена далеко не безопасна, можно случайно «засветить» чувствительные данные в другой системе.
Ближайшие события
Обзор библиотек для Hangfire
Hangfire — распределенный и расширяемый планировщик задач для приложений на.NET.
В этой статье я сделал небольшой обзор библиотек позволяющих расширить его возможности. Если вы не знаете что такое Hangfire, советую прочитать эту статью или заглянуть на официальный сайт.
Пишем код, когда пишем код: сорс-генераторы
Всем привет! Я Олег, ведущий разработчик в Тинькофф. Расскажу историю про сорс-генераторы и почему именно генерацию кода мы выбрали для решения нашей задачи. Будут неожиданности и открытия, которые мотивировали нас двигаться дальше.
Пять забавных странностей в коде Entity Framework Core
Разработкой Entity Framework Core занимаются профессионалы, не допускающие ошибок благодаря опыту, ревью и мощной системе тестирования. Впрочем, даже в таком проекте не без приколов. Перед вами статья о странностях, укрывшихся от взгляда разработчиков высшего класса.
Изучаем Q#. Делаем реализацию биноминального распределения
Биномиальное распределение с параметрами 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>
Особенности национальной автоматизации
Так сложилось, что я на данный момент работаю автоматизатором тестирования, до недавнего момента моим основным стеком в работе был C# + Selenium 3, однако не так давно было принято решение о переходе на Playwright и в данной статье я решил рассказать о своем опыте перехода с Selenium на Playwright и о том с каким трудностями и подводными камнями я столкнулся во время данного перехода.
Многопоточность в Photon Plugin
Плагины в фотоне предназначены для того, чтобы запускать какую-то свою логику на своём Photon облаке. Так же даже если используется Photon SDK плагин является более быстрым способом, получить что-то работающее без погружения в дебри SDK.
В процессе создания плагина случается, что разработчики реализуют свои решения, упуская факт, что мы работаем в конкурентной среде и необходимо предпринимать дополнительные усилия, чтобы всё заработало правильно. Сатья о том, как сделать всё правильно.
Pure.DI помогает сделать DI чистым
В статье поговорим о Dependency Injection. Обсудим что такое чистый DI, коснемся DI контейнеров и их эволюции. В основной части речь пойдет о генераторе исходного кода Pure.DI и о том, как он помогает создавать приложения в парадигме чистого DI.
Вклад авторов
sidristij 3013.4XaocCPS 1863.6sahsAGU 1303.2olegchir 1250.6mezastel 1199.6SergeyT 1140.6SergVasiliev 1121.0phillennium 1062.6marshinov 888.2chernikov 822.0