2025-01-01から1年間の記事一覧
概要 年の瀬なので2025年に買ってよかったものを挙げてきます。 Osmo Pocket 3 DJI vlogカメラ Osmo Pocket 3 1インチ CMOS 4K 120fps 動画対応 Vlog用デジカメ 3軸スタビライザー ジンバルカメラ アクションカメラ 高速フォーカス 顔 被写体トラッキング 回…
概要 通常データベースへの負荷を軽減するためにキャッシュレイヤを導入します。 しかしよくあるのは正常系のみキャッシュしており、 ゲームのイベント前でまだ404 ゲームのイベント期間が終了して404 動画の配信前でまだ404 動画の配信期間が終了して404 と…
概要 キャッシュにおけるアーキテクチャパターンをまとめておきます。 表形式にすると次のようになります。 パターン 読み取り速度 書き込み速度 データ整合性 主な用途 Cache Aside 高 中(キャッシュ層がオーバーヘッドにならない) 中(期限切れ考慮) 一般的…
背景 以前次のようにライブラリを利用して、Bitwarden上でsshキーを管理するやり方を紹介しました。 christina04.hatenablog.com 2025年1月からに公式もsshキーをサポートしていたので、公式のやり方を紹介します。 環境 macOS(M2) v15.7.2 Bitwardenデスク…
背景 ツールの補完を使う上でcompletionファイルの管理が必要です。 ただ生成AIやネット上ではbash-completionのv1なのかv2なのか情報が混ざっており、よく分からないことがあったので自分で整理することにしました。 環境 macOS v15.7.2 bash v5.3.8 bash_c…
背景 Claude Codeの権限の設定は自動化による効率化とリスクのガードレールを設計する上で非常に重要です。 { "permissions": { "allow": [ "Bash(find:*)", "Bash(grep:*)", "Bash(ls:*)", "Bash(cat:*)", "Read(~/.go/src)" ], "deny": [ "Read(**/*env*)"…
概要 glob はファイルシステムディレクトリ内の名前(パスなど)に対するパターンマッチングです。 身近な例で言うと.gitignoreなどがglobを使っています。 最近だとClaude Codeの権限管理であるRead()もこれを利用しています。 globは正規表現とごっちゃに…
概要 Notionでデータベースに議事録を残す事はよくありますが、どこにどんな内容が書いてあったかを一覧の状態で見たいことがあります。 そこでNotion AIを使って一覧にできるようにする方法を紹介します。 方法 データベースを作成してる前提で、まずはプロ…
課題 従来広告の効果測定は、主にCookieやIPを使って以下の様にデータを突合していました。 しかしながら最近はプライバシー保護のためGDPRなどによってCookieレスが進んだり、これまでメディア(媒体)から連携されていたIPも連携されないような流れが出て…
概要 HTTPやgRPCなどのAPIでvalidationを実装する際、次のような課題に直面することがよくあります。 validationの実装を忘れる 正常系だけを考え、異常系のイメージがない validationがどこに実装されているか分からない クライアント側との認識がずれたり…
背景 以前以下の対応を行いましたが、 christina04.hatenablog.com ツールチップがスクショできないという問題に遭遇しました。 期待する挙動は以下なのですが、 実際はこのようにツールチップが消えてしまいます。 そのため別の方法で実現する必要がありま…
概要 PreparedStatement はSQLを実行する際に「SQL文の構造」と「パラメータ」を分離して扱える仕組みです。 それによって パフォーマンスの向上 セキュリティの向上 コードの可読性・保守性の向上 を図ることが可能です。 今回はその理由を説明します。 Pre…
概要 データベースを扱うと、パフォーマンス向上を考えた際に必ず出てくるコネクションプーリングについてです。 今回はコネクションプーリングの種類とその特徴についてと、各データベースの特性に合わせてどんな選択を取るのが良いかを説明します。 コネク…
背景 christina04.hatenablog.com で紹介したアーキテクチャの中にBloom Filterというものがありました。 今回はこちらの仕組みを説明します。 Bloom Filterとは Bloom Filterは 偽陽性(無いのにあると回答)はあるが、偽陰性(あるのに無いと回答)はない …
概要 LSMツリーを理解しやすくするためにアーキテクチャ、Write/Readフロー、コンパクションなどを図解します。 LSMツリーとは LSMツリー(Log-Structured Merge Tree)は、データベースやストレージで大量の書き込みを高速に処理するための仕組みです。 ア…
概要 最近は生成AIでドキュメントを書く人が増えています。 一方で「AIが書いた文は長くて読みにくい」と感じることがあります。 ここではそれについて以下の視点から説明します。 AI向け・人間向けドキュメントの違い 図とチャンク 図があると人間にとって…
概要 Slack上でダウンロードしようとしても、↓の状態でずっとローディング状態で固まる問題に遭遇しました。 なのでChrome上でSlackを開き直してダウンロードする、という手間をかけていました。 今回はこの問題の解決方法を紹介します。 環境 macOS 15.5 Sl…
概要 ターミナル上で osascript が使えなかった場合の対処方法です。 $ osascript -e 'display notification "Debug" with title "osascript"' としても無反応で、 $ osascript -e 'display notification "Debug" with title "osascript"' 2>&1 ; echo $? 0 …
背景 CursorとClaude Codeを連携しようとしたのですが、 このように連携されてはいるはずなのに、Claude Codeのマークが出ずチャットスタイルで連携することができませんでした。 環境 macOS v15.5 Cursor v1.1.6 Claude Code v1.0.35
背景 protobufのバージョンを見ると、 3.29.5 6.31.1 のような小さなケースと、 29.5 31.1 のような非常に大きなものが分散しています。 https://github.com/protocolbuffers/protobuf/tags どのバージョンを使えば良いのか理解できるよう説明します。
背景 MCP(Model Context Protocol)を使う上で、ローカルMCPサーバやリモートMCPサーバ、更にはそれらを集中管理するゲートウェイ的なサービスもあったりと複雑だと感じたので、それぞれのパターンを一度洗い出してみました。 事前知識 MCP(Model Context Pro…
概要 Istioを使ってサイドカーを利用している場合、ヘルスチェックの仕組みが通常のKubernetesとは異なります。 一見するとよく分からない仕組みになっているので図を用いながら説明します。 環境 Kubernetes 1.31.7 Istio 1.20.8 ヘルスチェックフロー 以下…
概要 ChatGPTでは以下のGIFのように、文字列が少しずつ出てくるUXになっています。 このUXの実現方法として Server-Sent Events というものがあるので、それに必要な知識や使い方を説明します。 環境 Go 1.24.3 Server-Sent Events Server-Sent Eventsとは S…
背景 以前紹介したように、モバイルアプリにログインする際にOAuth 2.0の認可フレームワークを使ったものがあります。 christina04.hatenablog.com これはRFC 6749のOAuth 2.0 Authorization Framework を使ったものですが、この中で曖昧だった(それによっ…
概要 手動運用している Cloudflare の管理を Terraform に移行する手順についてです。 環境 terraform 1.11 cloudflare provider v4.52.0 cf-terraforming v0.23.3 前提知識 APIキーの種類と使い分け Cloudflare には Global API Key(legacy) と API Token …
概要 Feature Flagを使いたいモチベーションとして、 Fractional Evaluation で一部のユーザにだけロールアウトしたい 年齢・性別によって表示させる物を変更したい のようなターゲティング機能があります。 OpenFeatureでターゲティングを実現する際には Ev…
概要 OpenFeature の Provider の使い方を以下のチュートリアルに沿って実現してみます。 openfeature.dev Provider には flagd を使います。 環境 Go v1.24.0 open-feature/go-sdk v1.14.1 flagd v0.11.1
概要 OpenFeatureはフィーチャーフラグマネジメントにおける標準規格として生まれました。 openfeature.dev 今回はそのOpenFeatureについて紹介します。 なぜ生まれたか? 従来 通常フィーチャーフラグ管理システムはこのようにアプリケーションと密に結合し…
概要 前回 christina04.hatenablog.com でOpenFGAについて紹介しました。 今回は実際にアプリケーションでどのように実装するかを説明します。 環境 OpenFGA Server 1.8.4 Go 1.24.0 全体イメージ アプリケーションサーバ、認証サーバ、認可サーバ(OpenFGA…
概要 OpenFGAという認可システムでは、ReBACという認可モデルが採用されています。 ベースとなっているのはZanzibarというGoogle Driveなどので使われているグローバル認証システムで、Google Driveを使ったことがある人はご存じの通り非常に細かい粒度での…