본문 바로가기
[Pattern] Android의 설계 패턴 2 : MVP by Java [Pattern] Android의 설계 패턴 2 : MVP by Java 안드로이드에서의 MVC를 살펴보았으니, 이제 MVP를 살펴볼 차례이다. Eric Maxwell 선생님께서는 안드로이드에서 어떻게 MVP를 활용하는지 역시 TicTacToe 예제를 통해 보여주셨다. 대단하신 분이다. 우선 MVP가 무엇인지부터 살펴보고 가자. MVP는 모델(Model)-뷰(View)-프레젠터(Presenter)라는 책임 집합으로 나뉘는 설계 패턴이다. https://github.com/ericmaxwell2003/ticTacToe GitHub - ericmaxwell2003/ticTacToe: A simple tic tac toe app, to illustrate the use of MVC, MVP, and MVVM .. 2022. 4. 17.
[Jetpack AAC] Data Binding 기본 #1 [Jetpack AAC] Data Binding 기본 #1 Jetpack은 2018년에 첫 공개된 안드로이드 개발에 도움을 주는 패키지 묶음이다. 기존의 구글에서 제공하던 서포트 라이브러리를 모아 통합한 것으로, 그중 AAC(Android Architecture Component)는 안드로이드 MVVM(Model-View-ViewModel) 패턴의 시대를 연 장본인이다. 그로부터 약 4년이 지난 지금, MVVM은 이제 대세다. MVVM을 시작하기 위해선 뭐부터 시작해야 할까? 바로 데이터 바인딩(Data Binding) 이다. 데이터 바인딩은 선언적 형식으로 UI와 데이터 소스를 연결하는 행위를 말한다. 이게 뭔 소린가? 그동안 UI 구성하고 데이터 소스 연결 잘해왔는데? 선언형 UI란 무엇일까. 일단 .. 2022. 4. 12.
[Pattern] Android의 설계 패턴 1 : MVC by Java [Pattern] Android의 설계 패턴 1 - MVC Eric Maxwell 선생님께서 작성하신 안드로이드의 패턴 간단 정리를 통해 그동안 머릿속에 있던 안드로이드 설계 패턴에 대한 파편화된 기억을 모아보고자 한다. 안드로이드에서 쓰이는 패턴은 크게 MVC, MVP, MVVM이 있지만 각기 장/단점이 있고, 늘 엔지니어들 사이에서 무엇이 나은가에 대한 논의는 계속해서 이루어지고 있다. 최근(2017 이후)에 이르러서는 구글이 제시하는 Jetpack을 통한 설계로 중간~대규모 프로젝트에는 거의 MVVM가 많이 쓰인다. 그렇다고 MVVM이 최고로 좋다!는 아니고 어떤 경우는 MVC, MVP가 좋을 때도 있다. 그리고 왜 MVVM 으로 귀결되는 추세를 보이는지 더 잘 알기위해선 MVC, MVP에 대해 당.. 2022. 4. 1.
[Pattern] 옵저버 패턴 (Observer Pattern) by Kotlin [Pattern] 옵저버(Observer) 패턴 굉장히 유명한 디자인 패턴이다. 꼭 알고 넘어가야한다. 이벤트를 관찰하는 패턴 옵저버 패턴은 한 클래스가 다른 클래스의 상태 변화를 관찰(Observe)하고자 할 때 구현하는 패턴이다. 예를 들어 클래스 A가 클래스 B를 인스턴스화 한 객체를 가지고 있고, 이 객체의 상태변화(Event)를 감지하여 그 데이터를 활용하고자 할 때 쓰인다. 이때 A클래스는 옵저버가 되기위해 옵저버를 구현(implement)하고, 그 옵저버는 B클래스에 등록(register)이 되어있어야 상태변화의 전달이 가능하다. Java의 Swing 라이브러리나 안드로이드를 사용해 봤다면 다양한 영역에서 이벤트 리스너를 사용해 보았을 것이다. 이것이 대표적 사례로 거의 모든 GUI 툴킷에 .. 2022. 3. 28.
[Medium/C++] Minimum Time Required [Medium] Minimum Time Required 백준 기준 실버1~골드5 문제정도 될 것 같다. 한줄 요약 : 이분 탐색 문제. 문제 문제는 다음과 같다. 우선 이 문제는 Search 카테고리의 문제이다. 물건을 만드는 기계들이 있다. 이 기계들은 동시에 작동하며 각 기계는 물건 하나를 생산하는데 몇 일이 걸린다. 예를 들어 machines = [2,3,2] 로 주어진다면, 3개의 기계가 각각 물건 하나를 생산하는데 걸리는 시간이 2일, 3일, 2일 이다. 물건을 10개 만드는 것이 목표라면, 아래와 같은 스케줄을 가지면서 최소 8일 후에 10개를 생산할 수 있다. 물건하나를 생산하는데 몇일이 걸리는지 나열된 배열과 목표 물건의 개수가 주어졌을때, 최소 몇일이 걸리는지 맞추는 문제이다. 솔루션 우.. 2022. 3. 22.
[Language] Dart 언어 연습 사이트 : DartPad [Language] Dart 언어 연습 사이트 (feat. Flutter Sample) Flutter 개발에 필수 언어인 Dart를 공부할때 매우 유용한 웹기반 연습 프로그램이다. 주소는 아래와 같다. https://dartpad.dartlang.org/ DartPad dartpad.dartlang.org 기본 문법 연습이 가능 플러터 샘플 코드와 실행결과를 확인가능 끝 2022. 3. 4.
[Kotlin] 코루틴 (Coroutine) #2 - 기본기 2 [Kotlin] 코루틴 (Coroutine) #2 - 기본기 2 첫 번째 코루틴 포스트에서 코루틴 빌더 중 launch만 살펴보았다. launch에 대한 더 자세한 내용과 또다른 빌더인 async를 알아보고 루틴의 작업(Job), 그리고 코루틴의 문맥에 대해 알아보겠다. 복습 1. 코루틴 스코프 : 루틴 작업이 정의되는 코드 영역 ex ) GlobalScope, CoroutineScope 2. 코루틴 빌더 : 코루틴 스코프를 생성하는 빌더 ex ) launch, async, runBlocking 이 포스트에서 공부할 것 1. 코루틴 빌더 : async 2. 작업(Job) 3. 코루틴 빌더 매개변수 코루틴 빌더 : async async는 launch 처럼 코루틴 스코프를 생성하는 코루틴 빌더이다. laun.. 2022. 2. 24.
[Kotlin] 스코프 함수(Scope Functions) #1 [Kotlin] 스코프 함수(Scope Functions) #1 코틀린 표준함수 중에는 리팩토링 또는 자원 낭비를 방지할 수 있도록 돕는 스코프 함수 몇 가지가 있다. 이 함수들은 확장함수로 구현된 함수로 람다식을 이용해 접근하는 것이 일반적이다. 이 함수들의 가장 큰 목적은 블록 내의 코드를 각 객체의 문맥(Context) 내에서 실행하도록 한다. 스코프 함수는 크게 5가지가 있다. 여기서 let, run, apply, with는 제네릭 확장함수 형태이므로 어디서든 적용이 가능하다. let : 주로 Null 검사 생략 용도 주로 해당 객체가 Null이 아니면 어떠한 코드 블록을 실행하고, Null이면 실행하지 않도록 구현할 때 사용한다. 람다의 매개변수는 호출한 객체 자신이며 it으로 참조 가능하다. .. 2022. 1. 17.
[Kotlin] 코루틴 (Coroutine) #1 - 기본기 1 [Kotlin] 코루틴 (Coroutine) #1 - 기본기 1 개념 코루틴은 동시성 프로그래밍을 위해 탄생하였으며, 일명 '루틴(Routine)' 이라고 불리는 논블로킹(Non-Blocking) 작업(Job)들을 정의한 뒤, 이것들을 조화롭게 활용하여 멀티태스킹을 수행하는 것을 말한다. 그래서 여러 루틴들의 협력한다하여 코(Co)루틴이다. (코틀린의 'Ko'도 아니고, 코틀린만의 개념도 아니다!) 논블로킹(Non-Blocking)은 현재 작업을 수행중인 메인스레드를 중단(Blocking)하지 않고, 백그라운드에서 작업을 수행하여 현재 스레드를 종료하지 않도록하는 비동기적 작업 수행을 말하는데, Java 에서는 쓰레드(Thread, Runnable)을 통해 이러한 작업 구현이 가능했다. 그러나 이런 비동.. 2022. 1. 10.