Visual Studio 2022 の IntelliCode の入力候補の適用キーを変えたい

Visual Studio 2022のIntelliCodeですが、バージョン上がるたびに学習度合いも良くなったのか結構いい入力候補の提案をしてくれるようになりました。

さてそんな便利な機能ですが、唯一の難点は候補を反映するのがTabキーなのですよね。
image

さらさらとコード書いててインデントするのにTab打とうとしたらIntelliCodeの候補が出てて同意からの反映されてしまってぐぬぬ、みたいなのは誰しも経験があることではないでしょうか?

そんなIntelliCodeをオフにしてイライラ避けたいけどメリットもあるしなぁ、という方に朗報。任意のキーにすることはできませんが、Tabキーから右矢印キーに変更することは可能です。

ツール → オプションのIntelliCodeの詳細で「右矢印の行全体の入力候補を適用する」にチェックすればOKです。
image

これでTabキーじゃなくて右矢印キーになりました。

image

任意のキーにはできないけど、まぁこれで多少使い勝手がよくなるなら。。

参考

Microsoft Graph Explorer でテナントを切り替える

Microsoft Graph API のちょっとしたテストができる Microsoft Graph Explorer というツール(Webサイト)があります。

REST APIを扱うクライアントコードを書かなくても実行できるので、とても便利なツールですが、実行ユーザーが複数のテナントに所属している場合、意図したテナントで実行できない場合があります。

何もサインインせずにGraph Explorerにアクセスするとサンプルデータなサンドボックス環境なので(それはそれで影響を与えずにテストできるから便利なのですけど)、自テナントのデータを見たいとかになるとサインインするわけですが、サインイン時やサインイン後にGraph Explorer上でテナントを切り替えることができません。既定のテナントが操作したいテナントでない場合、大変困ってしまいます。

が、実はUI上はまだ無いみたいですがURL直指定だとテナント指定できます。

上記のURLのようにテナントID(IDでないとダメ)を指定してからサインインするとそのテナントになります。

image

面倒くさいという人はソースがPublicリポジトリにあるので、Cloneして自前で展開して設定したりするといいですよ。

おまけ

永遠のPreviewっぽいAzure Resource Explorer も、もしテナント切り替えがうまくいかない場合とかあればURLで以下のようにテナントIDを指定すると切り替えられます。

Readmeだと一覧が見れたりするっぽいんですけどね。(というかもともとテナント一覧表示されて切り替えられてたんですけど、動かなくなってるので)

Azure AD テナントを削除するときにエンタープライズアプリケーションが削除できない

Azure ADテナント(Azure AD B2Cを含む)を削除するときにはいろいろ手順を踏まないといけませんが、その中でも面倒なのが Microsoftのファーストパーティーアプリケーション(Microsoft First Party Application) とかいうやつです。
テナント削除時は登録したユーザーやアプリケーションなど関連リソースは全部消してからでないとテナント削除できませんが、このファーストパーティーアプリケーションは削除が無効化されてたりします。

ちゃんと(?)削除する場合は松村さんが書いてるPowerShellとかで削除するといいですが、もう削除しようとしているテナントの為にAzure PowerShell環境用意したり、Cloud Shellがんばったりするの面倒ですよね。

Microsoft ファーストパーティー以外のアプリは削除しておかないといけませんが、Microsoftファーストパーティーのアプリはサインインさえできなくなっていれば実は問題ない感じです。

というわけで「ユーザーのサインインが有効になっていますか?」を「いいえ」にして保存すれば無理に削除しなくてもテナント削除できる可能性があります。

という感じで削除したい場合に試してみてください。

続きを読む

TerraformでWeb Appsにカスタムドメイン名を設定したい

TerraformでAzure App ServiceのWeb Appsにカスタムドメイン名(特にネイキッドドメイン)を設定したい場合、AレコードにIPアドレスを設定する必要がありますが、App Serviceの受信IPアドレスを簡単にとれません。

Azure Resource Manager(ARM)上は一応 inbound_ip_address があるんですけどTerraform上で扱えないんですよね。以前は無理やりoutbound_ip_address (送信IPアドレス)の最初の要素を使ったりしてましたが(受信IPアドレスが最初に入ってた)不確かで実際最近はそんなことはないのでうまく設定できない状況でした。

で、どうしたものか悩んでたら ‘web apps名’.azurewebsites.net を正引きしてIPアドレスを取得すれば確実、ということらしく hashicorp/dns で取得したIPアドレスを使えばいいようです。

resource "azurerm_linux_web_app" "example" {
  name                = "example"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_service_plan.example.location
  service_plan_id     = azurerm_service_plan.example.id

  site_config {}
}

data "dns_a_record_set" "app_ip_address" {
  host = azurerm_linux_web_app.example.default_hostname
}

resource "azurerm_dns_a_record" "dns_a" {
  # ...
  target_resource_id  = data.dns_a_record_set.app_ip_address.addrs[0]
}

他にはTraffic ManagerのAzureリソースのエンドポイントでApp Serviceが使えたらそもそもこんな苦労しなくていいのに、とか思いますけど。。
たまにTerraform触るたびにいろいろ嵌りますね。

追記

しばやん氏からのタレコミによるとそもそもAzure REST API Specからしてinbound IP addressは欠落してるぽい。(resource Explorerとかで見るとちゃんとあるのでSpec側のミス)

APIの実装って大変ですね

Microsoft.Azure.WebJobs.Extensions.EventHubs を 5.x にする

.NET 6.0 もリリースされて Azure Functions Runtime v4 もでたということで手元のアレコレをアップデートしてたのですが、IoT HubトリガーやEvent Hubsトリガーで使う Microsoft.Azure.WebJobs.Extensions.EventHubs 5.0.0 が出ていたのでついでに更新することにしたのですが、少し手直しが必要になったのでメモしておきます。
(現状、Visual StudioでIoT HubトリガーなFunctionsを追加すると 4.3.0 が使われるので更新すると同じことをしないといけないはず)

続きを読む

Azure Functions の Event Hubs Trigger とオフセット

Azure FunctionsでEvent Hubsトリガー使ってデータ処理したりするケースはよくあると思いますが、すでに稼働しててバンバンデータが流れるEvent Hubsに新しくFunctionsで処理を追加したい、とかのケースでそのままだと初回起動時にえらいことになります(よね?)。※ パーティション内に保持されてるデータを最初から読み出そうとするので

だいたいそういうケースだとこれまでのデータを処理する必要はないのでパーティション内の最後のデータから処理を開始したりしたいわけですが、トリガー単位ではこの辺りを制御できません。代わりにFunctions全体で挙動を指定できるようにはなってるのでそちらで行います。(トリガーとしては無理だけどイベントプロセッサホストとしては指定可能ということです)

続きを読む