728x90
반응형
SMALL
728x90
반응형
LIST
대용량 비디오 썸네일 생성 시 발생하는 Android OOM Crash를 파일 크기 가드, 2단계 캐시, 타임아웃 등 5단계 방어 전략으로 해결한 과정을 공유합니다.들어가며기업용 메신저를 개발하다 보면 사용자들이 업무 영상(회의 녹화, 프레젠테이션 등)을 공유하는 경우가 많습니다. 50MB, 100MB짜리 영상 파일이 채팅방에 올라오는 건 일상적인 일이죠. 어느 날 QA팀에서 "대용량 영상을 받으면 앱이 죽어요"라는 보고가 들어왔습니다.문제 현상Android 기기에서 50MB 이상 비디오 메시지를 수신하면 앱이 crashiOS에서는 동일 파일에서 문제 없음채팅 목록 화면에서 비디오 메시지가 렌더링될 때 발생로그: java.lang.OutOfMemoryError원인 분석비디오 메시지 컴포넌트는 미리보기 썸..
텍스트 키보드 ↔ 이모티콘 키보드 전환 시 발생하는 한 프레임 깜빡임의 원인과, useKeyboardHandler + 단일 SharedValue로 완벽 동기화한 과정을 공유합니다.들어가며채팅 앱에서 키보드 애니메이션은 가장 까다로운 UI 과제 중 하나입니다. 특히 텍스트 키보드와 커스텀 이모티콘 키보드를 전환할 때, 채팅 영역과 입력창이 정확히 동기화되지 않으면 사용자에게 "뚝뚝 끊기는" 느낌을 줍니다.문제 현상텍스트 키보드 ↔ 이모티콘 키보드 전환 시:채팅 영역의 paddingBottom과 입력창의 translateY가 한 프레임 불일치화면이 순간적으로 점프하는 깜빡임 현상특히 iOS에서 두드러짐원인 분석기존 구조의 문제는 두 개의 독립적인 키보드 높이 추적이었습니다:ChatScreen├── Keybo..
async 함수에서 cleanup 로직을 await 뒤에 두면 어떤 일이 벌어지는지, 실제 채팅 앱에서 겪은 Race Condition 디버깅 과정을 공유합니다.들어가며기업용 메신저 앱을 개발하면서 가장 까다로웠던 버그 중 하나는 대화방을 빠르게 전환할 때 간헐적으로 메시지가 수신되지 않는 현상이었습니다. 재현 조건이 "빠르게 전환할 때"라서 디버깅이 쉽지 않았고, 원인은 의외로 단순한 코드 순서 문제였습니다.문제 현상A 대화방에서 B 대화방으로 빠르게 전환하면, B방의 실시간 메시지가 수신되지 않음새로 생성된 ChatReceiver(STOMP 구독 + 30초 주기 동기화)가 unexpectedly dispose 됨느리게 전환하면 문제가 발생하지 않음 — 전형적인 타이밍 이슈원인 분석우리 채팅 엔진은 대..
[React Native] 안드로이드 시뮬레이터 실행 안되는 문제 해결하기 iOS 시뮬레이터에서는 정상 실행이 되는데, 안드로이드에서만 실행시 에러가 뜨는 문제가 있었다. Dismiss 버튼을 누르면 에러창이 사라지고 실행할 수는 있지만 그래도 매번 실행할 때마다 에러창이 뜨니 여간 불편한 게 아니었다. TypeError | TypeError: _RNGestureHandlerModule.default.flushOperations is not a function (it is undefined), js engine: hermes | 해결 StackOverflow에 동일한 문제를 해결한 내용이 있어서, 참고했다. https://stackoverflow.com/questions/77959387/error-typ..
[React Native] Expo xcrun exited with non-zero code: 2 에러 해결하기 expo 실행 $ npx expo start 위 명령어를 터미널에 입력하면 알다시피 QR 코드와 함께 실행 매뉴얼이 나온다 Android 에뮬레이터도 잘 실행되고, iOS 핸드폰의 Camera app을 켜서 QR코드를 찍어도 잘 실행된다. 하지만 iOS simulator만 오류가 뜨면서 되지 않는다. iOS simulator 실행안됨 | Error: xcrun exited with non-zero code: 2 An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2): Unable to boot dev..