본문 바로가기

분류 전체보기

(174)
[Android] 데이터 바인딩 어댑터 (Data Binding Adapter) 사용 방법 필자가 예전에 DataBinding 관련한 공부를 진행하면서 기본적인 사용 방법에 대해 간단히 작성해 둔 게시글이 있다. 이번에 클린 아키텍처 관련 예제를 작성하다 데이터 바인딩을 사용한 조금 더 심화(?)된 방법으로 사용하고 있는 것을 보고 정리겸 간단하게 사용법을 작성해 보려고 한다. * 2020.06.15 - [AAC] - [DataBinding] 데이터 바인딩 기본 사용 방법 [DataBinding] 데이터 바인딩 기본 사용 방법 DataBinding 적용 최소 사항 Android 2.1 (API 7, Android Nougat) 이상 안드로이드 누가의 경우, 19년 10월을 기준으로 지원 중단. 갤럭시 S6이상의 기기에서 사용 가능. Android Plugin for Gradle 1.5.0-al..
[Android] Clean Architecture - UseCase 란 ? 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) Clean Architecture 를 공부하는 도중에, UseCase 라는 것을 domain layer 에서 사용하는 것을 보았다. UseCase 가 무엇이길래 이것을 사용하는 것인지 알아보자. UseCase 란 ? 서비스를 사용하고 있는 사용자(User)가 해당 서비스를 통해 하고자 하는 것을 의미한다. 즉, 블로그 라는 서비스가 있다고 가정해보자. 사용자는 블로그에 들어와서 보고 싶은 게시글을 '검색' 할수도 있고, '댓글'을 남기거나 '공유' 버튼을 누르는 등 다양한 행동을 수행할 수 있다. 이러한 사용자가 서비스에서 수행하고자 하는 것들이 UseCase 라고 할 수 있..
[Android] Clean Architecture 실전 압축 정리 - 개념 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) 클린 아키텍처를 공부하다 보면 모든 블로그에서 다음과 같은 이미지를 볼 수 있었다. 이게 뭔데 다들 이것만 올리는건데? 이게 뭔데 다들 이것만 올리는건데? 필자는 해당 이미지를 가장 처음 보았을 때 이런 생각이 먼저 들었다. 이는 Clean Architecture 에 대한 개념이 없이 해당 그림만 보면 이해가 안되는 것이 당연한 것이다. (어느정도 공부하고 봐도 헷갈리는건 마찬가지다) 그래서 교과서적인 개념 정리보다는, 필자가 공부하고 예제를 만들어 보면서 이해한 대로 정리해보려고 한다. 교과서적인 개념 정리가 필요하면, 다른 정리가 깔끔하게 된 블로그들이 많으니 참고하길 바..
[Kotlin] 10장. 코루틴과 동시성 프로그래밍 코루틴? 하나의 개별적인 작업을 루틴(routine)이라고 부르는데 코루틴이란 여러 개의 루틴들이 협력(co)한다는 의미로 만들어진 합성어. 프로세스와 스레드 하나의 프로그램이 실행되면 프로세스가 시작되는데 프로세스는 실행되는 메모리, 스택, 열린 파일 등을 모두 포함하기 때문에 프로세스 간 문맥 교환을 할때 많은 비용이 든다. 반면, 스레드는 자신의 스택만 독립적으로 가지고 나머지는 스레드끼리 공유하므로 문맥 교환 비용이 낮아 프로그래밍에서 많이 사용된다. 스레드 스레드 루틴을 만드려면 Thread 클래스를 상속받거나 Runnable 인터페이스를 구현하여 사용한다. 이런식으로 사용이 가능하며, 익명 클래스를 사용하면 다음과 같이 사용이 가능하다. 스레드 풀 사용하기 몇 개의 스레드를 먼저 만들어 놓고 ..
[Kotlin] 9장. 표준 함수와 파일 입출력 람다식 람다식은 항상 중괄호로 묶여 있으며 중괄호 안에 매개변수는 화살표 왼쪽에 배치, 오른쪽에는 그에 따른 식을 구현한다. val 변수 이름: 자료형 선언 = { 매개변수[,...] -> 람다식 본문 } sum은 익명 함수로 만들어지며, 람다식의 x + y 값이 반환 된다. 여기서 x, y의 값은 고정된 것이 아닌 사용자가 마음대로 선언이 가능하다. 하지만, 매개변수가 1개인 경우 매개변수를 사용하여 표현할 수 있지만 매개변수를 생략하고 it으로 표기할 수 있다. 이 때, it 은 고정된 변수 이름이므로 변경해선 안된다. 클로저 람다식으로 표현된 내부 함수에서 외부 범위에 선언된 변수에 접근할 수 있는 개념을 말한다. 이 때, 람다식 안에 있는 외부 변수는 값을 유지하기 위해 람다식이 포획한 변수라고 ..
[Kotlin] 9장. 컬렉션 컬렉션 컬렉션의 종류로는 List, Set, Map 등이 있으며 자바와는 다르게 불변형(immutable)과 가변형(mutable)으로 나뉜다. List : 불변형 listOf , 가변형 mutableListOf, arrayListOf Set : 불변형 setOf , 가변형 mutableSetOf, hashSetOf, linkedSetOf, sortedSetOf Map : 불변형 mapOf , 가변형 mutableMapOf, hashMapOf, linkedMapOf, sortedMapOf 변수 선언시에 불변형인 val의 사용을 권장하듯이 컬렉션도 되도록이면 읽기 전용인 불변형으로 사용하는 것을 권장. List 불변형 List 값을 변경할 수 없는 불변형 List를 만드려면 헬퍼 함수인 listOf()를 ..
[Kotlin] 8장. 제네릭과 배열 2 - 배열 배열 기본적인 배열 표현 배열을 생성하기 위해서는 arrayOf() 나 Array() 생성자를 사용하면 되고, 빈 상태의 배열을 지정하는 경우 arrayOfNulls()를 사용하면 된다. 다차원 배열의 경우 arrayOf안에 다시 arrayOf로 배열을 선언하면 다차원 배열을 만들 수 있다. val arr = arrayOf(arrayOf(1,2,3), arrayOf(4,5,6), arrayOf(7,8,9)) for (e1 in arr) { for (e2 in e1) { println(e2) } println() } 과 같이 2차원 배열을 선언하고, for문을 사용해 각 값을 출력할 수 있다. 특정 자료형으로 제한하지 않는다면 여러가지 자료형을 혼합할 수 있다. val mixArr = arrayOf(1, ..
[Kotlin] 8장. 제네릭과 배열 1 - 제네릭 제네릭 제네릭은 클래스 내부에서 사용할 자료형을 나중에 인스턴스를 생성할 때 확정한다. 객체의 자료형을 컴파일할 때 체크하기 때문에 객체 자료형의 안정성을 높이고 형 변환의 번거로움이 줄어든다. 제네릭의 일반적인 사용법 앵글 브래킷() 사이에 형식 매개변수를 넣어 선언하며, 형식 매개변수는 하나 이상 지정할 수 없다. box3,4 처럼 생성자에서 유추될 수 있는 자료형이 있다면 선언된 자료형을 생략하고 호출이 가능하다. null 제어 제네릭은 기본적으로 null이 가능한 형태로 선언된다. 자료형에 ?를 붙여서 선언하게 되면 해당 값은 null이 들어갈 수 있다는 표시이다. 따라서 obj 객체에는 null 값이 들어가면 에러로 처리되지만, obj2 객체는 null 값이 들어가도 정상적으로 동작한다. nul..