Android MVI 라이브러리 Orbit-MVI

이전 포스팅 Android 프로젝트에 MVI 도입하기 를 먼저 읽는 것을 권장합니다. Orbit 개요 Orbit은 안드로이드 뿐만 멀티플랫폼을 지원하는 Redux/MVI 같은 라이브러리 이며, 쉽고 가벼운 것이 특징이다. 자세한 내용은 아래의 링크에서 참조하자 orbit-mvi github 저장소 공식 페이지 orbit을 프로젝트에 추가하기 위해 build.gradle에 다음 의존성을 추가 할 수 있다.(최신버전 확인) Orbit은 다음과 더보기…

Android 프로젝트에 MVI 도입하기

MVI 도입배경 프로젝트에 Jetpack Compose를 도입하고 1년정도 적극 쓰면서 ‘상태’ 관리의 중요성을 머리가 아닌 몸으로 느껴버렸다. 상태 관리를 어떻게 하면 좋을까 고민하던 중 동료 개발자가 이전에 나에게 말해줬던 MVI가 떠올랐다.  “MVI 는 상태를 쉽게 관리해준다구 blah blah…” Compose 도입 이전에는 그땐 상태 관리를 크게 중요하게 생각하지 않았다. 아니 어쩌면 관리가 더보기…

Navigation-safeargs 가 Directions 클래스를 생성하지 않는다?

안드로이드 스튜디오에서 ~Directions 클래스를 참조할 수 없다고 나오는데 빌드는 제대로 완료 되는 경우가 있다. 이 경우 Directions가 생성되지 않은 것이 아니라 참조가 되지 않는 것이다. 실제로 build/generated/source/navigation-args 경로에 가보면 Directions 클래스들이 존재하는 것을 확인할 수 있다. 즉, 컴파일 타임에 Directions가 제대로 생성되었지만 참조가 불가능한 경우이기 때문에 간단히 build.gradle에 다음의 내용을 더보기…

글쓴이 Charlezz,

디지털 카메라 센서 이해하기

디지털 카메라와 이미지 센서 DSLR(Digital Single-Lens Reflex)은 디지털 일안 반사식 카메라를 의미하며, 미러리스는 내부의 미러 및 펜타프리즘을 제거하여 크기와 무게를 줄인 카메라를 의미한다. 이 두 카메라 모두 렌즈를 통해 빛을 받고 이미지 센서를 통해 기록된다. 이미지 센서의 종류  이미지 센서의 종류는 크게 CCD와 CMOS로 나뉜다. CCD와 CMOS의 차이점을 잘 더보기…

macOS의 애플리케이션에 하드웨어 접근 권한 부여하기

Big Sur+VSCode 환경에서 OpenCV의 VideoCapture 클래스를 사용하여 카메라에 접근하려고 하는데 권한이 없다고 나온다. 권한을 부여하기 위해 System Preferences > Security & Privacy > Privacy > Camera 탭 을 열어서 애플리케이션 목록을 확인해도 VS Code는 Camera 관련 앱이 아니기 때문에 목록에 나오지 않는 듯 하다. macOS에서 애플리케이션의 권한목록은 데이터베이스로 관리 되고 더보기…

URI랑 URL 차이점이 뭔데?

URI 그리고 URL을 혼용해서 사용하는 경우가 있다. 대부분의 경우 문제가 없지만 정확하게 이 둘의 차이점이 존재한다. 그러므로 각 용어의 정의와 용도에 대해서 알아본다. URI URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다. 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스다. URL URL은 흔히 웹 주소라고도 더보기…

글쓴이 Charlezz,

답변받기 쉬운 질문 작성하기

답변받기 쉬운 질문 작성하기 찰스의 안드로이드 오픈채팅방은 안드로이드 앱 개발에 대해 자유롭게 질문하고 토론하는 공간입니다. 먼저, 현재 오픈채팅방에 고수분들이 많이 계시고, 여러 질문에 대해 답변을 잘 해주셔서 감사하다는 말씀드리고 싶습니다. 그런데, 아마 누군가는 이렇게 생각하실지도 모릅니다. “제가 한 질문에는 답변 안 해주시던데요?” 다들 현업에 종사하시고 있고, 틈틈이 바쁘신 시간 쪼개서 더보기…

빌드는 성공! 하지만 APK 설치는 실패! APK만 다시 설치하고 싶다면?

APK 재설치 스크립트 빌드 된 APK만 재설치 하고 싶을 때가 있다. 예를들어 Android Studio로 빌드(run)도중 단말과의 연결이 끊어지거나 APK의 업스트리밍이 실패하는 경우다. 물론 run을 다시 눌러 빌드를 새로 시작하고 APK를 설치할 수도 있지만, 경우에 따라 빌드에 최소 수분이상의 시간이 소요될 수 있기 때문에 빌드 된 APK를 재설치하는편이 낫다. 일반적으로 APK설치를 위해 adb 더보기…

동시성 프로그래밍에서 발생하는 경쟁 상태, 교착 상태에 대해 알아보자

동시성 프로그래밍(Concurrent Programming) 동시성 프로그래밍은 여러개의 계산들을 연속적으로 하는 것이 아닌 병행 처리하는 프로그램을 말한다. 이러한 동시성 코드를 제대로 작성하는 것은 쉽지 않다. 하지만 동시성 코드 작성을 통해 성능 향상을 기대할 수 있는 경우가 많기 때문에 현대 프로그래밍에서는 필수적인 요소다. 동시성 코드를 작성할 때 발생할 수 있는 공통된 문제점들에 대해서 더보기…

동시성과 병렬성의 차이

동시성(Concurrency)과 병렬성(Parallelism)은 다르다 동시성 동시성은 적어도 두 개의 스레드가 진행 중일 때 존재하는 조건이며, 가상 병렬 처리의 한 형태로 시간 분할(time-slicing)을 포함한다. 우리가 흔히 ‘동시’라고 이야기 하지만 컴퓨터(코어)는 한번에 하나의 명령어만 처리할 수 있다. 즉, 두개 이상의 알고리즘이 하나의 코어내에서 스레드간에 빠르게 교차되면서 실행되기 때문에 ‘동시’라고 느끼는 것이다. 위의 그림은 더보기…

글쓴이 Charlezz,