なつねこメモ

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

Blender 4.1 以降で D&D に対応したい場合は、 FileHandler API を使おう

Blender 4.1 で念願のドラッグ&ドロップを検出する FileHandler API が追加されました。 これによって、例えば *.txt なファイルを 3D View にドロップしたら、なんらかのインポート処理をはしらせる、などと言った事が公式で可能になります。 使い方は公式…

Prisma を Bun (Docker) で使いたいときは

Prisma を Bun (Docker 内) で使いたい場合、 prisma generate が確率的に失敗する。 成功率は 5% くらいで困る。そういうときの解決方法について。 結論としては、 Bun と Node.js 両方が含まれた Docker イメージを使って生成すること: github.com これは…

MySQL で複数のインデックスを明示的に使い分けたい

例えば次のようなテーブルとインデックスがあったとき: CREATE TABLE `CatalystStatus` ( `id` varchar(191) NOT NULL, `body` text NOT NULL, `userId` varchar(191) NOT NULL, `createdAt` datetime(3) NOT NULL DEFAULT current_timestamp(3), `updatedA…

HonoX で TailwindCSS を使おう

HonoX 0.1.19 で外部でビルドされる (ここでは HonoX によって直接ビルドされるのではなく、 Vite や PostCSS を指す)、CSS の差し込みに対応したので、 TailwindCSS のような PostCSS でビルドされてスタイルが決定されるようなスタイリング手法も使える…

Lego で DNS のマニュアル認証が通らない

Lego という Let's Encrypt の証明書を上手いこと取得してくれるツールがある。 基本的には DNS-01 チャレンジを使う場合、対応している DNS プロバイダーであれば環境変数を渡すことで自動化できるのだが、ちょっと手元で証明書欲しいナ~というときは手動 …

HonoX で `app/` ディレクトリ以外でももろもろを動作させたい

素直に app/ でやれば良いのだが、やんごとなき理由で app/ 以外の、例えば src/ や my-worldest-strong-app/ などで開発したいことがある (かもしれない)。 そういうときにやると良いハック。 PR は送るべきか悩んで放置している。 まずは HonoX にパッチを…

WPF で Binding 後に解決されたクラスとプロパティを取得したい

WPF で XAML 側に DataContext や ViewModel を代入した後、実際に Binding で解決された結果を使いたいケースがある (ほんとうに?)。 そういうときに使うテク。 例えば以下のような XAML があったとき:

System.Text.Json でフィールドもシリアライズ・デシリアライズしたい

C#

System.Text.Json は、デフォルトでは下記クラスメンバーのウチ、フィールドはシリアライズ対象とならない。 class ClassA { public int Field; public int Property { get; set; } } var json = JsonSerializer.Serialize(new ClassA { Field = 1, Property…

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 として反映されているものにもドメインを割り当てたいと思…