なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

PowerShell で出力を無に葬り去りたい

PowerShell を使っているとき、例えば New-Item をしたときなど、別に必要ないのに丁寧な出力結果をしてくれることがある。 $ New-Item -ItemType Directory -Path ./dir Directory: C:\Users\natsuneko\dir Mode LastWriteTime Length Name ---- ----------…

Kubernetes で Pod から外部の名前解決ができない

k8s

なぜか Pod 内部から外部、つまりはインターネットへの名前解決が一切できなくなって困っていたのでメモ。 解決方法としては、 Pod を再起動すれば良かった。 $ kubectl -n kube-system rollout restart deployment coredns 参考: dns - Kubernetes: Pods Ca…

Tailscale を使っている状態で k3s クラスタを構築したい

k8s

k3s という軽量 Kubernetes があります。 これを Oracle Cloud 上にある、 Tailscale で接続している Compute Instance に構築しようとしていて、ハマってしまったので備忘録。 前提: Tailscale k3s ドキュメント通りに行くなら、マスターノードとなるイン…

Rust でバイト配列から数値に変換したい

[0x12, 0x34, 0x56, 0x78] みたいなバイト配列から数値へ変換したいケースがある。 その時、読み取り対象によってはビッグエンディアンだったりリトルエンディアンだったりするけど、自分で考えると面倒なので、それを良い感じにする方法。 といっても Rust …

Roslyn の IMethodSymbol で拡張メソッドを扱いたい

C# / VB.NET のコンパイラーである Roslyn はライブラリとして扱うこともでき、コード解析などを行うことができる。 その中でメソッドについての情報が格納されるのが IMethodSymbol だが、以下のような拡張メソッドの場合は、拡張メソッドそのものでは無く…

GitHub Actions の Problem Matcher でデフォルトの Severity を Warning にしたい

GitHub Actions には Problem Matcher といって、stdout やファイルなどに出力されたメッセージを Pull Request などで表示するための機能があります。 こういうの 多くの場合、エラーメッセージと一緒に Severity といって、このメッセージは警告なのかエラ…

AWS Route 53 で256文字以上の TXT レコードを設定したいときは

AWS

DNS の仕様として、 TXT レコードには単一の文字列として 255 文字が最大となっています。 AWS の Route 53 もその仕様に従っているんですが、 DKIM キーなどを設定する際、 256 文字以上になるケースがあるので、値を分割して設定することで、256 文字以上…

The inferred type of 'X' cannot be named without a reference to 'Y'. This is likely not portable. A type annotation is necessary.

pnpm 使って特定の tsconfig.json (Vite のデフォルトの tsconfig.json など) を参照した状態で tsc を走らせると、型エラーが出ることがある。 下記は、その例: The inferred type of 'default' cannot be named without a reference to '.pnpm/vite@5.0.1…

.NET MAUI Blazor Hybrid アプリで Tailwind CSS を使いたい

.NET MAUI Blazor Hybrid アプリというものがあります。 これは、 .NET でクロスプラットフォームなアプリを作成するためのフレームワークで、 Xamarin.Forms の後継です。 同様に、 ASP.NET Core Blazor というものがあり、これは .NET と C# を利用して、 …

dotnet build コマンドで特定のプロジェクトだけビルドから除外したい

例えば GitHub Actions などで定期的にビルドを行っている際、大部分は net8.0 だが特定のプロジェクトだけは net8.0-windows を指定している、などの理由で、ビルドから除外したいケースがあります。 そのとき、 Microsoft Learn では該当プロジェクトを除…

Traefik で Let's Encrypt の DNS チャレンジを Cloudflare でしたい

Traefik というクラウドネイティブ時代に合わせた良い感じのリバースプロキシーを使う機会があって、その際 Let's Encrypt での証明書生成もこいつだけでできるとのことだったので、やり方のメモ。 こういった docker-compose.yml (関係ない部分は略) があっ…

CI 上の Git 操作で差分があるときだけcommit したい

Git

GitHub Actions などで、ファイルを定期的に自動生成して、 commit & push する場面がちらほらあると思います。 そのとき、適当な外部の Action を使っても良いですが、そこまででもないな......というときのためのメモ。 自動生成して commit & push する場…

Terraform の Cloudflare Provider で CAA レコードを作成したい

Terraform で Cloudflare の DNS 設定を管理していたけど、微妙に詰まったのでメモ。 Terraform の Cloudflare Provider で CAA レコードを追加しようと思って調べてみると、以下のように出てくる。 Creation of CAA records · Issue #821 · cloudflare/terr…

Google Chrome 拡張機能 / Firefox アドオン作成ボイラープレート 2024

この記事ははてなエンジニア Advent Calendar 2023 の 12 月 37 日......もとい 2024 年 1 月 6 日の記事です。 みなさんは Google Chrome 拡張機能や Firefox のアドオンは書いたことありますか?わたしは 2 年に 1 回くらい、なぜか書くタイミングがありま…

Volta でグローバルインストールしたツールを Node.js バージョンを指定して実行する

例えば、 Volta で以下のように Node.js バージョンを管理していたとする。 # global $ node -v v20.10.0 # project-a $ node -v v18.19.0 ここで、 pnpm を公式サイトにあるようにインストールしたとする。 $ volta install pnpm $ pnpm --version 8.11.0 $…

