본문 바로가기

전체 글56

[Gradle] AGP 8.0에서 BuildConfig 사용 시 에러 멀티모듈에서 BuildConfig를 buildType별로 다르게 하기 위해 해당 모듈 build.gradle 파일을 아래와 같이 작성했었다. android { namespace 'com.app.xxxx' compileSdk 33 defaultConfig { minSdk 21 targetSdk 33 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" } buildTypes { release { buildConfigField "Boolean", "DEBUG_MODE", "false" } debug { buildConfigField "Boolean", "DEBUG_.. 2023. 3. 7.
[Reactive Programming] 비동기 데이터 스트림 ReactiveX 개념 정리 Subject 지난 글에서 언급한 반응형 프로그래밍(Reactive Programming)을 구현하기 위해선 Flow, RxJava 등의 비동기 데이터 스트림 라이브러리는 현대에서 필수불가결한 요소입니다. 그중 대표적인 ReactiveX API에 대해 알아보고자 합니다. ReactiveX (RxJava, RxSwift,...) Rx의 의미가 무엇일까? ReactiveX의 줄임말로, "비동기 프로그래밍을 위한 관찰 가능한 Stream API"라는 의미를 갖고 있으며, Observer 패턴, Iterator 패턴, Functional Programming(함수형 프로그래밍)의 구현에 최적화되어있다고 합니다. 공식 홈페이지에서는 ReactiveX를 활용하여 Observer 패턴을 구현하는 방법을 3 단계로 표.. 2023. 3. 1.
[Reactive Programming] 반응형 프로그래밍 이해하기 Subject RxJava, Flow, LiveData 등은 비동기 데이터 스트림을 위해 만들어진 라이브러리들입니다. 이러한 라이브러리는 반응형 프로그래밍(Reactive Programming) 구현을 위해 사용되는데, 이곳에서는 반응형 프로그래밍의 의미에 대해 살펴보고자 합니다. 반응형 프로그래밍 (What is Reactive Programming?) 리액티브 프로그래밍이 무엇일까? Wikipedia나 Stackoverflow에서는 매우 복잡한 이론인 듯 장황하게 설명되어 있습니다. Reactive programming is programming with asynchronous data streams. 리액티브 프로그래밍이란 비동기 데이터 스트림과 함께하는 것이다. 여러 곳을 둘러보니 위와 같은 @a.. 2023. 2. 28.
모바일 앱 아키텍처 종류와 특징 (MVVM, MVC, MVP, MVI) 이번주 스터디 그룹의 주제는 디자인 패턴 중 앱 아키텍처 패턴으로, 대표적인 4가지 아키텍처에 대해 살펴보고자 합니다. 🔧 아키텍처 패턴(설계 패턴)이란 사전적 정의로 아키텍처 패턴은 공통적으로 자주 발생하는 문제를 해결하는 재사용 가능한 해결방법입니다. 이는 소프트웨어 아키텍처보다 큰 범주를 가집니다. 과거 UI를 가진 프로그램에서 데이터를 기반으로 화면에 렌더링 할 책임이나, 비즈니스 로직을 아까 말한 책임과 함께 묶는 방법에 대한 정의가 명확하지 않았습니다. 아키텍처 패턴은 이를 해결하기 위해 만들어진 디자인 패턴입니다. 🔧 모바일 앱 4대 아키텍처 아래 4가지는 현대 개발자가 주로 사용하는 아키텍처로, 밑에서 이들의 차이점을 설명하고자 합니다. MVC (Model-View-Controller) M.. 2023. 2. 15.
클린 아키텍처(Clean Architecture) 개념 및 원칙 개발이란 마치 여러 개의 기반이 되는 블록을 만들어 설계 원칙에 따라 조립하여 완성해 나아가는 과정이라고 생각합니다. 여기서 설계 원칙은 수 많은 디자인 패턴들을 의미하며, 이번 주는 아키텍처 패턴에 속하는 클린 아키텍처에 대해 알아보는 것으로 이번 주 스터디 그룹의 주제를 선정하였습니다. 화자는 실무에서 MVVM 패턴과 클린 아키텍처를 함께 사용 중이나, 이 둘에 대한 설명에 명확한 답변을 할 수 있을지 의문을 가져 이번 기회에 명확히 알아두고자 합니다. 클린 아키텍처를 사용해야 하는 이유 기원 엉클 밥(Robert C. Martin)은 애자일 방법론의 지지자이자, SOLID (객체지향 설계 원칙)의 창시자로 알려져 있습니다. 그는 'Clean code'와 'Clean architecture'등의 책의.. 2023. 2. 1.
Ubuntu 22.10의 SSH 포트 변경 방법 Ubuntu 22.10 버전부터 /etc/ssh/sshd_config를 통한 설정이 불가능하고, /lib/systemd/system/ssh.socket의 수정을 통해서만 가능합니다. 1. 프롬프트 창에서 아래의 명령어를 입력하여 에디터를 엽니다. sudo nano /lib/systemd/system/ssh.socket 2. 해당하는 줄을 수정합니다. ListenStream=50022 3. SSH 서비스를 재시작합니다. sudo service ssh restart 참조 https://askubuntu.com/questions/1439461/ssh-default-port-not-changing-ubuntu-22-10 2023. 1. 25.
[Android Compose] 컴포즈 캠프 굿즈 수령후기 안드로이드 굿즈 모습 배지도 앙증맞고 부직포 가방도 안드로이드를 큼직하게 박아놔서 마음에 드네요! 머그컵은 회사에 가져가서 쓰려다가 얼음 넣기 크기가 널찍한 게 마음에 들어서 집에서 자주 쓸 듯합니다. ⓒ 굿햄 2022. daryeou@gmail.com all rights reserved. 2023. 1. 19.
[Kotlin] 안드로이드에서 Coroutine 사용하기 Kotlin Coroutine 이해하기 3부 의존성 추가 Coroutine 사용을 위해 build.gradle(:app) 에 의존성을 추가한다. Kotlin/JS 나 Kotlin/Native를 멀티플랫폼을 위한 설명은 아래 사이트에서 확인할 수 있다. https://github.com/Kotlin/kotlinx.coroutines 코루틴의 일반적인 사용 방법 Coroutine(코루틴)은 Asynchronous/Non-Blocking Programming을 제공하는 Lightweight Thread(경량 스레드)이다. 기본적인 사용 문법은 Context(Job + Dispatcher)로 Scope를 만든 뒤, Builder를 사용하여 Coroutine을 실행하는 것이다. 이 세 가지의 용도는 아래에서 소개.. 2023. 1. 18.
[Kotlin] Coroutine vs Thread Kotlin Coroutine 이해하기 2부 Kotlin Coroutine 개념 기초 Coroutine(코루틴)을 수도없이 사용해왔지만 이게 무슨뜻일지 궁금했다 Co(협력) + Routine(작업)으로 협력형 멀티태스킹이라 말할 수 있다고 한다. (이에 대한 자세한 내용은 하단에 링크 첨부) Android Developer 사이트에서는 아래와 같이 정의하고 있다. 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 코루틴은 Kotlin 버전 1.3에 추가되었으며 다른 언어에서 확립된 개념을 기반으로 합니다. Android에서 코루틴은 기본 스레드를 차단하여 앱이 응답하지 않게 만들 수도 있는 장기 실행 작업을 관리하는 데 도움이 됩니다. 코.. 2023. 1. 18.
[Kotlin] Coroutine(코루틴) Thread란 무엇인가 Kotlin Coroutine 이해하기 1부 안드로이드 컴포즈 모각코에 참여하면서 스터디 그룹에 들어갈 기회가 생겼다. 각 주제별로 나누어 내가 들어간 팀은 5인조로 구성되었고, 처음 만나보는 분들과 정보도 교류하고 학습도 할 수 있는 좋은 기회라고 생각한다. 공통주제로 Kotlin의 Coroutine과 Flow에 대해 포스팅을 작성하고 한 명이 발표하는 것으로 정하였다. Thread 이해 코루틴을 이해하기 앞서 Java를 사용하며 봐왔던 Thread에 대한 이해가 필요하다. OS위에서 메모리 공간을 할당받아 실행중인 소프트웨어/프로그램 이를 Process(프로세스)라 한다. 하나의 프로그램은 1개 이상의 프로세스를 실행하고 프로세스 당 1개의 Heap 메모리를 할당받아 한 가지의 작업을 한다. 그리고 .. 2023. 1. 17.