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

Пользователь

Отправить сообщение

28 расширений VS Code для разработки документации

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

Плагины VS Code, без которых техническим писателям и разработчикам документации жить можно, но сложно. В подборке — линтеры, форматирование, работа с git, проектирование API, подготовка схем и милота для удобной разработки.

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

Использование выводов DTR, RTS и CTS от UART для своих делишек

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

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

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

Запускаем .NET на RISC-V и разрабатываем IoT приложение для Sipeed Lichee RV

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

До недавнего времени разрабатывать IoT приложения на C# можно было только для компьютеров построенных на архитектуре ARM или x86. Поддержка RISC-V процессоров для платформы .NET уже давно в стадии разработки. В начале этого года был представлен не официальный .NET 8.0 SDK, который уже сейчас вы сможете запустить на RISC-V процессоре под ОС Debian/Ubuntu. В качестве платформы запуска возьмем одноплатный компьютер Sipeed Lichee RV на RISC-V процессоре Allwinner D1 (ядро Alibaba/T-Head Xuantie C906 RISC-V). В первой части поста рассмотрим установку .NET 8.0 SDK на Sipeed Lichee RV. Во второй, запустим приложение для работы с контактами GPIO и датчиком BME280 для замера температуры, влажности и давления.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+28
Комментарии14

Руководство начинающего программиста графических шейдеров

Время на прочтение8 мин
Количество просмотров44K
Умение писать графические шейдеры открывает перед вами всю мощь современных GPU, которые сегодня уже содержат в себе тысячи ядер, способных выполнять ваш код быстро и параллельно. Программирование шейдеров требует несколько иного взгляда на некоторые вещи, но открывающийся потенциал стоит некоторых затрат времени на его изучение.

Практически каждая современная графическая сцена являет собой результат работы некоторого кода, написанного специально для GPU — от реалистичных эффектов освещения в новейших ААА-играх до 2D-эффектов и симуляции жидкости.

image
Сцена в Minecraft до и после применения нескольких шейдеров.

Цель этой инструкции


Программирование шейдеров иногда кажется загадочной черной магией. Тут и там можно встретить отдельные куски кода шейдеров, которые обещают вам невероятные эффекты и, возможно, вправду способны их обеспечить — но при этом совершенно не объясняют, что именно они делают и как добиваются столь впечатляющих результатов. Данная статья попробует закрыть этот пробел. Я сфокусируюсь на базовых вещах и терминах, касающихся написания и понимания шейдерного кода, так что впоследствии вы сами сможете менять код шейдеров, комбинировать их или писать свои собственные с нуля.
Читать дальше →
Всего голосов 94: ↑90 и ↓4+86
Комментарии40

WPF: Нестандартное окно

Время на прочтение7 мин
Количество просмотров161K
На днях, после долгого перерыва, надо было поработать на WPF, и возникло желание заменить поднадоевший стандартный вид окон Windows 7 на что-нибудь более вдохновляющее, скажем в стиле Visual Studio 2012:



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

WPF, WinForms: рисуем Bitmap c >15000 FPS. Хардкорные трюки ч.1

Время на прочтение4 мин
Количество просмотров43K
Сразу уточнение: Bitmap 200x100 на компе с быстрой памятью и i7 3930K на 1366. Но, это честный System.Drawing.Bitmap.
Вводная: приложение типа осциллографа. Ссылка на готовый проект с фронтэндом в конце статьи.
Как же быстро рисовать его на экран? WriteableBitmap хорош, быстр, и он лучшее решение для WP, WinRT, WPF. Но занудного старпёра-кодера также волнует WinForms, .Net 2.0, Win2K (да-да, в некоторых гос.органах до сих пор теплый ламповый Win2K).
Далее, я обратил внимание на DirectX, тем более у нас для WPF появился полезный контрол D3DImage. Я перепробовал много движков, но ни один из них не давал удобного изящного способа рисовать GDI+ Bitmap из памяти. Некоторые работали и вовсе только с DX10-11. Ближе всех к цели оказался SlimDX. В любом случае, фронтэнд для контрола оказывался некрасивым. Все эти движки… мягко говоря избыточны, для моей простой задачи.
Но решение есть
Всего голосов 48: ↑40 и ↓8+32
Комментарии39

Упрощаем юнит-тесты с помощью связки AutoFixture и xUnit

Время на прочтение7 мин
Количество просмотров47K
Все мы знаем, что юнит-тесты — это классно, что только коду, который так или иначе покрыт тестами, можно доверять и что если какой-нибудь неопытный senior developer старший программист что-нибудь сломает, тесты это сразу же покажут.

Тем не менее, написание тестов сложно назвать увлекательным процессом. Инициализация тестовых данных, инициализация моков, создание объекта тестирования… Пока доберешься до вызова метода, который ты собственно хотел проверить, тестировать уже и не хочется ничего. Я конечно утрирую, юнит-тест по своей природе не должен брать на себя слишком много и содержать пару сотен десятков строк инициализации (хотя и такое бывает), однако писать один и тот же код быстро надоедает. И вот уже появляются фабрики тестовых объектов, иерархия базовых классов для тестов и прочие ООП примочки, призванные «упростить» создание теста. Приводит это как правило к тому, что шансов быстро понять, что же делает тест, не путешествуя по этим самым объектам, практически не остается.

Собственно, инструмент, о котором я хочу рассказать, как раз и призван упростить, а в некоторых случаях и полностью убрать фазу инициализации или Arrange фазу теста.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии3

Как на самом деле работает Async/Await в C# (Часть 2)

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

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

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

Пришло время пересмотреть структуру проектов на .NET

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

C релизом .net 6 у нас появился новый упрощенный подход для быстрого создания сервисов  Minimal APIs. Эта статья появилась потому, что с новым подходом появились новые вопросы, связанные с организацией кода внутри проекта.

Это — немного вольный перевод статьи "Maybe it's time to rethink our project structure with .NET 6" от Tim Deschryver про подход к созданию сервисов с помощью Minimal APIs, который может помочь нам сделать архитектуру приложения более чистой, простой и легкой в поддержке и развитии.

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

Как на самом деле работает Async/Await в C# (Часть 1)

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

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность