write ahead log

ロールフォワード用

AWS LambdaでRust engineでないPrismaを使うとエラーになった

PrismaもLambdaも全然詳しくない。

Lambdaの仕事で使うことになって調べたらハマったのでメモしておく。

この対処がベストなのかもわからない。

そもそも

PrismaはRustで書かれていたエンジンを使っていた。が、v6.16.0からRustなしでも使えるようにしているらしい。

Prisma - No Rust engine

エラー内容

で、上記サイトのコピペでコードを作るとこんな感じのエラーが出た。

PrismaClientKnownRequestError
...[中略]
ENOENT: no such file or directory, open '/var/task/node_modules/.prisma/client/query_compiler_bg.wasm
...[中略]

対処方法

デプロイ用のzipをbuildする際にnode_modulesからprismaのクライアントをコピーして同梱した。

wasmがないなら入れてしまえという感じ。

"postbuild": "mkdir -p dist/node_modules/.prisma && cp -R node_modules/.prisma/client dist/node_modules/.prisma/ && cd dist && zip -r index.zip index.js* node_modules",

参考

以下が参考にはなったが最後はAIでの調査でゴリ押しで乗り切った感がある。

情報少ないし業務で使うかは微妙だなぁ。

GitHub - Prisma - Error: ENOENT: no such file or directory, open '/var/task/prisma/generated/auth/query_compiler_bg.wasm

WSL2でdevcontainerからpushしたいので鍵を転送したい

とりあえず解決法

keychainを入れる

インストールして

sudo apt-get install keychain

.profileを以下のように変更する。

/usr/bin/keychain -q --nogui $HOME/.ssh/[GitHubで使っている秘密鍵]
source $HOME/.keychain/$(hostname)-sh

何をやったのか

なんかこんな感じらしい。

  1. ssh-agentが動いていれば鍵のコンテナへの転送はdevcontainer側でやる
  2. ssh-agentはWSL2で動かすとログインセッションごとにプロセス増える
  3. keychainというプログラムがよしなにしてくれる

参考

MCPの入門記事を読んだ

世の中はAI一色なので、入門記事を読んで配管通すくらいはやってみることにした。

以下を読んだ。

zenn - MCP 入門

とてもよい記事でありがたかった。いくつか詰まった箇所だけメモっておく。

ローカルのnode環境が壊れていたので作り直した

いきなり関係ないけれど、手元のnode環境が壊れていたので作り直した。

WSL2でnvmを使ってTypescriptの導入までやった。

TOMONO - tech blog - WSL2 + Ubuntu + nvm + TypeScript の環境構築の備忘録

ClaudeデスクトップへWSL2環境のnodeスクリプトを読み込ませる

記事では直接ビルドしたnodeスクリプトを指定していた。

WSL2環境でビルドしたものをWindowsのClaudeデスクトップに読み込ませたかったので、環境変数設定のためのbashスクリプトを書いてそこを経由することにした。

以下がclaude_desktop.config。

{
  "mcpServers": {
    "cat_image": {
      "command": "wsl",
      "args": [
        "-e",
        "bash",
        "-c",
        "/home/user/projects/cat_image/scripts/via_wsl2.sh"
      ]
    }
  }
}

以下がWSL2用に経由するスクリプト。

#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
CAT_API_KEY=<API_KEY_IS_HERE> "/home/user/projects/cat_image/build/index.js"

その他

tsconfig.jsonの作成を忘れてビルドできなくて困った。

MCPクライアントの方ではpackage.jsonに「"type": "module",」を追記した。

総じてTypescriptをあまり触っていないのが悪い。

仕事で使う機会が増えれば一冊本でも読むのだが。

追記

こっちもよかった。

オリジナルのちょっと便利な MCP サーバー を作ってみた - SIOS Tech lab

さらに追記

リモートMCPの記事もあった。ありがたい。

SSEを利用していたけど、基本は変わらないだろう。

オリジナルのちょっと便利な『リモート MCP サーバー』を作ってみた - SIOS Tech lab

さらにさらに追記

MCPの大枠を知りたかったので以下も読んだ。

JSON-RPCも名前しか知らなかったのでちょうどよかったかな。

手作りして学ぶMCPの仕組み - zenn

JSON-RPC サクッと入門 - zenn

bashとbcpを使ってSQLServerのデータをCSVへ出力した時のメモ

WSL2のUbuntuへbcpをインストールして行った。

bcpのインストールはこちらから。

Sql Server Command-Line Tools on Linux をインストールする - SQL Server | Microsoft Learn

スクリプトはこんな感じで雑に描いた。

#!/bin/bash

# bcpコマンドのインストールが必要です
# https://learn.microsoft.com/ja-jp/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver16&tabs=ubuntu-install#ubuntu
rm -rf export_csv
mkdir export_csv

# エクスポートするテーブル
TABLES=("sample_table_1" "sample_table_2" "sample_table_3")

for TABLE in "${TABLES[@]}"; do
    bcp "SELECT * FROM sample_schema.${TABLE}" queryout "./export_csv/${TABLE}.csv" -c -t, -S localhost -d sample_db-U sa -u -P saNoPassword
done

一応出力できたけど、bcpがちゃんとエスケープ処理までやってCSVを出してはくれないので困る。

とりあえずやる分には便利。

bcpコマンドで証明書を:SSL routines::certificate verify failedが出た

dockerで用意したSQLServerからとりあえずデータを出したいのでこういうのを打つと

bcp "SELECT * FROM sample_db.sample_table" queryout "./export_csv/sample_table.csv" -c -t, -S localhost -d sample_db -U sa -P saNoPassword

こんなのが出た

Error = [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]

-uをつけて回避した。

bcp ユーティリティを使用した一括コピー - SQL Server | Microsoft Learn

bcp "SELECT * FROM sample_db.sample_table" queryout "./export_csv/sample_table.csv" -c -t, -S localhost -d sample_db -U sa -u -P saNoPassword

dnfでパッケージアップデートする際に知っておきたかったこと

知らない事ばかり。雰囲気でやってんなぁ。

dnfアップデート後に再起動が必要なサービスを調べる

「yum-utils」というパッケージで「needs-restarting」コマンドが使えるらしい。

インストール

$ dnf install yum-utils

チェックする。

$ needs-restarting

参考

Future spirits - dnfアップデート後って必ず再起動必要なの?

dnfの履歴確認

$ dnf history
$ dnf history info 2 # 2はhistoryで表示されたID

参考

なんかロールバックまでできるらしい。すご。

Developers IO - DNF でインストールやアップデートした履歴を確認してみた

余談

dnf updateとdnf upgradeって同じらしい。

一応upgradeが推奨らしい。

Changes in DNF CLI compared to YUM