Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新(準備中)

May 8, 2025 - 日記

gitcache:大規模リポジトリの操作を高速化するローカルキャッシュツール

大規模なGitリポジトリを扱う場合や、同じリポジトリの複数のクローンを作成する場合、ネットワーク帯域幅とディスク容量の消費が問題になることがあります。今回は、これらの問題を解決するための便利なツール「gitcache」を紹介します。

gitcacheとは

gitcache は、Gitリポジトリのローカルキャッシュを提供するツールです。大規模なリポジトリや複数のクローンを扱う際のパフォーマンスを向上させることを目的としています。

基本的な考え方は、ローカルにベアミラーを作成し、必要に応じて更新して、それを複数のローカルリポジトリのソースとして使用するというものです。

May 5, 2025 - 日記

Dockerコンテナからホスト上のコマンドを実行する

nsenterコマンドを使ってDockerコンテナからホスト上のコマンドを実行する方法について紹介します。

nsenter を使ってホストのネームスペースに入る

コンテナを特権モードかつホストの PID ネームスペース共有で起動し、nsenter を用いるとホストのルートプロセス(PID 1)のネームスペース内でコマンドを実行できます。

docker run -it --rm \
  --privileged \
  --pid host \
  debian:stable-slim \
  nsenter -t 1 -m -u -n -i bash

nsenter コマンドは、既存のプロセスが属する名前空間(namespace)内で指定したプログラムを実行するためのコマンドです。オプションで指定したPIDのプロセスが持つマウント、UTS、IPC、ネットワーク、PID、ユーザー、cgroup、timeなどの名前空間に入ります。プログラムを指定しない場合はデフォルトで${SHELL}(通常は/bin/sh)が実行されます。

Mar 13, 2025 - 日記

Cursorと Grafana LokiをMCPで繋いで開発体験を向上させる

ソフトウェア開発において、効率的なデバッグとトラブルシューティングは生産性に大きく影響します。特に複雑なアプリケーションを開発する際、ログの管理と分析は重要な要素となります。

この記事では、以下のツールを組み合わせて、ローカル開発環境でのログ管理と問題解決を効率化する方法を紹介します:

over all of grafana loki mcp cursor

  1. local-logs - ローカル環境に簡単にGrafana Lokiスタックを構築するツール
  2. grafana-loki-mcp - CursorのMCP(Model Control Protocol)にGrafana Lokiを統合するプラグイン
  3. Cursor - AIを活用したコーディング支援IDE

これらを組み合わせることで、開発中のアプリケーションのログをリアルタイムで収集・分析し、CursorのAIエージェントがログデータを基に問題解決を支援する環境を構築できます。

Jan 10, 2025 - 日記

MacOSのHostName3つある

奇妙なことにMacOSには3種類のホスト名が存在します。それぞれ役割や設定方法が異なるため、混乱することもあるでしょう。 このブログでは、MacOSにおける3種類のホスト名の違いと設定方法、そして hostname コマンドによる一時的な変更手順について解説します。

結論: ホスト名を変更するときには HostNameComputerNameLocalHostNameすべて変更しましょう。

Jan 9, 2025 - 日記

AIによるスペックテストの変更をガードする方法

テスト駆動開発(TDD)では、顧客の分析された顧客の要求仕様をテストケースとして初期段階に完成させますが、 開発者やAIがこのテストケースを変更してしまってはTDDの意味がありません。

本稿では、Pythonの pytest を使ってテストを書いている中で、顧客レビュー済みの**スペックテスト(仕様テスト)**を開発者が変更してしまうのを防ぐためのアイデアをご紹介いたします。

Jan 8, 2025 - 日記

Dockerコンテナをone-off実行するAPI OneOffDockerRunner

Dockerコンテナで “ちょっとした処理” を “単発のスクリプト実行” をしたい場面があり、簡単なAPIを開発しました。 OneOffDockerRunner は、FastAPI + Docker SDK(Docker-Py)を使って開発された、一度きりのDockerコンテナ実行をサクッとREST APIから行えるソフトウェアです。

たとえば「イメージを指定してコマンド1回だけ実行したい」「イメージを都度pullして認証が必要なプライベートリポジトリにも対応したい」などのニーズに応えます。 今回は、このツールの機能・使い方をざっくり紹介します。

Jan 7, 2025 - 日記

PgBouncerの高可用性構成(HA)

PostgreSQL環境でPgBouncer を高可用性構成で実装する際の考え方を解説します。バックエンドのPostgreSQL自体のHA構成は考慮せず、あくまでPgBouncer側のみを高可用性化する方法を簡単な構成例とあわせて解説します。

Jan 6, 2025 - 日記

GitHub Actionsでcronを実行する

GitHub Actionsは、リポジトリのコードを基盤にCI/CDタスクを自動化するための強力なツールです。その中でも cron スケジュールを利用することで、特定のタイミングで定期的にジョブを実行できます。本記事では、GitHub Actionsを使ってcronタスクを設定する方法、利点と欠点、さらに具体的な利用例について解説します。

Jan 5, 2025 - 日記

uv のサブコマンドを分類して完全に理解した

最近Python のプロジェクト管理ツールである uv を使い始めました。

そのサブコマンドは一見シンプルに見えますが、似たような機能に見えるコマンドがあるため 「どのコマンドを使えばいいの?」と戸惑うことがあります。 これは、 uv のサブコマンドに「低レベルの機能」と「高レベルのラッパー」が混在しているためです。

この記事では、 uv のサブコマンドを低レベルの機能と高レベルのラッパーに分類し、それぞれの役割や使いどころを整理してみます。特に、普段遣いで便利な高レベルのラッパーに注目し、効率的な使い方を解説します。

Jan 4, 2025 - 日記

2台のMacBookでAIクラスターexoを動かす

最近注目を集めているオープンソースの分散AIクラスターソフトウェア exo を、手元のMacBook 2台を使って試してみました。本記事では、exoの概要、インストール方法、設定、そして実際の使用感について詳しく紹介します。