RSS Блог Скотта Хансельмана Заметка

RSS Блог Скотта Хансельмана

Данная ссылка ведет на личный блог Скотта Хансельмана, американского автора, сторонника преподавания информатики в школах и многолетнего со-вице-председателя программы Microsoft Developer Community Program. Блог посвящен обсуждению различных аспектов компьютерного программирования, разработки программного обеспечения и последних тенденций в области технологий.

Трэд заметок

"Автор начинает с оценки традиционного мастерства, воплощенного в японском столярном деле и личных мастерских его отца, противопоставляя это ручное творчество массово производимым предметам, таким как мебель IKEA. Несмотря на то, что он профессионально занимался программированием в течение 35 лет, автор отмечает, что современные вычислительные системы остаются чрезмерно сложными, и как машины, так и люди продолжают совершать ошибки. Эта постоянная сложность сравнивается с историческими технологическими сдвигами в программировании, такими как переход от языка ассемблера к С, и введение инструментов, таких как подсветка синтаксиса, IntelliSense и широкое использование разработки, основанной на Stack Overflow.Главное утверждение заключается в том, что настоящая ценность все еще заключается в хорошем вкусе, мастерстве и здравом человеческом суждении, независимо от технологических достижений. Создание целостной системы описывается как аналогичное интерьерному дизайну - непростой задаче, требующей квалифицированного монтажа. Автор предупреждает против обмана простыми инструментами и "одноразовыми" программными решениями, подчеркивая, что разработка программного обеспечения остается внутренне трудной, даже если разработчики больше не ограничены скоростью ввода/вывода.Он предсказывает значительную будущую работу по очистке "мусора", созданного поспешной разработкой. Однако автор считает, что для тех, кто обладает глубоким пониманием, разработка с помощью ИИ обещает невероятные результаты. В настоящее время он наслаждается процессом обучения в эту эпоху сдвига, подтверждая, что основное мастерство разработки программного обеспечения сохраняется."
Автор текста создал приложение Windows Edge Light и хотел добавить функцию, которая дала бы ему виртуальный кольцевой свет, аналогичный функции Edge Light в Mac Tahoe. Чтобы сделать приложение более заслуживающим доверия, автор решил использовать Azure Trusted Signing, облачную службу подписи кода, предоставляемую Microsoft. Эта служба позволяет автоматически управлять сертификатами, интегрироваться с GitHub Actions и доверена Windows, что помогает предотвратить предупреждения SmartScreen. Автор обнаружил, что Azure Trusted Signing вызывает меньше проблем, чем традиционные методы подписи кода, но все равно требует некоторой настройки и конфигурации. Чтобы использовать службу, автору пришлось зарегистрировать провайдера ресурсов, создать учетную запись доверенной подписи, завершить проверку личности и создать профиль сертификата. Затем автор использовал Azure CLI, чтобы назначить правильную роль и войти с правильным объемом, и установил инструмент подписи, чтобы подписать исполняемый файл. Автор также настроил автоматическую подпись с помощью GitHub Actions, для чего потребовалось создание сервисного принципала с разрешениями на подпись. Процесс включал несколько шагов, включая проверку настройки и устранение распространенных проблем. В целом автор обнаружил, что Azure Trusted Signing является полезным инструментом для добавления доверия к своему приложению, но требует некоторых технических знаний для настройки и конфигурации. Опыт автора с Azure Trusted Signing был в основном положительным, но подчеркнул необходимость тщательного внимания к деталям и устранения неполадок для преодоления распространенных проблем.
CdXz5zHNQW_skY9OmNcGf.png
Автор столкнулся с запутанной проблемой с веб-камерой, испытывая регулярные паузы во время стриминга и в OBS. Казалось, проблема возникла из-за виртуальной камеры под названием "LSVCam", которая появилась в списке устройств Windows, но не была распознана некоторыми приложениями. Эта проблема была отслежена до TikTok Live Studio, который устанавливает виртуальную камеру, которая может не быть полностью установлена или зависать во время перечисления.Автор предоставил скрипт PowerShell для перечисления всех подключенных устройств и фрагмент JavaScript-кода для перечисления веб-камер, выявив присутствие "LSVCam". Они обнаружили, что "LSVCam" связана с файлом DLL в каталоге TikTok Live Studio. Эта виртуальная камера может вызвать зависания и ошибки в различных приложениях, которые полагаются на доступ к веб-камере.Автор определил ключ реестра, связанный с "LSVCam", и посоветовал удалить его, чтобы решить проблему. Однако это временное решение, поскольку ключ реестра появится снова после запуска TikTok Live Studio. Автор считает, что эта проблема является регрессией в реализации виртуальной камеры TikTok Live Studio.Автор поделился этой информацией, чтобы проинформировать других, столкнувшихся с аналогичными проблемами с веб-камерой, и надеялся, что команда разработчиков TikTok Studio заметит этот пост и устранит проблему. Удаление ключа реестра является временным решением до тех пор, пока разработчики не предоставят полноценное решение.
Корпорация Майкрософт выпустила исходный код операционной системы MS-DOS 4.00, исторической операционной системы, написанной на ассемблерном коде 8086. Этот выпуск является результатом сотрудничества с IBM и входит в инициативу Майкрософт по открытой инновации. Исходный код был обнаружен исследователем Коннором "Старфростом" Хайдом в нерелизованных бета-бинарных файлах, отправленных Рэю Оззи. Майкрософт и IBM считают, что этот выпуск является ценным фрагментом истории операционных систем. В выпуск входят исходный код MS DOS 4.00, бета-бинарные файлы, документация и образы дисков. Майкрософт и IBM продолжают изучать архивы в поисках дополнительных материалов. Исходный код доступен на GitHub. Программное обеспечение можно запустить на оригинальном IBM PC XT, компьютерах Pentium или в эмуляторах PCem и 86box. Выпуск признает вклад оригинальных авторов, некоторые из которых до сих пор работают в Майкрософт и IBM.
В 2007 году автор использовал Selenium для интеграционного и автоматического тестирования браузера. В настоящее время предпочтение отдается Playwright за его универсальность и совместимость на разных платформах. Чтобы обеспечить тестирование с конечной точки до конечной точки, тесты Playwright интегрируются в приложения .NET с помощью Visual Studio или VS Code.Ранее использовался хак с WebApplicationFactory для запуска ASP.NET в рамках юнит-тестов. Однако с .NET 8 IHostBuilder заменил IWebHostBuilder, что потребовало изменений в коде.Целью автора является написание тестов Playwright в NUnit, которые предполагают запущенное веб-приложение и определенный URL. WebApplicationTestBuilderFactory запускает веб-приложение в TestHost, динамически получая порт.Фабрика строителей использует файл манифеста, сгенерированный MSBuild, который является необходимой обходной мерой в .NET 8. Однако этот хак можно устранить в .NET 9, что сделает тестирование более простым.С этими улучшениями можно запускать как юнит-тесты, так и интеграционные тесты Playwright на различных операционных системах и средах, обеспечивая всестороннее тестирование сайта, обновленного до .NET 8.
GitHub Next представил проект, который расширяет функциональность Copilot в командной строке через три команды оболочки. Проект в настоящее время находится в режиме ожидания списка. Однако эти команды являются просто псевдонимами для исполняемого файла "github-copilot-cli", который позволяет настраивать. Это понимание привело к созданию псевдонимов PowerShell, которые изменяют внедренный запрос на "используйте powershell для". Хотя это не идеально, это служит демонстрацией необходимости поддержки PowerShell. Предоставленные псевдонимы включают "??", "git?", и "gh?", каждый с измененным запросом. Кроме того, псевдонимы используют временный файл для выполнения команды и отображения результатов, обеспечивая бесшовный опыт. Автор приветствует обратную связь и предложения по улучшению, подчеркивая потенциал для дальнейшей настройки и интеграции с другими инструментами, такими как bash и wsl.
Mastodon - это децентрализованная, открытая социальная сеть, которая использует протокол WebFinger для облегчения поиска и доступа к пользователям. WebFinger позволяет пользователям находить информацию о других пользователях в сети Mastodon, используя их адреса электронной почты или другую идентифицирующую информацию.WebFinger работает через простой HTTP-протокол, в котором пользователь отправляет запрос на сервер с использованием адреса электронной почты или идентификатора пользователя, которого он ищет. Сервер отвечает JSON-объектом, содержащим запрошенную информацию, известную как ресурсный дескриптор.Ресурсный дескриптор предоставляет различные сведения о пользователе, включая его имя, изображение профиля, ссылки на социальные сети и открытый ключ для установления безопасных соединений.При поиске пользователя Mastodon сеть запрашивает сервер пользователя с использованием определенного формата конечной точки. Сервер пользователя затем возвращает ответ WebFinger, содержащий необходимую информацию.Чтобы реализовать WebFinger, пользователи могут создать конечную точку API WebFinger на своем собственном домене и определить JSON-файл, который предоставляет необходимую информацию.Альтернативно, пользователи могут использовать ответ WebFinger от своего сервера Mastodon и сохранить его в виде статического JSON-файла на своем собственном сервере.WebFinger необходим для поиска и доступа к пользователям в сети Mastodon, позволяя пользователям находить и подписываться друг на друга независимо от местоположения их сервера.Mastodon предлагает опыт, аналогичный Twitter, с дополнительными преимуществами децентрализации и соблюдения веб-стандартов, таких как ActivityPub.Для тех, кто только начинает знакомиться с Mastodon, доступно полное руководство, чтобы помочь вам начать.
Home Assistant - это универсальная платформа автоматизации дома, которая позволяет осуществлять полный контроль над подключенными устройствами, включая людей, свет и бытовую технику. Она работает локально, обеспечивая конфиденциальность и независимость от облачных сервисов. Рекомендуется запускать Home Assistant на Raspberry Pi с питанием через Ethernet для простоты установки.Интеграции позволяют Home Assistant подключаться к различным устройствам, включая системы безопасности, такие как Unifi Protect Doorbell. Интеграции сторонних разработчиков могут расширить функциональность и включить пользовательские автоматизации.Чтобы создать объявление, когда нажата кнопка Unifi Protect Doorbell, установите Home Assistant Community Store и интеграции UniFi Protect и Alexa Media Player. Настройте обе интеграции и создайте группу динамиков Alexa "Everywhere".В инструментах разработчика Home Assistant проверьте, работает ли Alexa TTS (текст в речь). Затем создайте автоматизацию, которая срабатывает, когда состояние дверного звонка изменяется на "включено" и отправляет уведомление в группу динамиков Alexa "Everywhere".Автоматизацию можно определить как через пользовательский интерфейс, так и в файле Automations.yaml. Триггер "to: 'on'" предотвращает двойные объявления во время изменения состояния.Home Assistant предлагает множество возможностей для автоматизации, обеспечивая удобство и повышенный контроль над подключенным домом.
Visual Studio 2022 представляет новый тип проекта .esproj для автономных приложений JavaScript/TypeScript. Этот тип проекта использует родные CLI для Angular, React и Vue, гарантируя актуальность шаблонов. Visual Studio 2022 поддерживает как приложения с тяжелым JavaScript-фронтом, так и приложения ASP.NET с компонентами JavaScript/TypeScript. Он предоставляет пакет NuGet для TypeScript для построения приложений с помощью MSBuild. Новая поддержка JavaScript/TypeScript в Visual Studio 2022 включает в себя полную службу языка JavaScript на основе TypeScript. Это позволяет разработчикам создавать решение с .esproj для фронта и .csproj для ASP.NET Web API-бэкенда. Visual Studio 2022 позволяет разработчикам добавить интеграцию ASP.NET Web API в приложение JavaScript/TypeScript-фронта, позволяя фронту вызывать Web API-бэкенд. CLI React используется для создания фронта, гарантируя установку желаемой версии React. Visual Studio 2022 предоставляет гибкость в выборе веб-сервера и веб-браузера для разработки JavaScript/TypeScript, позволяя разработчикам использовать файл Launch.json для указания своих предпочтений. Разработчики также могут выбрать использовать TypeScript/JavaScript в качестве второстепенного компонента в проекте ASP.NET Core, позволяя им привлечь функциональность JavaScript/TypeScript в существующее приложение ASP.NET.
Автор, страдающий диабетом, ранее разработал способ отображения показаний уровня сахара в крови в командной строке, но теперь создал более упрощенный метод с помощью Oh My Posh. Этот новый подход использует пользовательский "сегмент" в Oh My Posh для получения и отображения данных о уровне сахара в крови в режиме реального времени из Nightscout, открытой платформы для отслеживания уровня глюкозы. Сегмент высоко настраиваем, позволяя использовать персонализированные цвета и иконки в зависимости от значений уровня сахара в крови. Он также эффективен, обновляясь каждые 5 минут или при обновлении командной строки, с настраиваемым таймаутом для предотвращения задержек. Автор планирует дальнейшее улучшение сегмента, добавив поддержку измерений в ммоль/л и визуальное указание устаревших данных. Это решение работает без проблем на различных операционных системах и оболочках, обеспечивая удобный и настраиваемый способ отслеживания уровня сахара в крови прямо в командной строке. Автор приглашает сообщество к сотрудничеству и предоставляет ссылку на видео на YouTube, демонстрирующее разработку сегмента. Статья завершается сообщением о спонсорстве от Auth0, рекламирующим их услуги аутентификации.
В 2001 году автор создал миниатюрную виртуальную операционную систему для колледжского курса, изначально на языке C# и позже перенесенную на VB.NET на ранних версиях .NET. Годы спустя проект был перенесен на GitHub и обновлен до .NET Core 2.0, что позволило ему работать на различных платформах, таких как Linux, Docker и Raspberry Pi. Недавно автор решил обновить 20-летнее приложение до .NET 6 с помощью .NET Upgrade Assistant. Процесс обновления был интерактивным и удивительно гладким, с успешным построением проекта с первого раза. Однако некоторые устаревшие номера версий в файле проекта требовали ручной корректировки. С помощью инструмента "dotnet outdated" автор подтвердил наличие более новых пакетов и обновил их соответственно. Команда запуска была модернизирована до более простого формата. С .NET 6 окончательное приложение было упаковано в виде самодостаточного, кроссплатформенного исполняемого файла размером всего 11 МБ, подчеркивая значительный прогресс в разработке .NET за годы.