본문 바로가기

개발자 강화/AI 활용

26년 5월 회고 with 집중요정 [129.4시간]

집중요정과 함께 5월 패턴 분석 - 129.4시간

 

연휴가 많다 = 공부 시간이 늘어난다

이번 달 집중 시간이 100시간을 넘었다. 심지어 오전 집중 비율이 제일 높다.

 

일찍 일어나서 출근 전에 공부하기, 주말 오전에 일어나서 공부하기 습관을 들인 덕이다.

주말에 늦은 오후 침대에서 겨우 일어나 일과를 불태우던 것을 생각하면 장족의 발전이다.

아침형 인간인지 저녁형 인간인지는 잘 모르겠지만, 활동 주기의 시작 시간을 앞당긴 게 건강과 집중력에 도움이 됐다.


5월 1주차 (5/1~5/3) - 19시간

 

1. 도서관 방문

 

책을 빌리고 읽기를 미루다 반납하러 가는 길 버스에서 읽는 습관이 생겼는데,

다른 작업을 할 수 없는 제한적인 환경에서 책을 손에 드니 실전압축독서...마냥 속독이 가능하더라.

 

하지만 할 일을 미룬다는 안 좋은 습관이 정착하는 건 좋지 않다!

이 회고 글을 쓰는 6월 현재는 읽기로 마음 먹으면 즉시 읽을 수 있는 습관이 생겼다.

책을 읽는게 숏츠를 보는 것보다 생산적이라는 자각을 무의식 중에 몇 번 하고 나니,

책 읽는 걸 미루지 않게 되었다.

 

도서관에서 한국과학문학상 2회 수상집을 다 읽고, 3회/4회 수상집을 빌렸다.

예전부터 궁금했던 'B주류경제학'도 빌렸다.

 

2. 운동

5/2 2km 22분

5/2 토요일에 2km를 걸었다.


5월 2주차 (5/4~5/10) - 31.1시간

1. 렌더링에 대한 공부

렌더링 파이프라인은 공부를 할수록 조금씩 딥다이브를 하게 된다.

cs 면접 대비 공부를 처음 할 때 페인트? 리플로우? 가 뭐지?라는 생각을 했었는데,

실전에서 렌더링 부하를 해소하기 위해 최적화를 하다보니 실제로 그 파이프라인이 와닿기 시작했다.

 

lottie를 렌더링할 때 svg 렌더러와 canvas 렌더러를 쓰는 것의 명확한 차이는 뭘까?

이전 캐쥬얼 게임 구현 최적화 글을 작성할 때는 canvas 태그 내에 그리면

매번 dom을 직접 건드리지 않아도 되니까 레이아웃 계산 비용의 최적화가 있겠군이라는 생각을 했다.

canvas 태그는 맨 처음 레이아웃 계산할 때 영역 크기를 잡고, 그 내부에서 일어나는 일은 dom 조작과 무관하니까.

근데, 그게 구체적으로 뭘까?

 

canvas 태그에 lottie를 어떻게 재생하는거지?

canvas 2d api가 <canvas> 태그 위에 픽셀을 직접 찍는다.

ctx.fillRect(10,10,100,50) // (10,10)에서 사각형 100*50을 채운다는 뜻.

 

어라? 이거 어딘가 익숙한 문법이다... 어디선가 읽었다.

작년 말에 읽었던 'UI 시스템 블랙북'(춘언 님께서 선물해주신 춘언님 책) 개념이 갑자기 뇌에서 팍 튀어나왔다.

벡터 관련 챕터 예제 코드에서 저런 문법의 코드를 봤다. 아 그게 이런 의미였구나!!

(UI 시스템 블랙북 선물 받고 썼던 블로그 글)

 

브라우저에서는 저 사각형 영역의 픽셀 값을 계산해서 캔버스와 내부 비트맵 버퍼에 쓴다.

브라우저 내부 입장에서는 캔버스 내부 버퍼가 갱신된 것으로 판단하므로, 스타일이나 레이아웃 재계산이 필요 없다.

 

이 내부 픽셀 계산 과정이 cpu에서 실행될 수도 있고, gpu에서 실행될수도 있다.

브라우저가 판단했을 때 보통 하드웨어 가속이 가능하면 GPU로 보낸다.

 

기본 canvas의 ctx.fillRect() 같은 그리기 명령은 메인 스레드에서 실행된다.

그리기 연산이 무거우면 메인 스레드가 밀린다.

그럼 이때 OffScreenCanvas를 사용해서 Canvas 제어권을 web worker로 넘긴다.

 

