tech.guitarrapc.cóm

Technical updates

2025-02-01から1ヶ月間の記事一覧

CPUなどリソース監視をする時にノイジーアラートを抑制する

CPUなどのリソース監視をする際にノイジーアラートを抑制するために普段とっている基本的な方針のメモです。 ノイジーアラートは抑制しないといけない リソースの監視 CPUの監視 メモリの監視 ノイジーアラートを抑えたリソース監視 値はaverageかmedianを用…

Target-typed newと暗黙的型変換を期待するAPI

C# 91から利用できるTarget-typed newは使い方によっては非常に便利です。 ただ、ライブラリのAPI設定次第で使いたいときに使えないというシーンもあるのでメモです。 暗黙的型変換を期待するAPIではTarget-typed Newは使えない Pulumi C#で頻出のAPIパター…

PulumiでAWSリソースのデフォルトタグを設定する

TerraformでAWSリソースを作成するときの定番がデフォルトタグです。Pulumiでもデフォルトタグを設定できるようになったのでメモです。 デフォルトタグは便利というレベルじゃない Pulumiのデフォルトタグはこれまで面倒だった Pulumiのスタックコンフィグで…

Nulab Backlogのドキュメント機能とWiki機能の違いと使い勝手

世の中Markdownライク1にかけるドキュメントサービスはたくさんあります2。 さて私もいろんなサービスでドキュメントを書いてきたのですが、その中でもBacklog Wikiは機能が貧弱で書き心地が決してよくありませんでした。そんな折、2024年9月にリアルタイム…

DatadogへのCloudWatch Metric Streamを使ったメトリクス送信をPulumi C#で書く

前回の記事でDatadogにCloudWatch Metric Streamを使ってメトリクスを送信するCloudFormation StackをPulumi/Terraformから呼び出す方法を書きました。今回は、CloudFormation StackでやっていることをPulumi C#にポートします。 なぜポートするのか Pulumi …

AWS CloudWatch Metric Streamを使ったDatadogメトリクス送信とPulumiやTerraformからのCloudFormation Stack呼び出し

DatadogはAWSのCloudWatchメトリクスの取り込みをPull方式とPush方式の両方サポートしています。いわゆるDatadog AWS IntegrationはPull方式でCloudWatchメトリクスを10分程度のレイテンシーで取り込みます。一方で、AWS CloudWatch Metric StreamはPush方式…

C#で隣接するIPv4 CIDRを集約表記にする

C#

隣接するIPv4のCIDRを集約表記にする処理を書いたのでメモです。 IPv4 CIDRをまとめるとは C#で隣接するIPv4 CIDRを集約表記にする アドレスがまとまる様子 Pythonならipaddress.collapse_addressesを使う まとめ IPv4 CIDRをまとめるとは CIDRはIPアドレス…

Windows 11のコンテキストメニューからAMD Software: Adrenalin Editionを消す

以前の記事でWindowsのコンテキストメニュー1からアイテムを消す方法を紹介しました。今回はWindows 11から導入された新コンテキストメニューのアイテムを消す方法です。 なお、レジストリを触るので自己責任でお願いします。 モチベーション 削除するClassI…

setup-dotnetと同じglobal.jsonの解釈をC#で用意する

C#

GitHub Actionsのsetup-dotnetアクションは、global.jsonを解釈して.NET SDKをインストールできます。ただ、global.jsonサポートは限定的でバージョン直指定かrollForwardlatestFeatureのみ対応しています。 気まぐれでC#でもサクッと同じものを用意したので…

.NET SDKのバージョンをglobal.jsonで固定するのが有効なシーンを考える

C#

.NETはglobal.jsonファイルを使って、利用する.NET SDKのバージョンの制限を表現できます。 あまりglobal.jsonを有効に機能させられるシーンはないと考えていたのですが、ワークアラウンドを見てなるほど思ったので.NET SDKのバージョンを固定することが有効…

GitHub ActionsでダウンロードしたActionsのパス

GitHub Actionsが他CIと決定的に違うポイントの1つがカスタムアクションです。他のCIサービスにも類するものはありますが、圧倒的なボリュームと参照しやすさ、作りやすさが他のCIサービスと一線を画しています。1 今回はそんなカスタムアクションの豆知識で…

2024年9月のS3 Lifecyce Transitionの変更に伴うaws_s3_bucket_lifecycle_configurationの変更

以前記事を書いたEphemeral Resourceに対応するにはAWS Providerの更新が必要。ということでAWS Provider 5.87.0に更新作業をしていたところ、2024年9月のS3 Lifecyce Transitionの変更に伴うaws_s3_bucket_lifecycle_configurationの破壊的変更がAWS Provid…

はてなブログで最終更新からn日経過した記事で警告を出してみる

このブログも最終更新から日数が経過して古い情報があると時々感じます。 ということで、はてなブログで最終更新からn日経過した記事で警告を出すようにしたメモです。 見た目 事前作業 警告を出す処理 まとめ 参考 見た目 次のような表示になります。私は3…

TertraformでStorage LensをFree metricsで展開する

