728x90
반응형

전체 글 126

[ReactNative] 알림 액션을 앱 실행 없이 처리하기

복약 알림의 복용 완료와 10분 뒤 버튼을 Android 백그라운드 작업으로 다시 만든 과정이미지 출처: Unsplash (라이선스 자유 사용)핵심 요약알림 본문을 누를 때만 앱을 열고, 액션 버튼은 백그라운드에서 처리하도록 분리했다.복용 완료는 기록 저장 후 알림만 닫고, 10분 뒤는 재알림 예약 후 현재 알림을 닫는다.처리 내역을 SQLite에 남겨 같은 액션이 다시 전달돼도 중복 실행되지 않게 했다.약 등록 직후 종료되던 문제와 앱 복귀 후 복용 상태가 늦게 보이던 문제도 함께 수정했다.Android 시뮬레이터에서 알림 버튼, 본문 이동, 재알림 도착, 복용 상태 반영을 직접 확인했다.버튼을 눌렀는데 앱이 먼저 열렸다복약 알림에 복용 완료와 10분 뒤 버튼을 넣은 뒤 실제 기기 흐름을 확인했다. 두..

[Gameting] 신작 모바일 게임 쿠폰·확률 사이트 시작기

사이드 프로젝트 로그 — 2026-10-14 작성, 라이브 D+6이미지 출처: Unsplash (라이선스 자유 사용)핵심 요약신작 모바일 게임 출시 직후, 뽑기 확률 계산기와 쿠폰 모음을 묶은 작은 도구 사이트를 하나 올렸다.사이트 URL: https://gameting.netlify.app · 첫 대상 게임은 "도깨비의 세계" (카카오게임즈, 2026-10-08 출시).수익 모델은 AdSense 광고. 포트폴리오 목적이 아니다.포지셔닝은 "팬이 만든 비공식 도구". 게임 이미지·로고 안 쓰고, 쿠폰은 복사 버튼과 공식 입력 페이지 링크만.스택은 Next.js 16 static export + Tailwind v4 + Netlify 무료. 게임 1개 추가 = 데이터 파일 1개 추가.쿠폰은 Playwrig..

[LLM] 하나만 믿고 서비스 만들면 안 되는 이유 — 번역기 접으면서 배운 6가지

"회사말 ↔ 신입말 번역기"를 접게 된 과정과, 거기서 뽑은 재사용 가능한 교훈 (2026-10 기준)이미지 출처: Unsplash (라이선스 자유 사용)핵심 요약신조어 번역기를 LLM 호출 하나로 설계했는데, "늙크크"를 "ㅋㅋㅋ 줄임말"이라고 자신 있게 틀린 답을 돌려줬다. 서비스 신뢰가 1초 만에 무너지는 지점이었다."모델이 모르는 영역이 핵심 밸류"인 서비스는 LLM 단일로 가면 안 된다. 품질 커버리지보다 "모르면 모른다고 말하는 설계"가 먼저다.모델 이름 하드코딩의 유통기한은 짧다. 7개월 전에 쓴 모델이 지금 404다.그 밖에도 환경변수 startup 검증 부재, 모킹만 하는 E2E, 셀렉터 staleness 같은 "다음 프로젝트에선 안 겪고 싶은" 함정 다섯 개가 더 나왔다.접은 건 아깝지..

개발 오답노트 2026.10.14

[Claude Code] 브랜치 전략 세 번 다시 쓴 이야기

2026-10-08의 시행착오 기록. 2026-10-12에 개선한 자동화 흐름과 구분해 읽으면 된다.이미지 출처: Unsplash (라이선스 자유 사용)핵심 요약이번 작업에서는 Git 브랜치 전략을 문서에 적었는데도 의도와 다른 실행이 반복됐다."develop은 변하지 않는다", "메인 디렉토리는 develop에 고정" 같은 암묵적 기본값이 특히 자주 깨졌다.당시 세 번 수정하며 정리한 대응은 셋이다: ① CLAUDE.md에 명시적 규칙, ② /cnp 커스텀 스킬로 commit/push/merge 창구 단일화, ③ 사전 체크(pre-check)로 메인 디렉토리 호출 자체를 거부.교훈: 작업 위치와 종료 상태를 명시하고, 중요한 조건은 실행 전에 검사해야 한다.왜 이 글을 쓰나사이드 프로젝트를 시작하면서 ..

[pill-reminder] 1호 앱으로 '약 복용 알림'을 고른 이유

2026-10-08에 정리한 앱 선정·설계 기록이미지 출처: Unsplash (라이선스 자유 사용)핵심 요약3개월 안에 Expo로 안드로이드 앱 4~6개를 출시하고 광고 수익 데이터를 모으기로 했다.주제 10개를 Play Store에서 돌려본 뒤 1호 앱으로 "약 복용 알림" 을 골랐다.포지션은 "심플함 + 광고 적음". 경쟁 앱 상위 리뷰에 광고 과다 불만이 공통되게 보였다.MVP는 등록·요일별 반복 알림·복용 체크·히스토리·광고까지. 수익 레이어(IAP, 사업자등록)는 v2에서 결정한다.느슨한 FSD + shared/ 분리로 2호 앱 때 폴더만 복사해도 공통 뼈대가 재사용되게 설계했다.왜 이 글을 쓰나금액 목표는 두지 않았다. "앱 하나가 터지길 기대하지 않고 여러 개로 확률을 쌓는다"가 전제라서, ..