const offscreen = canvas.transferControlToOffScreen(); // 제어권 이관

메인 스레드의 canvas가 offScreenCanvas로 변환되고, 이후의 canvas에 대한 모든 그리기 명령은 worker 스레드에서 실행된다.

 

근데 이 offScreen이라는 단어 어딘가 익숙하다...

혹시 Rive에서 봤던 그 useOffScreenRenderer 속성 아닌가...?

머릿속에서 한 번 더 퍼즐이 맞춰지는 기분이 들었다.

내부적으로 transferControlToOffScreen을 통해 worker에 렌더링을 위임하는 구조이다.

 

이 속성에 관해 rive 글에서도 딥다이브 했던 적이 있다.

Rive 도입 이유 + 사용 경험 (클릭하면 이동해요)

 

실무 코드에서 rive 훅 사용부에 항상 이 속성이 true로 되어있었다.

안 써도 되나 싶어서 지워봤는데, 이를 true로 설정하지 않으면 ui에 rive가 보이지 않는 문제가 있었다.

 

당시에 '이 속성을 true로 하면 web worker에서 렌더링 처리를 하기 때문에 메인 스레드 부담이 줄어든다'라는 개념을

진심으로(?) 이해하지 못해 좀 찝찝했는데, 이제야 진짜 와닿는 이해를 한 기분이었다.

 

홈 화면의 여러 코드가 리렌더링을 유발하고 있는 상태에서,

web worker를 사용하면 독립적으로 렌더링이 되기 때문에 렌더링 타이밍 이슈에서 강하다는

두 번째 가설에 좀 더 믿음이 간다.

 

난 이렇게 이곳저곳에서 공부한 내용이 어떤 계기를 트리거로

한 번에 빠바박 합쳐질 때 '와 유레카!' 하는 기분이 들며 성취감과 자기 효능감이 올라간다.

역시 기술 딥다이브는 재밌어!

 

2. 운동

5/10 2km 22분 걷기


5월 3주차 (5/11~5/17) - 29.4시간

 

1. 독서

대학교 4학년 때 위시리스트에 넣어놨던 '유난한 도전'을 생일 선물로 받았다.

오랜만에 다시 읽었는데, 역시 이 책은 읽을 때 마음속에서 무언가를 끓어오르게 하는 효과가 있다.

내가 잊고 있었던 내 성취욕을 불태우게 해 줬고, 내가 어떤 계기로 개발자의 길을 걷고자 했는지 자각하는 시간이 되었다.

 

2. 운동

5/16 토 2.5km 30분


5월 4주차 (5/18~5/24) - 27.8시간

그래프가 굉장히 알록달록해졌다.

 

1. [사이드] 집중요정 디벨롭 - 명령어 겹침 이슈 해결

타 슬랙봇과 명령어 겹침 이슈가 발생했다.

이미 공식 출시된 명령어 쪽을 고치긴 어려우니, 집중요정 쪽에서 우회책을 생각해야 했다.

일단 즉시 확인 답장을 하고, 제보를 받은 날 퇴근하자마자 바로 작업을 시작했다.

 

 

다음날 오전 개선된 기능을 종근님께 공유드렸다.

 

1. 겹치는 명령어에 f prefix를 붙여서 명령어 중복을 회피

2. 집중 시작 시 ephermeral 메시지에 종료/일시정지 버튼 표시

3. 슬랙봇 App Home에서 세션 컨트롤 버튼 제공

 

아마 2번이 가장 편한 방법이 될 듯한데, 임시 메시지인 만큼 새로고침 하면 사라지는 문제가 있다.

 

실제로 종근님도 버튼에 대한 니즈를 가지고 계셨었다.

ephemeral 메시지에 버튼을 넣지 말고 집중시작 메시지에 버튼을 붙이는 게 나을지...

어떤 방법이 더 나을지 고민 중이다.

 

2. [사이드] 앱인토스

앱인토스 공모전 데드라인에 맞춰 겸사겸사 첫 앱을 출시해보려고 했다.

캐주얼 게임은 쉽지 않을까 했는데, 디자인까지 내가 하려니까 진짜 힘들었다.

 

claude cowork로 세계관 및 게임 구성을 정의하고,

chat gpt를 사용해 필요한 에셋과 배경을 뽑고,

figma ai를 사용해 원하는 형태로 에셋을 가공했다. (배경 제거나 특정 부분 분리 등)

 

만들기까지는 어떻게 했는데, 이걸 제출하는 과정이 꽤 머리 아팠다.

