Блог
Практические статьи KomuraSoft LLC о разработке сайтов, SEO, Google Ads, разработке для Windows, использовании существующих систем и расследовании сбоев.
ИИ-поиск по всему сайту
Поисковые запросы передаются в Cloudflare AI Search для формирования результатов. Не вводите персональные данные.
-
Как выбрать способ распространения Windows-приложения — MSI/MSIX/ClickOnce/xcopy/свой updater
Способ распространения Windows-приложения — это не предпочтение формата установщика, а выбор глубины интеграции с ОС и того, кто отвечает за обновления. Разб...
-
Распространение Windows-приложения одним файлом — single binary и пределы зависимости от ОС
Когда хочется свести Windows-приложение к одному EXE, важно различать «сделать один файл поставки» и «убрать зависимость от ОС». Разбираем это на примере .NE...
-
Правила инструкций, которые уменьшают кракозябры Codex в Windows
Практические правила инструкций для Codex в Windows: не сохранять японские файлы наугад, сохранять исходную кодировку существующих файлов и проверять результ...
-
Подводные камни приложений последовательной связи: переподключение и логи
Разбираем типичные ловушки приложений последовательной связи при интеграции с оборудованием и управлении измерительными приборами: границы кадров, тайм-ауты,...
-
Как проектировать логи и дампы при сбое Windows-приложения
Разбираем, как сочетать лог штатной работы, маркер сбоя, WER LocalDumps и процесс-наблюдатель, чтобы даже после падения Windows-приложения из-за неожиданного...
-
UX Windows-приложений: приоритеты по среде использования
Что ставить выше в UX Windows-приложения: таблица решений по B2C / B2B, способу ввода, среде использования и цене ошибки.
-
WinForms, WPF или WinUI: практическая таблица выбора
Как выбрать WinForms, WPF или WinUI: новая разработка, существующий код, распространение, выразительность UI и устройство команды.
-
Разделяемая память: подводные камни и практические рекомендации
Подводные камни разделяемой памяти на практике и проектирование, которое снижает частоту сбоев: синхронизация, видимость, время жизни, ABI и права доступа.
-
Введение в профили пользователей Windows — AppData и NTUSER.DAT
Базовое устройство профиля пользователя Windows: как разделять AppData, локальный / перемещаемый / Mandatory / Temporary, Folder Redirection, FSLogix и с чег...
-
Минимум знаний перед чтением исходного кода COBOL
Для тех, кому внезапно пришлось читать исходный код COBOL: минимальный набор, чтобы разобраться в DIVISION, PIC, COMP-3, COPY, PERFORM, фиксированном формате...
-
Как честно сравнивать скорость C#, C++, Java и Go
Как честно сравнивать скорость C#, C++, Java и Go: проектирование измерений, прогрев, фиксация окружения, чтение статистики и конкретные сценарии бенчмарков.
-
Что такое Reg-Free COM: механизм использования COM без регистрации
Разбираем основы Reg-Free COM: роль контекста активации и манифестов, преимущества, ограничения и критерии выбора в реальных проектах.
-
Как построить вывод отчётов Excel: COM / Open XML / шаблоны
Проектирование вывода отчётов Excel сильно меняется в зависимости от того, автоматизируете ли вы сам Excel, собираете ли xlsx напрямую или оставляете существ...
-
Как наложить изображение и текст на кадры MP4 в Media Foundation
Разбираем, как в Media Foundation прожечь изображение и текст в каждый кадр MP4 и собрать новый файл: роли Source Reader, отрисовки, преобразования цвета и S...
-
Сбор дампов сбоев Windows — введение: WER, ProcDump, WinDbg
Чтобы расследовать трудно воспроизводимые сбои Windows-приложений, разбираем, как выбирать между WER LocalDumps, ProcDump, MiniDumpWriteDump и WinDbg и на чт...
-
Как использовать DLL на .NET 8 из VBA с типизацией — публикация COM и TLB через dscom
Публикуем библиотеку классов .NET 8 как COM, генерируем TLB через dscom и вызываем её из VBA ранним связыванием.
-
Почему в Windows стоит предпочитать ожидание события, а не Sleep(1)
В Windows точность короткого timed wait зависит от гранулярности системных часов и планирования. Если ждать нужно появление работы, завершение ввода-вывода и...
-
Таблица решений: завершать приложение или продолжать после неожиданного исключения
Когда после неожиданного исключения приложение стоит завершать, а когда можно продолжать: порча состояния, внешние побочные эффекты, потоки и граница native-...
-
Планирование процессора в Windows: «Фоновые службы» и P-/E-ядра
Что реально меняет параметр «Фоновые службы» в Windows: квант времени, предпочтение foreground, срывы звука и QoS на CPU с P- и E-ядрами.
-
Как правильно сравнивать скорость разных версий программы в Windows
Когда в Windows сравнивают версии программы, разбираем воспроизводимую методику: Power mode, Power plan, тепловой режим, фоновый шум, метрики измерения и раз...
-
Как в Windows-приложении вынести только операции, которым нужны права администратора
Разбираем, как оставить UI Windows-приложения asInvoker и вынести операции с правами администратора в helper EXE: UAC, runas, именованные каналы и повторная ...
-
Хранение секретов в Windows-приложениях — избегаем настроек в открытом виде с помощью DPAPI
Чтобы не хранить сведения о подключении и API-токены в конфигурационных файлах Windows-приложений открытым текстом, разбираем подход DPAPI / ProtectedData, р...
-
Чек-лист перед миграцией с .NET Framework на .NET
Практический чек-лист того, что проверить перед миграцией с .NET Framework на .NET: типы проектов, неподдерживаемые технологии, зависимости NuGet, SDK-стиль,...
-
Как преобразовать YUV в RGB с помощью Media Foundation
Как в Media Foundation преобразовать кадр YUV в RGB: автоматическое преобразование Source Reader, самостоятельное преобразование NV12/YUY2, stride и цветовое...
-
Расширенные настройки NIC в Windows: RSS, LSO, EEE и Wake on LAN
Практический разбор расширенных настроек NIC в Windows. Что меняется, если трогать Jumbo Packet, Speed & Duplex, RSS, RSC, LSO, Flow Control, EEE, Wake on LA...
-
Как извлечь кадр из MP4 по заданному времени с помощью Media Foundation
Как Source Reader берёт из MP4 кадр, ближайший к заданному времени, выравнивает stride и alpha в RGB32 и сохраняет результат в PNG.
-
Минимальный чек-лист безопасности при разработке Windows-приложений
Чек-лист базовых мер безопасности для бизнес-приложений на WPF / WinForms / WinUI / C++ / C#: права, подпись кода, обновления, секреты, HTTPS, проверка ввода...
-
Что такое .NET Generic Host — основа для DI, конфигурации и логирования
Разбираем роль Generic Host через связь DI, конфигурации, логирования, IHostedService и BackgroundService и с практической стороны показываем, где он даёт эф...
-
Что такое .NET Native AOT — чем он отличается от JIT и trimming
Разбираем, что такое Native AOT, через отличия от JIT, ReadyToRun, self-contained, single-file, trimming и source generator, и с практической стороны — где о...
-
Что такое COM / ActiveX / OCX — различия и связь
Что такое COM, ActiveX и OCX: чем они отличаются, как связаны с OLE, где встречаются на практике и как к ним относиться сегодня.