Compose 디자인 시스템 설계하기
·
Android
서론디자이너와 협업 시 가장 중요한 것은 디자이너가 의도한 디자인을 정확하게 구현하는 것이다. 특정 텍스트가 어떤 폰트를 사용해야 하는지, 글자 크기는 얼마인지, 자간과 행간은 어떻게 적용되어야 하는지까지 세세하게 정해져 있다. 같은 스타일의 텍스트를 구현하면서도 매번 폰트나 크기, 행간이나 자간을 다시 설정해야 하고 화면이 많아질수록 이러한 작업은 반복되어 개발 생산성이 점점 저해된다. 이러한 불편함을 줄이기 위해 디자이너가 설계한 디자인을 기준으로 재사용할 수 있는 시스템을 만드는 것이 바로 디자인 시스템이다. 디자인 시스템을 도입하면 디자이너의 요구사항을 일관된 방식으로 반영할 수 있고 이미 정의된 시스템을 활용해 보다 안정적으로 화면을 구현할 수 있다. 오늘은 실제 프로젝트에서 사용한 디자인 ..
Context Swtching을 통해 이해하는 프로세스와 스레드, 코루틴의 차이
·
CS
동시성 프로그래밍을 다루다 보면 Context Switching(문맥 교환)이라는 용어를 자주 접하게 된다. OS는 하나의 CPU 코어에서 여러 작업을 동시에 처리하는 것처럼 보이기 위해 실행 중인 작업의 상태를 저장하고 다른 작업으로 전환하는 과정을 반복하는데, 이를 Context Switching이라 한다. 특히 현대 안드로이드 개발 환경에서는 빼놓을 수 없는 코루틴이 “경량 스레드”로 불릴 수 있는 이유 또한 전통적인 스레드의 Context Switching 비용을 어떻게 다루는지와 깊은 관련이 있다. 이 글에서는 Context Switching이 무엇인지, 프로세스와 스레드, 코루틴의 문맥 교환 방식의 차이점을 중심으로 차이점을 살펴보려 한다. 프로세스프로그램을 실행하면 OS는 해당 실행 파일을 ..
도움을 잘 요청하는 법
·
우아한테크코스
인생을 살아가다 보면 분명 누군가의 도움이 필요할 때가 있다. 그 도움의 크기가 크던 작던 도움을 요청하는 것은 절대 쉬운 일이 아니다. 나 역시 그러했고 최근 취업을 준비하며 많은 고민과 어려움이 있었기에 한 번쯤 이 고민들을 털어놓고 조언을 듣고 싶었다. 분명 주위에 도움을 요청할 사람은 너무나 많았지만 그 관계가 가까운 사람이던 먼 사람이던 먼저 선뜻 도움을 요청하기란 쉽지 않았다. 이런 고민들을 하던 찰나, 우테코의 코치님이신 준과 시지프께서 나와 같은 고민을 하는 크루들을 위해 도움 요청 워크숍을 열어주셨다.결론부터 이야기하자면 나는 이 워크숍을 통해 정말 정말 존경하는 엄재웅(SkyDoves)님과 온라인 커피챗을 할 수 있었다. 오늘은 이 워크숍을 통해 내가 배운 도움을 요청하는 방법에 대해 ..
2025 회고록
·
카테고리 없음
올해는 유독 나에게 특별한 해였다. 이전과는 비교할 수 없을 만큼 많은 것들을 경험했고, 또 많은 것들을 이루어냈다. 특히 2월부터 11월까지 약 10개월 동안 우아한테크코스를 통해 지난 29년의 삶 중 가장 값진 한 해를 보냈다고 말할 수 있다. 이 글은 2025년의 타임라인을 따라가며 올해를 돌아보는 기록이다. 올해의 시작은 우테코였다. 최근 면접을 보며 공통적으로 받았던 질문이 하나 있다. “왜 부트캠프를 두 번이나 들었나요?” 이 질문에는 이제 정말 자신 있게 대답할 수 있다. 첫 번째 부트캠프에서 운명처럼 만난 멘토님 덕분에 나는 개발을 좋아하는 사람에서 진심으로 빠져든 사람이 되었기 때문이다. 매번 이런 이야기를 꺼내면 멘토님께서는 본인은 한 게 없다”고 하시지만 나는 그 만남을 운명이라고 생..
프로세스와 스레드, 코루틴의 Context Switching의 차이
·
CS
동시성 프로그래밍(Concurrency Programming)을 다루다 보면 Context Switching(문맥 교환)이라는 용어를 자주 접하게 된다. OS는 하나의 CPU 코어에서 여러 작업을 동시에 처리하는 것처럼 보이기 위해 실행 중인 작업의 상태를 저장하고 다른 작업으로 전환하는 과정을 반복하는데 이때 발생하는 핵심 메커니즘이 바로 Context Switching이다. 특히 현대 안드로이드 개발 환경에서는 빼놓을 수 없는 코루틴이 “경량 스레드”로 불릴 수 있는 이유 또한 전통적인 스레드의 Context Switching 비용을 어떻게 다루는지와 깊은 관련이 있다. 이 글에서는 Context Switching이 무엇인지 그리고 스레드와 코루틴의 전환 방식이 어떻게 다른지를 중심으로 살펴보려 ..
클린 아키텍처는 클린(Clean) 하지 않다.
·
카테고리 없음
최근 프로젝트들을 보면 대부분 클린 아키텍처를 적용한 것을 볼 수 있다. 클린 아키텍처를 사용하지 않은 프로젝트를 찾기 힘들 정도로 가장 인기 있는 아키텍처임이 분명하다. 나 또한 지금까지 만들어온 프로젝트에 모두 클린 아키텍처를 적용하였고, 이 과정에서 한 가지 의문이 들었다. 바로 Useless UseCase와 Anemic Domain Model. 이에 대한 자세한 내용은 2023년 드로이드 나이츠에서 박종혁 님께서 연사 하신 내용이 있으니 관심 있다면 꼭 한번 보길 추천한다. 나는 이 영상에서 소개한 내용에 대해 너무나 깊이 공감하여 4번은 돌려본 것 같다. 그래서 이를 해결하기 위한 방법들을 끊임없이 고민해 왔지만 1년이 지나도록 그 답을 찾지 못했다. 하지만 얼마 전 함께 우테코를 수료한 크루..
HiltViewModel 의존성 주입 원리
·
Android
갑자기 새로운 버전을 배포한 앱이 크래시 되는 일이 발생했습니다. Firebase Crashlytics를 확인한 결과 다음과 같은 에러가 발생하고 있었습니다. 원인은 단순했습니다. ViewModel에 @HiltViewModel을 Activity에 @AndroidEntryPoint를 추가하지 않았기 때문이었죠. 하지만 여기서 의문이 생겼습니다. "Hilt는 컴파일 타임에 의존성 주입 코드를 생성해서 런타임 에러를 방지한다고 알고 있는데 왜 컴파일은 성공하고 런타임에 크래시가 발생한 걸까?" 이 의문을 해결하기 위해 ViewModel의 기본 작동 원리부터 Hilt가 어떻게 ViewModel을 주입하는지 차근차근 알아보겠습니다.Hilt 의존성 주입"Hilt는 컴파일 타임에 의존성 관계를 분석하여 의존성 주입..
2025 우아콘 후기
·
컨퍼런스
정말 감사하게도 우테코에서 우아콘 초대권을 주셔서 올해는 운이 좋게도 우아콘에 다녀올 수 있었다. 올해는 드로이드 나이츠 운영진부터 우아콘까지 우테코여서 가능한 것들, 우테코여서 느낄 수 있던 것들을 정말 많이 배울 수 있었다. 교육적인 배움뿐만 아니라 다양한 경험을 할 수 있게 해준 우테코 코치님들에게 정말 감사의 말씀을 드리고 싶다. 안드로이드 세션을 제외하면 아직 감자인 나에겐 글로 남기기에 어려운 내용이었기에 안드로이드 세션에 대한 후기만 간략하게 남기려한다.첫 번째 세션은 고민할 필요 없이 체크인을 하자마자 레아의 세션을 듣기 위해 달려갔다. 레아의 세션 시간은 미니 우테코를 떠올리게 했다. 우테코 코치님들과 크루들(심지어 우리 토독 토독팀 백엔드 크루)들과 리뷰어 코니를 만나게 되어 상황이 ..