Hi, I'm Glenn 👋
가치 있는 프로덕트를 설계하고,
배운 것을 기록합니다.
모바일, 웹, 서버를 넘나들며 기술적 가치를 탐구합니다.
HAMDAE APP FAMILY
Mobile Apps
하나의 오리지널 캐릭터가 앱마다 다른 역할을 맡는 6개의 twin-native 앱입니다.
Web Experiments
Recent Posts
-
[iOS] iOS 27 마이그레이션 가이드 — 빌드가 깨지고 탭뷰가 죽을 때 확인해야 할 것들
iOS 27과 Xcode 27 SDK로 전환하면서 마주치는 빌드 에러, TabView selection 런타임 크래시, NPU 백그라운드 자격증명과 메모리 직접 귀속(Jetsam OOM), Background Assets 전환까지 실무 개발자가 ...
-
[Mobile] 모바일 앱 보안 실무 가이드 — 루팅/탈옥 차단, 디버거 방어, 화면 캡처 방지, 서명 위변조 검증의 진화와 히스토리
Android와 iOS 환경에서 루팅/탈옥 탐지, 디버거 차단, 화면 캡처 방지, 서명 지문 무결성 검증의 세대별 진화 히스토리와 최신 OS(Android 15, iOS 18) 실무 방어 코드를 팩트체크 기반으로 총정리한다.
-
[Android] Google Play Console 권장 조치 3종 완벽 해결기 — Android 15 Edge-to-Edge, Deprecated 창 API, 비트맵 최적화
Google Play Console 사전 출시 보고서에서 반복적으로 나타나는 3대 권장 조치(Edge-to-Edge 강제 적용, Deprecated 창 제어 API, 비트맵 수동 디코딩 및 ads_mobile_sdk)의 원인과 실무 대처 방안을 ...
-
[iOS] ATT와 UMP는 같은 동의가 아니다 — App Store 심사 거절로 배운 동의 흐름 설계
코드에는 ATT 요청이 있었지만 App Store 심사에서는 프롬프트를 찾지 못했다. UMP의 광고 가능 여부 뒤에 ATT를 묶으면서 생긴 도달 불가능 경로와 이를 막는 설계·검증 방법을 정리한다.
-
앱 6개 릴리스를 CLI 하나로: 자동화의 경계를 코드로 못 박기
앱이 하나일 때는 릴리스가 “귀찮은 일”입니다. 여섯 개가 되면 위험한 일이 됩니다.
-
‘CI에서 release 빌드를 돌리지 마라’의 오독: 5개 앱 전체 R8 검증 공백과 런타임 크래시 해결기
안드로이드 앱을 개발하고 배포할 때, 모든 개발자가 가장 두려워하는 순간 중 하나는 “로컬과 CI에서는 완벽하게 테스트를 통과했는데, 구글 플레이 스토어에 배포되자마자 실기기에서 앱이 켜지지도 않고 튕기는(Crash) 현상”일 것입니다.
-
네이티브 광고 60초 자동 갱신(Ad Refresh)의 함정: eCPM 폭락과 계정 정지를 피하는 4대 원칙
모바일 앱을 운영하며 광고 수익화를 진행할 때, 배너나 네이티브 광고의 노출 빈도를 높이기 위해 흔히 자동 갱신(Auto Refresh) 기능을 도입합니다. 구글 애드몹(AdMob) 가이드라인에서도 사용자 경험을 해치지 않는 선에서 30초~60초...
-
App Store Connect 규정 준수(Compliance) 해결기: EU DSA와 한국 전자상거래법
iOS 앱 심사 중 대기(In Review) 상태에서 맞닥뜨린 App Store Connect의 규정 준수 경고를 해결하고, 개인 개발자가 겪을 수 있는 이슈와 대응 방안을 정리했습니다.
-
몬티 홀 문제와 베이즈 정리: 직관을 배신하는 확률, 끝까지 파헤치기
문을 바꾸면 당첨 확률이 2배가 된다 — 수많은 박사들도 틀렸던 몬티 홀 문제를, 베이즈 정리로 한 줄도 빠짐없이 증명합니다. 역사·직관·엄밀한 조건부 확률·시뮬레이션·변형 문제까지 1차 소스 기준으로 정리한 확률론 레퍼런스입니다.
-
Firebase vs Supabase 완전 비교: BaaS 두 거인의 아키텍처·가격·실전 선택 가이드
Firebase와 Supabase를 아키텍처·데이터베이스·인증·실시간·서버리스·가격·벤더 락인까지 1차 소스 기준으로 깊게 비교합니다. '둘 중 뭘 골라야 하나'에 대한 실전 판단 기준을 정리한 기술 레퍼런스입니다.