2025-01-01から1年間の記事一覧
Terraformの課題の1つは、モジュールなどに実装を閉じ込めても、そのモジュールのvairables/outputsの型を判別するにはLSP1が脆弱なことです。 VS CodeのLSP機能を使ってF12でコードジャンプして実装を確認するのもいいのですが、GitHubでコードを眺めている…
同じスペックのPCなのにWindows 11開発環境が人によって不安定だったりすることがあります。 過去多かったのが高速スタートアップ由来だったので、今回はこれを無効(あるいは有効に戻す)方法メモです。 高速スタートアップが有効で不安定というのは割と悲し…
コマンドを並列に実行したいときxargsは便利です。今回はxargsなしだとコマンドが実行できるのに、xargsの中でコマンド実行するとinappropriate ioctl for deviceエラーが出たのでその原因と対処についてメモします。 inappropriate ioctl for deviceエラー …
dotnet toolはグローバルツールではなく、プロジェクトツールとして管理するとCIや開発メンバーの環境に依存せずツールを使うことができます。 今回は、プロジェクトのツールを復元するためdotnet tool restoreしたときに出たエラー対処についてメモです。 …
C#でテストを書いていて、不安定だがリトライすれば通るテスト(Flasky Test、フレークテスト)を避けられないことがあります。XUnitを拡張してRetryFact1を用意するのもいいのですが、もっとさっくりdotnet testをリトライしたいと考えたことはありませんか?…
Windows Terminalは便利ですが、cmdなどと同じ要領でエクスプローラーからwtで起動しても現在のパスで開いてくれません。 今回はこの対処です。 wtでエクスプローラーから起動したときに現在のパスを開く まとめ wtでエクスプローラーから起動したときに現在…
まれに時々CPUモデルをC#からほしくなることがあります。Zxなどを使ってlscpu的な情報をとるのもいいのですが、C#でマネージドに取得するメモです。 CPUモデルをコマンドで取得する C#でCPUモデルを取得する x86_64でCPUモデル取得 OS固有処理をプリプロセッ…
これまでWindows専用だったLINQPadですが、LINQPad 8になってmacOSがベータサポートされました。今回はLINQPad for macOS (Beta)をApple M2、macOS Sequoia 15.2で試してみましょう。 LINQPad for macOSの状況 LINQPad for macOSを使ってみる インストール …
C#で配列同士の差分を確認したいときがあります。そんな時LINQPadのUtil.Difを使うと便利でというお話。 配列の差分を確認する まとめ 配列の差分を確認する LINQPadはC#をサクッと書いて実行できる軽量なプレイグラウンドです。ずっと前に布教されてからず…
C#のRedisクライアントライブラリといえばStackExchange.Redisが定番です。StackExchange.Redisを使っていて困るあるある筆頭は「デフォルト設定ではRedisのフェイルオーバーに追随しないこと」ではないでしょうか。今回は、ElastiCache for RedisやMemoryDB…
Terraformの実行結果をoutputで出力するとき、mapやlistから単一文字列(複数行)をHeredocとして出力したいことがあります。 今回はDirectivesとHeredocを使っていい感じの文字列を生成する方法を紹介します。 いい感じの文字列とは いい感じじゃない文字列出…
GitHub Actionsには、ワークフローの実行時に渡すパラメータを定義するinputsがあります。このinputsを使うことで外部から変数を受け取ることができます。 今回はinputsで渡した変数を環境変数として受け取れる時と受け取れない時の違いについてです。 input…
「〇〇サービスの管理画面が外部からアクセスできるようになっていました」いつ聞いてもドキッとする事例です。 今回は、外部からアクセスできるべきでないサイトを監視するジレンマについて考えてみます。 外部からアクセスできないことを担保するとは 逆転…
Bashでファイル検索するときにグロブ(Glob)を使うことがあります。C#でもグロブ検索したくなったので状況を見てみましょう。 グロブ検索とは グロブパターン C#でグロブ検索する Directory.EnumerateFilesを使う Microsoft.Extensions.FileSystemGlobbingを…
2023年にAWS Route53からCloudFlareにドメインを移管していたのですが記事にしていませんでした。今回はその過程でやった、DNS管理をCloudFlareに移管する1流れの紹介です。当時の内容なので、今と画面が違ってもご容赦ください。 なぜCloudFlareのDNS管理を…
.NET CLR1情報を取得するライブラリを数年前に作ったのですが、改めて便利なので公開しました。今回は.NET CLR監視のススメです。 guitarrapc/ClrProfiler .NET CLR情報とは EventListenerとEventPipeの使い分け EventListener API ClrProfiler Datadogで可…
C#プロジェクトで参照しているNuGetパッケージのライセンス一覧を取得する方法が気になって調べたので紹介します。 ライセンス一覧を取得する方法 dotnet list packageとNuGet APIを使う sensslen/nuget-licenseを使う aaronpowell/dotnet-deliceを使う Cycl…
NuGetにはVisual Studioでパッケージをインストールするときに自動的に実行されるスクリプトの仕組みがあります、それがtools/init.ps1です。 前々からNuGetパッケージインストール時に警告なくスクリプトが実行されて嫌だなぁだと思っていましたが、今回は…
ConsoleAppFrameworkでasync voidなコマンドは実行しても正常に完了できません。async Taskを使いましょう。以上です。 どのような挙動になるかを説明しておきます。 ConsoleAppFrameworkのCommand async voidの問題 対策 ConsoleAppFrameworkのCommand Cons…
Visual Studioを使っていて、フォルダのコンテキストメニュー(右クリックメニュー)に「Open with Visual Studio」が出て邪魔だなと思ったことはありませんか?Visual Studiは起動パスに.vs/を作るのですが、これで差分ができて悲しい思いを何度かしています。…
PowerShell 7以降をWingetでインストールする方法を紹介します。対象OSはWindowsです。 Microsoftが推奨するインストール方法 インストール可能なPowerShell PowerShellをインストール アンインストール まとめ Microsoftが推奨するインストール方法 Microso…
PowerShell 7以降をscoopでインストールする方法を紹介します。対象OSはWindowsです。 Microsoftが推奨するインストール方法 インストール可能なPowerShell PowerShellをインストール アンインストール 注意 まとめ Microsoftが推奨するインストール方法 Mic…
PowerShell 7以降をaquaでインストールする方法を紹介します。 必要条件 PowerShellをインストール アンインストール まとめ 必要条件 PowerShellがaquaレジストリに追加されたのは先日なので、4.292.0以上のバージョンが必要です。 aqua-registry | GitHub.…
前回の記事でWSL Ubuntu環境のツールインストールをaquaにした経緯をメモしました。 Ubuntu環境のCLIツールをasdfからaquaに移行した話 今回はAnsibleでローカル環境を構成するときにaquaをどのように構成しているのかメモです。 Ansibleでaquaツールをグロ…
私はWindowsでWSL Ubuntu環境を3つ動かしています。それぞれの環境に同じCLIツールをインストールする「バージョン管理ツール」をasdfからaquaに移行した記録を書き出しておきます。 asdfとaqua asdf aqua なぜaquaなのか asdfからaquaへの移行 aquaの注意点…
Zxを使うとシェルで実行するコマンドをawait "文字列"で実行できます。C#のZx(ProcessX)では文字列中に"が含まれるとエスケープが必要です。 このエスケープ挙動がWindows(cmd)とLinux(Bash)で異なるというメモです。 tl;dr; C#でZxを使う "のエスケープ ト…
コマンドラインアプリケーション(以降CLI)を用意するとき、バッチ処理となるメソッド本体の前後で処理を挟みたいことがあります。例えば、処理の前後にログを出力したい、所要時間を計測したい、処理前に前提を満たせているかチェックしたいなどです。 今回…
Terraformを使い始めてしばらくすると出会う課題が、プロジェクトで使用するTerraformバージョンを制約しつつ、Terraform利用者のインストール手間を減らすことです。 Terraformはバージョンアップによって挙動が変わりえるため、プロジェクトで利用するバー…
CI/CDサービスとしてのGitHub Actionsが増え、スケジュールで定期的に実行しているリポジトリを多く観測します。そんな中気になる記事があります。 GitHub Actionsで定期実行(cron)のワークフローを組んだユーザーが退職すると、ワークフローは無効化され…
C#(.NET)プロジェクトでNuGetパッケージを管理する方法はいくつかありますが、Visual Studio 2022 17.2以降 (NuGet 6.2以降)で導入されたCentral Package Managementはプロジェクトのパッケージ管理を簡単にする新しい方法です。これを使うと複数のcsprojフ…