일단 이걸 서빙해 보는 게 목적이라 수익성은 패스했다. (그럼 빠르게 될 줄 알았음)

 

근데 이 앱을 바로 앱인토스 워크스페이스에 올리면 끝나는 게 아니라,

구글 플레이 스토어나 애플 스토어 등에 앱을 출시하고,

그 심사 과정에서 부여받은 게임물관리(a.k.a 게관위) 등급을 함께 제출해야 했다.

 

애플 스토어 개발자 등록은 비싸고,

구글 플레이 스토어는 그보단 저렴하다지만 이제 12명의 내부 테스터를 보유해야 앱 출시가 가능해서 까다롭다.

 

예전에 앱인토스 웨비나에서 1인 개발자분이 출시 과정에 대해 설명했던 발표 자료가 떠올랐다.

노트북을 뒤져서 자료를 찾아냈는데, '구글 개발자 계정이 없다면 원스토어라는 대체제도...'라는 한 줄이 적혀있는 걸 봤다.

원스토어 이름만 들어보고 써본 적은 없지만 지푸라기라도 잡는 심정으로 개발자 계정을 후다닥 만들고 앱 심사를 요청했다.

 

공모전이 3일 남은 상황이라 큰 기대를 안 했는데, 다음날 아침에 바로 원스토어 승인 메일을 받았다.

(뭐야 원스토어 꽤나 좋은 녀석일지도)

게임 기작이 매우 간단하고 내용물이랄 게 딱히 없어서 가능했나 싶긴 하다. 아무튼 압도적 감사!

 

정작 게관위 등급을 조회하려고 하니, 내 앱에 대한 결과가 아무리 조회해도 나오지 않았다.

이런... 벼락치기를 하면 이래서 안 되는 거다.

포기하고 그냥 열심히 업무하고 밀린 잠을 잤다.

 

그런데 하루 뒤 게관위 사이트를 다시 조회해 보니, 이제는 내 앱에 대한 등급 조회가 가능했다.

출시 즉시 등급 조회 반영이 아니라, 하루 정도의 텀이 있는 듯하다.

아무튼 여차저차해서 앱인토스 워크스페이스에서 앱 출시 신청을 할 수 있었다.

 

apk 파일에 아이콘 url이 누락되어 있어서 한 번 빠꾸 먹었었는데,

앱인토스 웨비나에 업로드한 아이콘을 우클릭해서 이미지 주소를 복사한 후 그걸 파일에 반영해서 재제출했더니 통과됐다.

생각보다 심사가 빡빡하지 않은 듯하다.

 

너무 대충 만들어서 결과물을 여기 자랑할 순 없지만... 앱인토스에 뭔가 하나 내본 사람이 되었다는 데 만족한다.

기존에 냈던 앱의 디자인을 다듬거나, 새 앱을 내볼 생각이다.

 

출시 과정에서 앱인토스 mcp가 큰 도움이 되었다.

처음 개발하는 사람들은 앱인토스 mcp 꼭 써보면 좋을 듯.

cursor ide에 추가해서 사용했다.

 

3. 저녁 약속

신일님 민규 님과 저녁을 먹었다.

진짜 맛도리였다. 감사합니다!!!

 

4. 독서

동대문 종합시장에 갈 일이 있어서 지하철을 탔다.

왕복 2시간 정도 걸려서 책을 한 권 들고 갔는데, 지하철에서 완독 했다.

https://developer-dreamer.tistory.com/238

 

B주류경제학 - 생각보다 비주류, 생각보다 주류

읽게 된 계기책을 읽을 결심을 한 건 뭐 이런저런 일들이 겹쳤다.B주류초대석 토크 콘서트 예매를 실패한 친구의 절망 블로그 글을 봤고,얼마 뒤 친구가 추천했던 머니그라피 유튜브 채널이 내

developer-dreamer.tistory.com

 

바로 'B주류경제학'이었는데, 재밌게 읽었다.

마이너 장르 경제학 -> 메이저 장르 경제학 순으로 배치되어 있는데,

진짜 정석적인 경제학 책에서는 잘 안 다룰 것 같은 팝업, 웹툰, 웹소 시장을 다뤄줘서 재밌게 읽었다.

(정석적인 경제학 책도 그런 장르를 다룬다면 유감... 제가 잘 모름)

 

5. 운동

토요일에 오랜만에 친구와 산책했다.

18000보 걷기도 산책으로 치나...?

원래 3만보까지는 거뜬히 걷던 내가... 요즘 신체가 쇠약해진 상태라 1만 8천 보도 버거웠다.

