분류 전체보기 (99) 썸네일형 리스트형 [Dagger-Hilt] Dagger-Hilt 의 대표적인 Annotations Dependency Injection 의존성 주입(Dependency Injection, DI)은 안드로이드 앱 아키텍처 및 클린 아키텍처 적용시 필수적으로 사용되어야 하는 기술입니다. 대부분의 아키텍처가 테스트 용이성에 포커스를 두기 때문입니다. 다만 구현하기가 쉽지 않습니다. 수많은 패턴에 대해 학습하고 이를 적재적소에 사용하여야 하며, 이러한 과정은 수많은 보일러 플레이트 코드를 양산할 수 밖에 없습니다. 메이저 기술의 구현 과정이 쉽지 않다면, 보통 라이브러리가 존재합니다. 안드로이드 진영에는 꽤 많은 DI 라이브러리가 존재하는데, 그 중 Dagger-Hilt 는 Jetpack Library 로 채택되어 있으며, 수많은 안드로이드 개발자들에게 꾸준한 사랑을 받고 있습니다. Dagger-Hilt 작.. 나의 MVI 적용기 Architecture 에 대한 끝없는 고민 아키텍처는 프로그램 개발에서 굉장히 중요한 요소들 중 하나입니다. 어쩌면 가장 중요하다고 얘기할 수도 있을 것 같습니다. 제가 처음 접한 프로덕트에는 이렇다 할 아키텍처가 없었습니다. (물론 지금도 해당 프로덕트에는 아무런 아키텍처도 적용되어 있지 않습니다.) 같은 파트 동료분께 처음 해당 프로덕트에 대한 인계 및 설명을 받았을 때, MVC 아키텍처가 적용되어 있다는 이야기를 들었으나, 전혀 그렇지 않았습니다. MVC 아키텍처가 가장 기본적인 안드로이드 아키텍처이므로, 별도의 아키텍처(MVP, MVVM, MVI 등)가 적용되지 않으면 MVC 아키텍처인 것처럼 알려져 있는데, 이는 잘못된 지식입니다. 구덩이 파고 흙 쌓아 지붕 만든다고 다 집이 아닙니다. MVC.. [Jetpack Compose] Jetpack Compose 의 다양한 Side-Effect State Management In Composables Composable 은 기본적으로 Stateless 입니다. '기본적으로 Stateless' 라는 문장의 의미는, 때로는 Stateless 하지 않을 수 있다는 것을 말합니다. @Composable fun StatelessText() { Text(text = "ADD") } 위 Composable 은 Stateless Composable 입니다. 말 그대로 아무런 상태도 갖지 않기 때문에, 단독으로 있는 경우 별도의 Recomposition 이 발생하지 않습니다. @Composable fun StatefulText() { val text = remember { mutableStateOf("false") } Text( modifier = Modifi.. Bitmap, Drawable, BitmapDrawable, ImageBitmap, AndroidBitmap 일단, 헷갈립니다. 해당 포스트를 작성하는 것에는 여러 가지 이유가 있겠지만, 가장 우선적인 이유로는 제가 헷갈렸기 때문입니다. 안드로이드에는 이미지 처리를 위한 수많은 클래스와 인터페이스가 존재하는데, 이 모든 것이 통폐합되어 이미지의 오리지널 파일인 Bitmap 과 안드로이드에서의 이미지 표시를 위한 Drawable 만 남았으면 좋겠다 싶을 정도로 이들이 헷갈리곤 합니다. 나를 바꿀 수 없다면 환경을 바꾸면 되고, 환경을 바꿀 수 없다면 나를 바꾸면 됩니다. 하나씩 알아봅니다. Bitmap Bitmap 의 기본적인 정보(feat.Webp) 에 대해서는 다음 포스트에 정리해두었습니다. 비트맵과 WebP 인간의 눈으로 디지털 디바이스에서 표시되는 이미지 (그림, 사진) 를 보는 것은 픽셀이라는 작은 점들.. 코루틴과 그린 스레드 Coroutine 코루틴은 작업 수행을 일시 정지 및 재개될 수 있도록 하는 프로그래밍 구성요소입니다. 코루틴은 서브루틴을 일반화합니다. 협력 작업, 예외, 이벤트 루프, 반복자, 무한 목록 및 파이프와 같은 친숙한 프로그램 구성 요소를 구현하는 데에 매우 적합합니다. 멜빈 콘웨이(Melvin Conway) 는 1958년 어셈블리 프로그램 구축에 이를 적용하면서 Coroutine 이라는 용어를 만들었습니다. 이후 이에 대한 설명은 1963년에 처음 발표되었어요. 즉, 코루틴이 비교적 최근에 등장한 개념이라 알고 있는 분들이 계신데, 전혀 그렇지 않습니다. Coroutine 은 Co-Routine 이라 쓸 수 있는데, Routine 은 '컴퓨터 프로그램의 일부로서, 특정한 일을 실행하기 위한 일련의 명령'.. [Jetpack Compose] Glide 와 Coil, 무엇을 사용하면 좋을까. 이미지 처리 라이브러리 개발시, 저는 UI에 관련된 라이브러리는 최대한 사용하지 않으려고 하는 편입니다. 어쨌든 라이브러리도 사람이 만드는 것이고, 자세히 파고들면 그다지 어려운 개념이 들어가는 것도 아니니까, 직접 구현하겠다는 생각으로 말이죠. 그런 저도 꼭 사용하는 UI 라이브러리는 이미지 처리 라이브러리입니다. 애초에 이미지 자체가 워낙 심화된 영역이기도 하고, 이미지 처리 라이브러리는 그 역사가 깊어 사용하기도 수월하고 성능도 좋기 때문이죠. 이미지 처리 라이브러리의 역사는 안드로이드의 역사와 궤를 같이 합니다. Glide, Fresco, Picasso, 그리고 모던한 Coil 까지, 수많은 라이브러리가 존재하죠. 우리는 수많은 선택지들 중 하나를 골라야 합니다. 물론 여러 라이브러리를 동시에 사.. DND 8기 회고 DND 8기에 안드로이드 개발자로 참여하여 2개월 간의 여정을 다녀왔습니다. 원티드에 올라오는 공고들을 보면서 기술 스택 개발에 임하는 편인데, 원티드 메인에 DND 에 관한 홍보 포스트가 있어, 궁금증이 생겨 들어가 봤습니다. 많은 지원자들 중, 60명의 인재를 선발하고 그들을 총 10 개 팀으로 나누어 프로젝트를 진행하는 방식의 대외활동이었습니다. 특이하게도 면접이 없었는데, 오히려 변별력이 높다는 느낌을 받았습니다. 긴장감이나 컨디션에 따라 결과가 좌지우지 될 수 있는 면접이 빠져 있으므로, 더욱 정량적인 평가가 가능하기 때문입니다. 제출하는 서류는 구글 폼으로 작성되어 있고, 해당 폼에는 간단한 질문들만 있습니다. 지원자의 개발 지식을 확인하는 용도의 질문은 거의 없었던 것으로 기억하고, 대체로 .. [Jetpack Compose] Column 속 LazyColumn 의 OverScroll 을 막는 방법 Nested Scroll Jetpack Compose 에서는 자손 Composable 의 터치 및 스크롤 이벤트가 조상 Composable 로 전파됩니다. DND 8기로 활동하면서 개발 중인 앱에는 Column 내에 LazyColumn 이 포함되어 있는 형태의 화면이 있습니다. 해당 스크린 UI 개발을 마치고 커밋하기 전, 기기에 빌드하고 실행해봤습니다. 문제 없이 모든 부분 정상 작동하여 커밋하려고 했는데, LazyColumn 에서 스크롤을 Over 하게 수행하니 화면 전체에 해당하는 Column 이 스크롤되고 있었습니다. 기능상 심각한 문제는 아니었지만, 해결하지 않으면 유저가 예상하는 UX 와는 거리가 멀어질 것이라 판단했습니다. LazyColumn 의 스크롤이 끝나면 Column 의 스크롤이 진행.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 13 다음