[ReactNative] EAS Submit으로 내부 테스트 제출하기 — 로컬 키 파일 없이 두 앱 연결하기

production 빌드 다음 단계로, EAS에 저장한 서비스 계정 키를 연결해 제출한 과정이미지 출처: Unsplash핵심 요약빌드가 끝나도 Google Play 제출용 서비스 계정 연결은 따로 확인해야 한다.Firebase 설정에 쓰던 GOOGLE_SERVICES_JSON과 Play 제출용 서비스 계정 키는 용도가 다르다.링크팅에서 사용하던 EAS Credentials의 키를 알팅에도 연결해 로컬 키 파일 없이 제출했다.같은 개발자 계정을 쓰더라도 서비스 계정의 앱 접근 권한을 확인해야 한다.이번에 확인한 결과는 알팅의 내부 테스트 트랙 제출 성공까지다.빌드 다음에는 제출 설정을 확인한다이전 글에서는 Expo와 EAS의 빌드, OTA 업데이트 흐름을 정리했다. 이번에는 이미 완료된 production..

개발 오답노트 2026.10.14

[error] 사이트맵을 제출했는데 읽을 수 없다고 나올 때

Google Search Console에서 sitemap.xml을 확인한 과정핵심 요약Search Console에는 사이트맵 파일의 실제 URL을 제출해야 한다.파일 내용은 XML 형식이어야 하고, 공개 URL에서 직접 열려야 한다.도메인 속성과 URL 접두어 속성을 혼동하면 사이트를 가져올 수 없다는 메시지가 나올 수 있다.사이트맵 등록은 검색 노출을 보장하지 않으며 크롤링 요청을 전달하는 절차다.제출한 내용Linkting의 사이트맵에는 홈, 소개, 규칙, 보관함, 개인정보처리방침 페이지를 넣었다. XML은 urlset 루트와 각 페이지의 loc 요소로 구성했다. https://linkting.netlify.app/ https://linkting.netlify.app/about읽을 수 없음이 발생한..

[Development] Codex와 Claude가 같은 프로젝트를 작업하게 만든 과정

도구는 분리하고 규칙과 결과물은 공유하기핵심 요약Codex와 Claude를 같은 저장소에서 사용하되 각 도구의 스킬 경로는 분리했다.프로젝트 규칙은 AGENTS.md, CLAUDE.md, PLAN.md로 명시했다.$cnp --merge가 develop 브랜치에서 중단되지 않도록 작업 브랜치와 worktree를 자동 생성하게 했다.타입 검사와 테스트를 통과한 뒤에만 develop에 병합하도록 순서를 고정했다.분리한 이유두 도구가 같은 파일을 직접 수정하면 작업 규칙이나 호출 방식이 충돌할 수 있다. 그래서 공통 계획과 Git 기록은 저장소에서 공유하고, Codex용 스킬과 Claude용 스킬은 각각의 디렉터리에 둔다. 같은 문제를 다뤄도 도구별 실행 방식은 유지하면서 결과는 같은 브랜치 흐름으로 합칠 수 ..

개발 오답노트 2026.10.14

[error] Expo에서 이미지 저장이 되지 않던 문제 해결

권한 허용 후에도 갤러리에 저장되지 않았던 원인과 수정 과정핵심 요약Android에서 저장 권한이 허용되어도 실제 저장 API가 올바르지 않으면 파일이 생기지 않는다.Expo SDK 버전에 따라 예전 API와 현재 API의 동작 차이가 있다.결과 이미지는 정답을 바로 노출하지 않는 카드와 정답 공개 카드로 나눴다.이미지에는 Linkting 웹 주소를 넣어 공유 후 다시 서비스로 이동할 수 있게 했다.증상앱에서 이미지 저장 버튼을 누르고 권한도 허용했지만 갤러리에서 파일을 찾을 수 없었다. 같은 동작을 여러 번 반복해도 결과가 같아서 단순 권한 문제가 아니었다.원인확인 결과 사용 중인 Expo SDK에서는 expo-media-library의 오래된 저장 호출이 현재 방식과 맞지 않았다. 권한 요청만 성공하..

[ReactNative] Expo와 EAS로 앱 배포 흐름 정리하기

프로덕션 빌드와 OTA 업데이트를 구분한 이유핵심 요약Expo/EAS는 Android 앱 빌드와 배포 과정을 단순하게 만든다.preview와 production은 이름보다 환경과 배포 대상의 설정이 중요하다.최초 출시에는 production 빌드가 필요하고, JavaScript·스타일 수정은 OTA로 반영할 수 있다.네이티브 의존성, 권한, SDK 변경은 OTA만으로 처리할 수 없다.처음 겪은 문제처음에는 preview 프로필을 사용해 실행했지만 앱이 연결되지 않았다. 확인 결과 preview라는 이름 자체가 문제라기보다, 빌드 환경과 실제 앱이 바라보는 업데이트 설정이 일치하는지가 중요했다. 프로필 이름은 사람이 이해하기 위한 이름이고, 실제 동작은 environment, runtime version,..

개발 오답노트 2026.10.14
728x90
반응형