사실 걷고 나서 집에 와서 토했다... 건강 회복하자...

 

5/24 3km 35min

일요일엔 가볍게 3km 35 min 걸었다.


5월 5주차 (5/25~5/31) - 22.1시간

 

1. 책책책

월요일이 휴일인걸 그 전주 수요일쯤에 알았다.

별 일은 없었고 도서관에 가서 종일 책을 읽었다.

'한국과학문학상 3/4회'를 완독하고 반납했다.

'B주류경제학'과 '요즘 당근 AI 개발'도 다 읽고 독후감까지 다 썼기에 반납했다.

 

그리고 김초엽 작가의 차기작이 읽고 싶어 '토막 난 우주를 안고서'를 빌렸고,

토스의 다른 책들이 궁금해서 '우리에겐 더 많은 돈이 필요하다'를 빌렸다.

 

'더 머니북'은 종이 자체가 두껍고, 쪽수가 많아서 거의 전공책 무게 수준이라

그냥 도서관에서 완독 해서 반납하기로 다짐하고 쭉 읽었다.

경제 기초 입문서, 경제 기초 대백과 느낌의 내용이었다.

예를 들면 '종합소득세 신고와 연말 정산은 무엇이 다른가요?' 같은 질문과 그에 대한 답변이 실려있었다.

유익했으나, 좀 더 깊이 있는 책을 읽고 싶어지는 계기가 되었다.

 

2. 운동

5/31 2km 23 min

 

3. 저녁 약속

대학 동기에게 갑자기 연락을 받아서 저녁 약속을 잡았다.

이런저런 이야기를 들었는데, 그저 개쩌는 꿈과 개쩌는 시도를 하고 있어서 개큰 응원을 하기로 했다.

역시 야망이 있는 친구들이 주변에 있어서 좋다.

나도 많이 자극받았다.

잘 지내고 종종 소식 주고받자!

 

4. 요리

집중시간에 들어가진 않지만, 같이 기록해 두자면... 밥을 해 먹기 시작했다.

건강을 위해 배달 음식과 사 먹는 음식을 멀리하는 게 좋을 것 같다는 판단이었다.

정말 뜬금없이 냅다 밥 사진ㅋㅋㅋㅋ

이건 서울 올라와서 내가 처음으로 한 밥이다.

압력솥에 한 건데 한 번에 잘 돼서 기뻤다. (그리고 며칠 뒤 바닥을 태워먹고 울면서 철수세미로 문지른다...ㅋ)

상황적 변화도 있지만, 밥을 해 먹는 게 확실히 도움이 되고 있다.

좀 더 건강하고 지속가능한 개발 생활을 위해!


결론

나의 미래를 위한 공부로 연휴 전부를 투자했다.

그래서 5월 집중 시간이 129.1시간이라는... 역대급 수치가 나왔다.

 

후회는 없다. 오히려 뿌듯하다.

 

4월 회고에도 메인 스레드와 컴포지터 스레드 연산에 대해 이야기하며

'공부에 시차는 있지만 오차는 없다'는 이야기를 했는데,

5월 달에도 그런 예시를 하나 더 발견하게 됐다.

 

이번에 렌더링 파이프라인을 공부하며,

'UI 시스템 블랙북'의 내용과 '실무에서 겪었던 Rive에 대한 의문'에 대한 지식이 통합되는 경험을 했다.

난 모호하던 것들이 머릿속에서 파바박 합쳐지며 풀리는 듯한 기분이 드는 걸 좋아한다.

그래서 시험 기간에 머리를 짜내어 공부할 때 이런 느낌이 들면 하루 종일 기분이 좋았다.

앞으로도 딥다이브 하다 보면 이런 경험을 자주 하겠지? 기대된다.

 

5월 말부터 책을 엄청 많이 읽기 시작했다. 6월부터는 미뤄뒀던 문학도 많이 읽고 있다.

고3 때 입시를 모두 끝낸 후 하루에 문학 책을 3권씩 읽었는데,

짧은 시간에 글밥을 압축해서 많이 읽으니 마음속의 응어리진 글에 대한 본능이 해소되는 느낌이라 좋았다.

그때의 좋은 느낌을 다시 느끼고 싶어 이번에도 책을 꺼내 들었다.

 

길이가 짧은 미디어 콘텐츠로 인해 도파민에 절여진 뇌를

아날로그 그 자체인 종이 위 검정 글씨로 해소하는 중이다.

 

인생의 다음 챕터를 나아가기 위해 준비하자.

 

작성: 2026.06.13. 23:50

728x90