RSS スコット・ハンスルマンのブログ フォロー 与えられたリンクは、スコット・ハンスルマンの個人ブログサイトです。ハンスルマンはアメリカの作家、学校でのコンピューターサイエンスの擁護者、そして長年にわたりマイクロソフトのデベロッパーコミュニティ・プログラムの共同副議長です。このブログは、コンピュータープログラミング、ソフトウェア開発、技術の最新トレンドなど、様々なコンピューターアスペクトを話題にしています。 Scott Hanselman's Blog hanselman.com RSS feeds.hanselman.com
OBS、Discord、およびWebサイトでWebカメラがランダムに一時停止する-LSVCamおよびTikTokStudio 著者は、ストリーミングとOBSでウェブカムが定期的に停止するという、困惑する問題に遭遇しました。この問題は、Windowsデバイスリストに現れるが、すべてのアプリケーションで認識されない仮想カメラ「LSVCam」が原因でした。この問題は、TikTok Live Studioが仮想カメラをインストールし、完全にインストールされなかったり、列挙中にハングアップする可能性があることに遡及しました。著者は、PowerShellスクリプトとJavaScriptコードスニペットを提供し、デバイスのリストとウェブカムの列挙を示し、「LSVCam」がTikTok Live StudioディレクトリーのDLLファイルとリンクしていることを明らかにしました。この仮想カメラは、ウェブカムアクセスに依存するアプリケーションでハングやエラーを引き起こす可能性があります。著者は、「LSVCam」に関連するレジストリーキーを特定し、問題を解決するためにそれを削除することを推奨しました。ただし、このレジストリーキーは、TikTok Live Studioを実行すると再び現れるため、暫定的な対処です。著者は、この問題がTikTok Live Studioの仮想カメラ実装の退行であると信じています。著者は、似たウェブカムの問題に遭遇している人々にこの情報を伝えることを目的としており、TikTok Studio開発チームがこの投稿に気づき、問題を解決することを願っています。レジストリーキーの削除は、開発者が適切なソリューションを提供するまでの暫定的な対処です。 Webcam randomly pausing in OBS, Discord, and websites - LSVCam and TikTok Studio feeds.hanselman.com
DOS4のオープンソース化 マイクロソフトは、8086アセンブリ言語で書かれた歴史的なオペレーティングシステムであるMS-DOS 4.00のソースコードを公開しました。この公開は、IBMとの共同作業であり、マイクロソフトのオープンイノベーションイニシアチブの一部です。ソースコードは、研究者であるConnor "Starfrost" Hydeによって、Ray Ozzieに送信された未公開のベータバイナリの中で発見されました。マイクロソフトとIBMは、この公開がオペレーティングシステムの歴史における貴重な資料であると考えます。公開には、MS-DOS 4.00のソースコード、ベータバイナリ、ドキュメント、ディスクイメージが含まれます。マイクロソフトとIBMは、追加の資料を探すためにアーカイブを調査し続けています。ソースコードは、GitHubでアクセスできます。ソフトウェアは、オリジナルのIBM PC XT、ペンティアムコンピューター、またはPCemと86boxエミュレーターで実行できます。この公開は、オリジナルの著者たちの貢献を認めており、その中には現在もマイクロソフトとIBMで働いている人もいます。 Open Sourcing DOS 4 feeds.hanselman.com
.NET 8 にアップデートする、IHostBuilder にアップデートする、そして任意の OS でヘッドレスまたはヘッドありで NUnit 内で Playwright テストを実行する 2007年、著者は統合とブラウザ自動化テストのためにSeleniumを使用していました。現在、Playwrightはその汎用性とプラットフォーム間の互換性のために好まれます。エンドツーエンドテストを保証するために、PlaywrightテストはVisual StudioまたはVS Codeを使用して.NETアプリケーションに統合されています。以前、ASP.NETを単体テスト内で起動するために、WebApplicationFactoryを使用するハックが使用されていました。しかし、.NET 8では、IHostBuilderがIWebHostBuilderに置き換えられたため、コード変更が必要になりました。著者の目標は、実行中のWebアプリケーションと定義されたURLを前提とするNUnit内でPlaywrightテストを書くことです。WebApplicationTestBuilderFactoryは、TestHost内でWebアプリを起動し、ポートを動的に取得します。ビルダーファクトリは、MSBuildによって生成されたマニフェストファイルを使用します。これは、.NET 8では必要な回避策です。しかし、この回避策は、.NET 9では排除できるため、テストがより直接的になります。これらの強化により、単体テストとPlaywright統合テストの両方が、さまざまなオペレーティングシステムと環境で実行でき、.NET 8に更新されたサイトの包括的なテストが可能になります。 Updating to .NET 8, updating to IHostBuilder, and running Playwright Tests within NUnit headless or headed on any OS feeds.hanselman.com
WSLとLet's Encryptを使用してAzure App ServiceのSSLワイルドカード証明書を作成する WSLとcertbotを使用すると、AzureのWebサイト用のワイルドカード証明書を作成できます。Azureでは特定のPFX形式が必要ですが、certbotで証明書を生成した後、Windowsでインポートしてエクスポートする必要があります。2048ビットの秘密鍵、すべての中間証明書、ルート証明書を含む必要があります。生成された証明書をWSLで生成した後、Windowsでインポートしてエクスポートし、PFXの要件を満たすようにします。生成されたPFXファイルは、Azure App Serviceの「自分の証明書を使用する」セクションにアップロードできます。カスタムドメインの場合、新しくアップロードした証明書をバインディングとして選択します。このプロセスは自動化できますが、ワイルドカード証明書を低コストで取得するための暫定的な解決策を提供します。 Using WSL and Let's Encrypt to create Azure App Service SSL Wildcard Certificates feeds.hanselman.com
GitHubコパイロット for CLI for PowerShell GitHub Nextは、3つのシェルコマンドを通じてCLIにCopilotの機能を拡張するプロジェクトを導入しました。このプロジェクトは現在、待機リストのみのモードです。しかし、これらのコマンドは単に「github-copilot-cli」実行可能ファイルのエイリアスであり、カスタマイズを可能にします。この実現は、PowerShellエイリアスを作成することにつながりました。これは、挿入されたプロンプトを「PowerShellを使用して」に変更します。完全ではありませんが、これはPowerShellサポートの必要性を示すものです。提供されたエイリアスには、「??」、「git?」、「gh?」が含まれ、それぞれ変更されたプロンプトがあります。さらに、エイリアスは一時ファイルを使用してコマンドを実行し、結果を表示することで、シームレスな体験を提供します。著者は、フィードバックや改善の提案を奨励し、bashやwslなどの他のツールとのさらなるカスタマイズや統合の可能性を強調しています。 GitHub Copilot for CLI for PowerShell feeds.hanselman.com
Mastodonの検索性向上のために、WebFingerプロトコルを使用して、ユーザー名@ドメインを使用する(サーバーをホストせずに) Mastodonは、WebFingerプロトコルを利用してユーザーの発見とアクセスを容易にする分散型のオープンソースソーシャルネットワーキングサービスです。WebFingerを使用すると、ユーザーはメールアドレスやその他の識別情報を使用して、Mastodonネットワーク上の他のユーザーの情報を見つけることができます。WebFingerは、シンプルなHTTPベースのプロトコルで動作します。ユーザーは、探しているユーザーのメールアドレスまたは識別情報を使用してサーバーにリクエストを送信します。サーバーは、リクエストされた情報を含むJSONオブジェクト(リソースディスクリプターと呼ばれる)を返します。リソースディスクリプターには、ユーザーの名前、プロフィール画像、ソーシャルメディアのリンク、セキュアな接続を確立するための公開鍵などの、ユーザーに関するさまざまな詳細が含まれます。Mastodonユーザーを検索する場合、ネットワークは、ユーザーのサーバーに特定のエンドポイント形式を使用してクエリを送信します。ユーザーのサーバーは、必要な情報を含むWebFingerレスポンスを返します。WebFingerを実装するには、ユーザーは自分のドメインにWebFinger APIエンドポイントを作成し、必要な情報を提供するJSONファイルを定義する必要があります。または、ユーザーはMastodonサーバーからWebFingerレスポンスを取得し、それを静的JSONファイルとして自分のサーバーに保存することもできます。WebFingerは、Mastodonネットワーク上でのユーザーの発見とアクセスに不可欠です。ユーザーは、サーバーの場所に関係なく、他のユーザーを探し、フォローすることができます。Mastodonは、分散化とActivityPubなどのWeb標準への準拠を追加したTwitterのような体験を提供します。Mastodonの初心者向けに、開始方法を支援するための包括的なガイドが用意されています。 Use your own user @ domain for Mastodon discoverability with the WebFinger Protocol without hosting a server feeds.hanselman.com
疲れた 20年間、執筆を続けてきた著者は、去年突然、重大な出来事もなくブログを更新しなくなった。著者はTikTok、YouTube、ポッドキャストに楽しみを見出し、最近はMastodonにも参加した。継続性を保つことは難しいが、著者は長い間それを続けてきた。著者は精神を栄養にする活動を優先しており、現在、ブログは他の活動に後ろに置かれている。将来的には、著者は複数のプラットフォームで執筆と共有を続け、自分の言葉を所有し、作品を保存することの重要性を強調する。著者は読者に、自分はまだ活動中であり、近いうちに再びつながることを楽しみにしていることを伝えている。 I got tired feeds.hanselman.com
Home Assistantを使用してUnifi Protect G4ドアベルとAmazon Alexaを統合し、訪問者をアナウンスする ホームオートメーションを実現するプラットフォームであるHome Assistantは、人、照明、家電製品など、接続されたデバイスを幅広く制御することができます。クラウドサービスに依存せず、ローカルで動作するため、プライバシーと独立性を保つことができます。Raspberry PiにPower over Ethernetを使用してHome Assistantを動作させることが、セットアップの容易性のために推奨されています。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は、接続されたホームの制御を強化し、利便性を提供する、多くの自動化の可能性を提供しています。 Using Home Assistant to integrate a Unifi Protect G4 Doorbell and Amazon Alexa to announce visitors feeds.hanselman.com
Visual Studio 2022でReact、Angular、またはVueを使用したJavaScriptおよびTypeScriptプロジェクト(.NETを使用する場合としない場合) Visual Studio 2022 では、スタンドアロンの JavaScript/TypeScript アプリ用に新しい .esproj プロジェクト タイプが導入されています。このプロジェクト タイプは、Angular、React、Vue のネイティブ CLI を利用して、最新のテンプレートを提供します。Visual Studio 2022 では、JavaScript ヘビーなフロントエンド アプリと、JavaScript/TypeScript コンポーネントを含む ASP.NET アプリの両方をサポートしています。MSBuild でアプリをビルドするための TypeScript NuGet パッケージを提供しています。Visual Studio 2022 の新しい JavaScript/TypeScript サポートには、TypeScript に基づく完全な JavaScript 言語サービスが含まれています。これにより、開発者は、フロントエンド用の .esproj と、ASP.NET Web API バックエンド用の .csproj を含むソリューションを作成できます。Visual Studio 2022 では、開発者は、ASP.NET Web API 統合を JavaScript/TypeScript フロントエンド アプリに追加し、フロントエンドが Web API バックエンドを呼び出すことができます。React CLI を使用してフロントエンドを作成し、必要なバージョンの React がインストールされるようにします。Visual Studio 2022 では、JavaScript/TypeScript 開発用の Web サーバーと Web ブラウザーの選択を柔軟に行うことができます。Launch.json ファイルを使用して、開発者の好みを指定できます。開発者は、ASP.NET Core プロジェクトで、TypeScript/JavaScript を二次コンポーネントとして使用することもできます。これにより、開発者は、既存の ASP.NET アプリに JavaScript/TypeScript 機能を追加できます。 JavaScript and TypeScript Projects with React, Angular, or Vue in Visual Studio 2022 with or without .NET feeds.hanselman.com
OhMyPosh用のNightscoutセグメントは、Gitプロンプトに私のリアルタイムの血糖値を表示します 糖尿病患者である著者は、以前、コマンドプロンプトで血糖値を表示する方法を作成したが、今回、Oh My Poshを使ってより合理的な方法を開発した。この新しい方法では、Oh My Posh内のカスタム "セグメント "を利用して、グルコースレベルを追跡するためのオープンソースプラットフォームであるNightscoutからリアルタイムの血糖値データを取得して表示する。セグメントは高度に設定可能で、血糖値に基づいてパーソナライズされた色やアイコンを使用できる。また、更新は5分ごと、もしくはプロンプトが更新されたときのみで、遅延を防ぐためにタイムアウトを設定できるなど、効率的でもある。作者は、mmol測定のサポートを追加し、古くなったデータポイントを視覚的に示すことによって、セグメントをさらに強化する予定である。このソリューションは、さまざまなオペレーティングシステムやシェルでシームレスに動作し、コマンドプロンプトで直接血糖値をモニターする便利でカスタマイズ可能な方法を提供する。著者はコミュニティへの貢献を奨励し、このセグメントの開発を実演するYouTubeビデオへのリンクを提供している。記事の最後には、認証サービスを宣伝するAuth0からのスポンサー・メッセージが掲載されている。 A Nightscout Segment for OhMyPosh shows my realtime Blood Sugar readings in my Git Prompt feeds.hanselman.com
20年前の大学プロジェクトを.NET 6にアップグレードする - dotnet-upgrade-assistantを使用する 2001年、著者は大学の授業用にC#でTiny Virtual Operating Systemを作成し、後に初期の.NET FrameworkでVB.NETに移行しました。数年後、プロジェクトはGitHubに移行され、.NET Core 2.0に更新され、Linux、Docker、Raspberry Piなどのさまざまなプラットフォームで実行できるようになりました。最近、著者は20年前に作成されたアプリケーションを.NET Upgrade Assistantを使用して.NET 6にアップグレードすることを決めました。アップグレードプロセスはインタラクティブで驚くほどスムーズで、プロジェクトは最初の試みで正常にビルドされました。しかし、プロジェクトファイル内の古いバージョン番号を手動で調整する必要がありました。"dotnet outdated"ツールを使用して、著者は新しいパッケージの利用可能性を確認し、それに応じてアップグレードしました。実行コマンドはよりシンプルな形式に近代化されました。.NET 6では、最終的なアプリケーションは、サイズがわずか11MBのクロスプラットフォームの自己完結型実行ファイルとしてパッケージ化され、.NET開発におけるこれまでの進歩を強調しています。 Upgrading a 20 year old University Project to .NET 6 with dotnet-upgrade-assistant feeds.hanselman.com
.NET6のホットリロードで「ws:への接続が拒否されました。コンテンツ・セキュリティ・ポリシーに違反しているためです。 セキュリティを向上させるために、ASP.NET Core アプリケーションで Hot Reload を使用するには、Content-Security-Policy (CSP) ヘッダーを理解する必要があります。DasBlog は、CSP ヘッダーを設定するために NWebSpec ライブラリを使用しています。デフォルトでは、CSP ヘッダーは "self" への接続を制限し、Hot Reload との通信をブロックします。開発環境で Hot Reload を有効にするには、CSP ヘッダーを使用して開発サーバーへの WebSocket 接続を明示的に許可する必要があります。たとえば、"connect-src: wss://localhost:62895" などのヘッダーを設定します。CSP ヘッダーは、開発環境と生産環境で異なる設定が必要です。セキュリティを確保しながら、Hot Reload などの開発ツールを使用するために、両方のシナリオで必要なヘッダーを認識することが重要です。 .NET 6 Hot Reload and "Refused to connect to ws: because it violates the Content Security Policy directive" because Web Sockets feeds.hanselman.com