プライベートのサービスでは、手頃な (かつ安く運用できる) 全文検索エンジンとして、 Meilisearch を使っています。 www.meilisearch.com わたしの Oracle の安いインスタンスでも (インデックス数が少ないのが大部分の理由ではあるとは思いつつ) 高速に動…
HonoX、便利ですよね。 Next.js ほど巨大なフレームワークを使いたくない場面などで、セットアップも簡単、さっと初めてさっとデプロイできるという点で大活躍です。 github.com そんな HonoX ですが、 vite.config.ts に設定を加えることで MDX もルーティ…
例えば Node.js モジュールを書いていて、リポジトリ A と B があったとして、それをモノレポ C としてまとめたかったとします。 そういうときはファイルをコピーして新しいリポジトリに入れる方法もありますが、履歴を引き継いだ状態でやりたくなったので、…
AWS CDK を使って、 AWS Lambda のコンテナイメージを使用した関数 をデプロイしたのでメモしておく。 まずはプロジェクト初期化: $ pnpm install -g aws-cdk $ cdk init app --language typescript 初期化できたら、 lib/xxx-stack.ts を編集。 以下のよう…
Go で map[string]string なディクショナリがあったとして、キー a が存在するかどうか調べたいときのスニペット value, ok := dictionary[key] if ok { // 要素があるよ! } 言語によって、ディクショナリのキーにないものにアクセスするとどうなるのか、が…
Blender は 4.2 から、無料かつ OSS なアドオンであれば、登録・承認をされることで Blender Extensions Platform から簡単にインストールやアップデートができるようになります。 詳しくは3D人さんのブログがわかりやすいです: 3dnchu.com 今回、昔から配…
Cloudflare Images を使うことで、ある程度予測可能な金額で、あらかじめ指定したサイズにて最適化された画像を配信することができる (クエリパラメータで制御することもできる)。 www.cloudflare.com 画像は下記のような URL で配信されるが、これを自前の…
Blender 4.1 で念願のドラッグ&ドロップを検出する FileHandler API が追加されました。 これによって、例えば *.txt なファイルを 3D View にドロップしたら、なんらかのインポート処理をはしらせる、などと言った事が公式で可能になります。 使い方は公式…
Prisma を Bun (Docker 内) で使いたい場合、 prisma generate が確率的に失敗する。 成功率は 5% くらいで困る。そういうときの解決方法について。 結論としては、 Bun と Node.js 両方が含まれた Docker イメージを使って生成すること: github.com これは…
例えば次のようなテーブルとインデックスがあったとき: 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 0.1.19 で外部でビルドされる (ここでは HonoX によって直接ビルドされるのではなく、 Vite や PostCSS を指す)、CSS の差し込みに対応したので、 TailwindCSS のような PostCSS でビルドされてスタイルが決定されるようなスタイリング手法も使える…
Lego という Let's Encrypt の証明書を上手いこと取得してくれるツールがある。 基本的には DNS-01 チャレンジを使う場合、対応している DNS プロバイダーであれば環境変数を渡すことで自動化できるのだが、ちょっと手元で証明書欲しいナ~というときは手動 …
素直に app/ でやれば良いのだが、やんごとなき理由で app/ 以外の、例えば src/ や my-worldest-strong-app/ などで開発したいことがある (かもしれない)。 そういうときにやると良いハック。 PR は送るべきか悩んで放置している。 まずは HonoX にパッチを…
WPF で XAML 側に DataContext や ViewModel を代入した後、実際に Binding で解決された結果を使いたいケースがある (ほんとうに?)。 そういうときに使うテク。 例えば以下のような XAML があったとき:
System.Text.Json は、デフォルトでは下記クラスメンバーのウチ、フィールドはシリアライズ対象とならない。 class ClassA { public int Field; public int Property { get; set; } } var json = JsonSerializer.Serialize(new ClassA { Field = 1, Property…
PowerShell を使っているとき、例えば New-Item をしたときなど、別に必要ないのに丁寧な出力結果をしてくれることがある。 $ New-Item -ItemType Directory -Path ./dir Directory: C:\Users\natsuneko\dir Mode LastWriteTime Length Name ---- ----------…
なぜか Pod 内部から外部、つまりはインターネットへの名前解決が一切できなくなって困っていたのでメモ。 解決方法としては、 Pod を再起動すれば良かった。 $ kubectl -n kube-system rollout restart deployment coredns 参考: dns - Kubernetes: Pods Ca…
k3s という軽量 Kubernetes があります。 これを Oracle Cloud 上にある、 Tailscale で接続している Compute Instance に構築しようとしていて、ハマってしまったので備忘録。 前提: Tailscale k3s ドキュメント通りに行くなら、マスターノードとなるイン…
[0x12, 0x34, 0x56, 0x78] みたいなバイト配列から数値へ変換したいケースがある。 その時、読み取り対象によってはビッグエンディアンだったりリトルエンディアンだったりするけど、自分で考えると面倒なので、それを良い感じにする方法。 といっても Rust …
C# / VB.NET のコンパイラーである Roslyn はライブラリとして扱うこともでき、コード解析などを行うことができる。 その中でメソッドについての情報が格納されるのが IMethodSymbol だが、以下のような拡張メソッドの場合は、拡張メソッドそのものでは無く…
GitHub Actions には Problem Matcher といって、stdout やファイルなどに出力されたメッセージを Pull Request などで表示するための機能があります。 こういうの 多くの場合、エラーメッセージと一緒に Severity といって、このメッセージは警告なのかエラ…
DNS の仕様として、 TXT レコードには単一の文字列として 255 文字が最大となっています。 AWS の Route 53 もその仕様に従っているんですが、 DKIM キーなどを設定する際、 256 文字以上になるケースがあるので、値を分割して設定することで、256 文字以上…
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 アプリというものがあります。 これは、 .NET でクロスプラットフォームなアプリを作成するためのフレームワークで、 Xamarin.Forms の後継です。 同様に、 ASP.NET Core Blazor というものがあり、これは .NET と C# を利用して、 …
例えば GitHub Actions などで定期的にビルドを行っている際、大部分は net8.0 だが特定のプロジェクトだけは net8.0-windows を指定している、などの理由で、ビルドから除外したいケースがあります。 そのとき、 Microsoft Learn では該当プロジェクトを除…
Traefik というクラウドネイティブ時代に合わせた良い感じのリバースプロキシーを使う機会があって、その際 Let's Encrypt での証明書生成もこいつだけでできるとのことだったので、やり方のメモ。 こういった docker-compose.yml (関係ない部分は略) があっ…
GitHub Actions などで、ファイルを定期的に自動生成して、 commit & push する場面がちらほらあると思います。 そのとき、適当な外部の Action を使っても良いですが、そこまででもないな......というときのためのメモ。 自動生成して commit & push する場…
Terraform で Cloudflare の DNS 設定を管理していたけど、微妙に詰まったのでメモ。 Terraform の Cloudflare Provider で CAA レコードを追加しようと思って調べてみると、以下のように出てくる。 Creation of CAA records · Issue #821 · cloudflare/terr…
この記事ははてなエンジニア Advent Calendar 2023 の 12 月 37 日......もとい 2024 年 1 月 6 日の記事です。 みなさんは Google Chrome 拡張機能や Firefox のアドオンは書いたことありますか?わたしは 2 年に 1 回くらい、なぜか書くタイミングがありま…
例えば、 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 $…