S3のStorage LensはFree metricsだけでも割と便利なので、Terraformで展開したくなるのですがやったことなかったのでメモです。 うっかり展開するとすぐにAdvanced metricsが有効になるので罠っぽさありました。 Storage LensをFree metricsで展開する 失敗…

TerraformのWrite-only Argumentsを使ってStateに値を残さずリソースに値を渡す

以前の記事でTerraform 1.10.0からEphemeral resourceが追加されたことを紹介しました。 Terraform 1.10時点ではData Sourceの置き換えとしてのEpehemeral Resourceであって、通常のリソースでパスワード的なものをStateを残さないようにはできません。これ…

.NET SDK 9.0.200でdotnet formatがsource text did not have an identifiable encodingで失敗する

非常に残念ですが、.NET SDK更新でdotnet formatのバグに出会うことがあります。先日リリースされた.NET SDK 9.0.200もそうです。さくっと見てみましょう。 2025/2/27 追記 2025/2/27に修正PR #77354が作られて解消されました。 Visual Studio 2022 17.13と1…

Visual Studio 2022 17.13.0でデフォルトエンコーディングを設定できるようになった

Visual StudioでC#コード中に日本語入れるとshift-jisになることは何度か触れてきました。.editorconfigを使ったchartsetを制御する記事も書いたのですが、2025/Feb/13に降ってきたVisual Studio 2022 17.13.0でデフォルトエンコーディングを設定できるよう…

TerraformのEphemeral resourceをどう使うのか

Terraform 1.10.0からEphemeral resourceが追加されました。これは各プロバイダーが対応するEpheemeral resourceと組み合わせて使う安全なData Sourceと呼ぶべきものです。 今回はEphemeral resourceをどのように使うのか調べたメモです。 関連して、Terrafo…

LINQPadでBenchmarkDotNetを使う

C#

dotnet/BenchmarkDotNetは.NETコードのベンチマークライブラリで、デファクトスタンダードとして使われています。クラスやアセンブリ単位に実行したり、ベンチマークの試行回数調整やパラメーターセットアップも容易で非常に使いやすく、私自身もよく使って…

TargetFrameworksを指定しつつDockerビルドしたい

TargetFrameworksを用いると複数のフレームワークに対応したライブラリを作成できます。今回は、このTargetFrameworksを指定しつつDockerビルドする方法を紹介します。 なお、コンテナで複数ランタイムを持つ意義はほぼないので、この記事はただの興味本位で…

tflintを使ってCIでTerraformのコードをチェックする

Terraformのコードが一定のルールを守っているかチェックするためのツールとしてtflintがあります。tflintを使うといわゆるプログラミング言語のアナライザーのようにTerraformのコードを解析し、構文エラーやベストプラクティスに反している箇所を指摘しま…

C#のコード設定を.editorconfigで統一する

C#

.editorconfigは様々な言語でコードの設定を統一するための設定ファイルです。C#も.editorconfigを使うとコードフォーマットやアナライザーの設定できます。今回は私がこれまでC#で.editorconfigを使ってきておすすめ設定と避けたほうがいいと考えている設定…

ラッパーコマンドをConsoleAppFramework v4からv5へ移行する

C#

前回の記事でラッパーコマンドの場合、ConsoleAppFramework v5へ移行する悩みを書きました。その後ConsoleAppFramework 5.4.0がリリースされ、ラッパーコマンドへの引数を渡しがサポートされました。これによってConsoleAppFramework v5でもラッパーコマンド…

ラッパーコマンドをConsoleAppFramework v4からv5へ移行できないポイント

C#

ConsoleAppFrameworkはv4からv5で仕様が大きく変更されました。その中にはやりにくなったことやできなくなったこともありますが多くは改善されました。v5リリース後の改善状況は作者の記事やいくつかの記事で紹介されているのでそちらをどうぞ。 私も手元の…

ローカルのRedis ClusterにVisual Studioでデバッグ実行する

以前の記事で、Docker Composeを使ってローカルマシンにRedis Clusterを構築しました。 今回は少し発展させて、Visual Studioで同Docker Composeにアプリケーションをコンテナ起動 & デバッグ実行する方法を紹介します。 接続図 Visual StudioのDocker Compo…

terraformの自前モジュールのドキュメントをCIで自動整備する

Terraformの課題の1つは、モジュールなどに実装を閉じ込めても、そのモジュールのvairables/outputsの型を判別するにはLSP1が脆弱なことです。 VS CodeのLSP機能を使ってF12でコードジャンプして実装を確認するのもいいのですが、GitHubでコードを眺めている…

Windows 11開発環境と高速スタートアップ無効

同じスペックのPCなのにWindows 11開発環境が人によって不安定だったりすることがあります。 過去多かったのが高速スタートアップ由来だったので、今回はこれを無効(あるいは有効に戻す)方法メモです。 高速スタートアップが有効で不安定というのは割と悲し…

xargsでコマンド実行時にinappropriate ioctl for deviceエラーが出る原因と対処

コマンドを並列に実行したいときxargsは便利です。今回はxargsなしだとコマンドが実行できるのに、xargsの中でコマンド実行するとinappropriate ioctl for deviceエラーが出たのでその原因と対処についてメモします。 inappropriate ioctl for deviceエラー …