본문 바로가기

전체 글66

Android 동적 로딩 이론편 - DexClassLoader, PathClassLoader, InMemoryDexClassLoader 이해하기 프롤로그최근 Android의 개발자 인증 정책을 보면서, 자연스럽게 한 가지 질문을 떠올렸습니다. "앞으로 앱 설치 경로와 개발자 신뢰 체인이 더 강하게 묶이면, 런타임에는 어떤 코드가 실제로 실행되는지가 더 중요해지는 것 아닐까?" 정책 변화 자체가 곧바로 동적 로딩 문제로 이어지는 것은 아닙니다.하지만 앱이 설치된 이후 어떤 코드 경로가 열리고, 어떤 클래스가 런타임에 실제로 메모리에 올라오는지를 이해하는 일은 분명 더 중요해집니다. 그래서 이번에는 Android에서 자주 언급되는 세 가지 동적 로딩 방식,DexClassLoaderPathClassLoaderInMemoryDexClassLoader를 중심으로, 왜 이 주제가 Android 개발자에게도 중요하게 읽혀야 하는지 먼저 정리해 보려고 합니다... 2026. 4. 6.
유튜브 제미나이 AI 프롬프트 인젝션 / AI봇 운용 경험 후기 유튜브에 AI 기능이 도입된 지 한달정도 되었다 나는 오늘에서야 알았는데 영상에 대한 내용을 요약도 해주고 질문도 할 수 있는 재밌는 기능으로 보인다 그런데 이 기능기본적으로 영상에 대해서만 질의하게끔 설계되어 있다 시범적인 기능으로 보이니 간단하게 돌려말하면 통과하지 않을까 우선 영상과 관련된 질문을 놓아 원래 상태도 돌려놓고 이전 거부 당한 질의에 대한 대답을 묻는 방법 LLM을 이용한 디스코드 챗봇을 내 서버에서 운용하다보니 이런 궁금증이 생기는 듯 하다당시 이미지나 서버 내 유저들에 대한 정보 및 기억 히스토리를 만들 수 있는 시스템들을 만들어 놓았는데 몇일 있다가 GPT에 메모리 기능이 추가되었다고?! 내가 쓰던 방식이 대형 회사에서도 추가되었다니.. 흥미롭다 이후 프롬프트 및 모델 개선 후.. 2026. 3. 18.
화이트데이를 맞이하여 위스키봉봉을 만들어 보았다 애인이 발렌타인 데이 때, 두쫀쿠를 선물 받았다 당시에 나는 두쫀쿠를 먹어보지 못한 상태였기에, 매일 두쫀쿠를 노래마냥 불렀던 시기 처음 맛본 나는 바삭한 식감과 진한 피스타치오 향이 너무 맛있게 느껴졌고 무엇보다 수제인 만큼 아껴먹었다고 그리고 어느 덧 화이트데이 3월 14일이 다가오고.. 나의 초반 계획은 위스키봉봉과 케릭터가 그려진 카스테라 케이크를 만드는 것이였다. 그렇게 메모까지 작성해 놓았는데.. 요령없이 시작하니 제대로 만들어지지 않는다. 위스키 시럽은 비율을 잘못 맞춘 탓에 도수도 높고 부즈가 강하고, 가나슈가 시럽 속으로 푹 빠져버린다.. 와중에 엎어버리기까지 해버렸다 .. 위스키봉봉이라도 어떻게든 만들어서 주자 두번째로 만든 위스키시럽은 달짝지근하니 먹을만 했다.그런데 아까 전 바.. 2026. 3. 14.
Git 커밋 히스토리에서 파일 제거하기 (git filter-branch) 들어가며Git으로 프로젝트를 관리하다 보면,올리지 말았어야 할 파일이 이미 커밋에 포함되어 있는 상황 을 마주할 때가 있습니다. 저의 경우에는 Obsidian으로 관리하는 블로그 글 중블로그/게시완료 폴더가 Git 히스토리에 남아 있는 게 문제였습니다. 이미 여러 커밋에 걸쳐 추적되고 있었기 때문에,단순히 삭제하는 것만으로는 히스토리에서 완전히 지워지지 않습니다. 이번 글에서는 git filter-branch를 사용해커밋 히스토리에서 특정 폴더를 완전히 제거한 과정과,그 과정에서 만난 에러들을 정리합니다.git rm만으로는 부족한 이유"그냥 git rm으로 지우면 되는 거 아닌가?" 라고 생각할 수 있습니다.git rm -r --cached "블로그/게시완료"git commit -m "블로그/게시완료 폴.. 2026. 3. 6.
서울 청년 취업/창업 프로그램, "청년 성장 올인데이" 참여 후기 프롤로그 — 갑작스러운 서울시의 알림직장에서 나온 지 어느덧 한 달이 되었습니다. 그런데 어제, 갑작스럽게 서울시의 톡이 날아왔습니다.[서울시 청년정책 안내]안녕하세요. 서울시 미래청년기획관입니다.청년 몽땅 정보통에서 관심정보로 선택해 주신 정책정보를 보내드립니다.정책정보 확인하시고, 본인에게 맞는 혜택을 누리세요.자세한 정보는 사이트에서 확인해 주세요.사업명 : 사전신청 못했어도 OK! 현장접수 가능 사업소개 : 취업,창업,비전에 몰입하는 하루놓치면 후회, 꼭 참여하세요!!3.3(화) 9시~21시 DDP3월 3일 서울 DDP 동대문에서 청년을 위한 취업 프로그램이 진행된다는 내용이었습니다. 강연과 창업자를 위한 프로그램들이 있었지만,그중에서 저는 허성범(KAIST AI 연구원) 유튜브 크리에이터께서 진.. 2026. 3. 4.
플레이오(Playio) 안드로이드 개발자 2년 9개월, 퇴사 회고 5년차 안드로이드 개발자, 올해 30살이 되었다 2년 9개월 동안 다녔던 지엔에이컴퍼니(플레이오)를 떠나게 되었다 예상치 못한 타이밍이었지만, 막상 정리하고 나니 생각보다 담담하다 그동안 쏟았던 시간들이 내 안에 남아있다는 걸 알기 때문인 것 같다MAU 30만이 넘는 모바일 게임 리워드 플랫폼 플레이오(Playio)의 Android 앱을 맡았었다 최근 1년은 플레이오 애드플랫폼 쪽 Android를 혼자 담당했는데,처음엔 부담이 컸지만 돌이켜보면 설계부터 배포까지 내 판단으로 끌고 갈 수 있었던 시간이었다돌아보면 참 많은 걸 만들었다 플레이오의 파티 시스템은 처음부터 혼자 설계하고 개발했다.파티 생성이나 가입 같은 기본적인 것부터 배틀, 주간 랭킹, 상금 시스템까지. Compose로 만들면서 접히는 툴바.. 2026. 2. 19.
현생에 안주하는 삶. 변화하고 싶은 나 올해 나는 30살이 되었다나이는 숫자에 불과하다지만 세월이 갈수록 나의 커리어나 미래에 대한 불안감은 커쟈갈 수밖에 없는 것 같다학교를 졸업하고 4년 9개월 동안 회사를 다니며 돈을 모으고 주식을 통해 소소한 이득을 보면서 이러한 일상에 익숙해져만 갔고회사를 그만둔 지금 문득 내 발자취를 돌아보니 그동안 현생에 안도했던 것은 아닐까누군가 알려주는 지식에만 의존하며 스스로 무언가를 이룰 준비는 부족하진 않은지그저 친구들과 술 한잔 하며 노는 것에 만족했던 것은 아닐까 생각이 든다.매일 1%씩만 나아간다면 1년 뒤에는 37배가 좋아져 있을 거란 영상을 보았다계산기를 두드려보니 맞는 말인 거 같긴 한데.. 사실 몇 배든 상관은 없다어제보다 나은 내일을 만들어가고 싶다작은 행복에 너무나 익숙해버린 나를 바꾸고 .. 2026. 2. 13.
Foreground Service가 서드파티 SDK 초기화에 미치는 문제 (Android Lifecycle) 들어가며"일부 유저한테 인앱팝업이 안 떠요."QA에서 올라온 이 한 줄짜리 리포트가, 결국 서드파티 SDK의 버그를 발견하고 리포트하는 데까지 이어질 줄은 몰랐습니다.Playio에서는 인앱 메시징 서비스로 Notifly를 사용하고 있습니다.캠페인 기반으로 특정 조건의 유저에게 팝업을 띄워주는 기능인데, 일부 유저에게만 팝업이 전혀 작동하지 않는 현상이 발생했습니다. 분명 같은 앱, 같은 버전인데 왜 이 유저만 안 되는 걸까?문제 상황 — session_start가 찍히지 않는 유저Notifly SDK는 앱이 시작될 때 `session_start`라는 이벤트를 로깅합니다. 이 이벤트가 정상적으로 기록되어야 SDK의 초기화가 완료된 것으로 간주되고, 이후 인앱팝업 캠페인이 정상 발송됩니다. 그런데 Notif.. 2026. 2. 9.
만 3년 차 안드로이드 개발자, 다시 시작하는 블로그 어느덧 안드로이드 개발자로 첫발을 내디딘 지 3년이라는 시간이 흘렀습니다처음에는 회사 생활과 블로그 활동을 병행하며, 새로운 지식과 노하우들을 공유하고자 했었지만 "나중에 정리해야지"하며 미루던 글들이 쌓여, 어느새 323개의 비공개 글이 되고 말았네요.. 이따금씩 목록을 들춰보면, 당시에는 신기했던 기술이 이제는 당연하게 느껴지기도 하고,가볍게 훑고 넘어갔던 개념들은 다시 깊이 파고들어야 할 필요성을 느낍니다. 그래서 다시 마음을 다잡고, 이 잠자고 있는 글들을 깨워 유용한 개발 팁과 기본적인 개념들을 복기하는 마음으로매주 꾸준히 하나씩 발행해보고자 해요 최근 이런 다짐을 하게 된 계기가 있습니다. 개발에 처음 입문했을 때, '과연 내가 이걸 만들 수 있을까?' 라며 막막해하던 모습에서이제는 '어떻.. 2025. 8. 18.
[Docker-compose] Mac에서 command not found: docker-compose 가 발생할 때 멀쩡히 잘 사용하던 docker-compose 명령이 갑자기 듣지 않는다. 재설치할 필요는 없는 것 같고.. 공식사이트를 보니 아래와 같은 명령어로 심볼릭 링크를 만들어주어야 한다고 한다. Docker Compose V1이 Docker Desktop 버전 4.23.0 에서 수명이 다하여 제거된 후 , 해당 docker-compose명령은 이제 독립 실행형 모드로 실행되는 Docker Compose V2 바이너리를 직접 가리킵니다. Docker Desktop 자동 업데이트에 의존하는 경우, 업데이트에서 관리자 비밀번호를 묻지 않으므로 심볼릭 링크가 끊어지고 명령을 사용할 수 없습니다.이것은 Mac 사용자에게만 영향을 미칩니다. 이를 수정하려면 심볼릭 링크를 다시 만드십시오. sudo rm /usr/loca.. 2024. 10. 22.