SSH で Windows マシンにアクセスしたい

Windows 標準の OpenSSH サーバーで建てた SSH サーバーに対してアクセスしようとしたらいろいろ詰まったのでメモしておきます。 Windows 標準の OpenSSH サーバー自体は、設定から可能なのでそれをやった後の話。 前提条件: Windows 11 もしくはそれと同等…

SteamVR でなぜかちまちまオーバーレイが視界の中央に来るように調整されるのでやめさせたい

SteamVR 2.0 になった位のタイミングで SteamVR のオーバーレイメニューを開いて視界を移動させると、謎の間隔で視界の中央に来るようになってしまったので、やめさせる方法。 といってもこれは SteamVR の機能としてあるわけでは無く、 XSOverlay のアップ…

違うファイル同士でも git diff で差分を表示したい

Git

Windows だと diff コマンドがそもそも入っていなかったり、オリジナルの diff コマンドのパラメータ覚えてなかったりで、 git diff の形式で差分が見たいケースがあるとき。 そういうときは、次のようにすると何の関係の無いファイル同士でも差分が見られる…

System.CommandLine の Handler で DI 使いつつ InvocationContext もほしい

C#

System.CommandLine という Microsoft による .NET のコマンドラインライブラリがあります。 これを使うと (一生プレビュー版ではあるものの) わりと簡単にコマンドラインアプリを作れるのですが、今回はそれについての記事です。 各サブコマンドを定義後、…

ATOK の契約を切り替えたい

ATOK お使いでしょうか。 Google IME よりは優秀だと思っていた時期もあったんですが、最近はそうでもないですね。 ところで、 ATOK にはいくつかの契約形態があります。例えば、 ATOK Passport プレミアムプラン (月額) ATOK Passport プレミアムプラン (年…

Unity で動的に UXML を生成・読み込みしたい

Unity で UXML を動的に生成したいことってありますよね?わたしはあります。 例えば、 UXML で記述できる HTML もどきは仕様が古すぎて、 HTML Living Standard っぽく記述した物をトランスパイルするとか......。 ということで、その方法のメモ。 とはいっ…

Cloudflare Pages で Preview Deployment にもドメインを割り当てたい

Cloudflare Pages 便利ですよね。 push するだけでビルドするのはよくありますが、そこから Cloudflare がもつ世界中のサーバーに投げてくれるのはとても良いです。 ところで、 Preview Deployment として反映されているものにもドメインを割り当てたいと思…

wait-on が Node.js 18 で動かない

先週は忙しすぎて死んでいた......。 ということで、本題の話。 Storybook を GitHub Actions で動かしたいとき、サンプルに npx wait-on tcp:6006 として他プロセスのサーバーが起動するのを待つ、というものがあるんですが、それが Node.js 18 だと一生終…

GitHub でシンタックスハイライトを任意の言語として表示させたい

GitHub で認識できないけど JSON の拡張である hujson を GitHub 上で表示されると、シンタックスハイライトが効きません。 でもこいつは JSON なので、 JSON として認識させて、かつシンタックスハイライトもして欲しい! という場合は、 .gitattributes を…

VictoriaMetrics + Grafana で SwitchBot で取得した温度・湿度を可視化したい

SwitchBot 、便利ですよね。 そこそこ安くて、かつ一応 SwitchBot にロックインされるということもないので、わたしも使っています。 ところで、 SwitchBot の温湿度計やプラグでは、 API 経由で各種値が取得できます。 今回はそれらを VictoriaMetrics とい…

Alpine Linux に Tailscale を入れたい

VPS へ SSH した~い!けど Cloudflare 通してるので生 IP だしたくないし覚えてもな~い! というときに便利かもしれない Tailscale を入れてみましょう。 ということで、インストールしていきましょう。 公式的にはスクリプトがあるんですが、 sudo じゃな…

Cloudflare Workers を使って Web ページを段階的に移行したい

Web サービスリニューアルしたいことってありますよね? ただ、一度に一気にリニューアルすると、想定していない不具合が出てきたり、今の運用どうするの?っていう問題があったりします。 そこで、 Cloudflare Workers を使って段階的に移行する方法を紹介…

GitHub の Label を一括で管理したい

嬉しいことにわたしが持っているいくつかのリポジトリについて、 Issue をちらほらたててもらえるのですが、どれがすでに見たものか、などが分からないことが出てきました。 そこで、ラベルでうまいこと管理しようと思ったのですが、個人でかなりの数のリポ…

Contentful に Rich Text データを API 経由で登録したい

海外の大手 CMS に Contentful があるんですが、 API ドキュメントがびみょーに分かりにくいのでメモ。 例えば、ある Entry に対してデータを作成したい場合、こんな感じでリクエストを投げてね、とあります。 import { createClient, Environment } from "c…

React で子コンポーネントのテキストのみを取り出したい

React で children で渡ってきた子コンポーネントのうち、テキスト部分だけ取り出したいこと、ありますよね? そういうときに便利なのが React Children Utilities です。 こんな感じで使えます。 import Children from "react-children-utilities"; type Pr…