본문 바로가기

전체 글94

Android Room - Coroutines(코루틴)과 같이 쓰는 법 이번 포스팅에서는 지난 번에 설명한 Room과 Coroutine을 함께 사용하는 방법에 대해 알아 본다. Room은 2.1 버전부터 Coroutine을 지원해주고 있다. DAO 메소드를 suspend로 선언하여 사용할 수 있다. build.gradle 파일 수정 Room만 사용한다고 Coroutine 지원을 바로 받을 수 있는 것은 아니다. Room과 Coroutine을 함께 사용하려면 build.gradle 파일에서 Room 버전을 2.1 이상으로 지정하고 Coroutine 지원 dependency도 추가해주어야 한다. 위와 같은 방식으로 build.gradle에 coroutine을 위한 room dependency를 추가해주면 된다. suspend DAO method 선언 DAO 선언시 suspend.. 2020. 6. 6.
Android Room - Entity Annotations Room Entity에 사용할 수 있는 annotation들은 굉장히 많다. 그 중에 사람들이 자주 사용하는 annotation들에 대해서 짧게 정리해보려 한다. Entity 먼저 class를 Room Entity로 선언하기 위해서 기본적으로 Entity Annotation을 지정해줘야 한다. Entity Annotation 안에서 위와 같이 table 이름을 지정해 줄 수 있다. 지정하지 않으면 클래스 이름을 그대로 table 이름으로 사용하게 되는데, 일반적으로는 table 이름을 직접 지정하는 경우가 더 많을 것이다. 이럴 때는 위와 같이 사용하면 된다. PrimaryKey 필드를 DB의 기본 키로 설정할 수 있다. DB가 해당 키를 자동으로 증가시키게 하려면 autoGenerate를 true로 하.. 2020. 6. 4.
Android Room Room이란? Room은 SQLite를 편하게 사용할 수 있도록 하는 wrapper라고 생각하면 된다. Room은 Persistence 라이브러리로, SQLite를 사용하는 추상화 계층을 제공하여 SQLite의 모든 기능을 사용할 수 있는 다양한 DB Access가 가능하도록 해 준다. Room을 사용해야 하는 이유 컴파일 타임 체크를 제공 LiveData를 함께 사용하기에 편리 구현하고 사용하기가 편리 사용시 쓸데 없이 많은 코드 불필요 Room의 기본 컴포넌트 Entity DAO Databse Room의 기본 컴포넌트는 위와 같이 세 가지 요소가 있다. Entity Database에서 사용할 테이블과 매칭되는 Kotlin(또는 Java) 클래스 DAO get, store 등과 같이 Database a.. 2020. 6. 2.
Kotlin - Coroutine 추가 정리 3 [이전 글] 2020/05/27 - [Android/Kotlin] - Kotlin - Coroutine 추가 정리 1 2020/05/29 - [Android/Kotlin] - Kotlin - Coroutine 추가 정리 2 Callback 대신 Coroutine 쓰기 [Callback] Callback을 사용한 간단한 예시이다. Network Request를 하면 fetch를 하고, fetch가 완료되면 callback이 불리는 구조이다. callback은 받은 결과를 화면에 표시해준다. 이렇게 callback을 사용하면 fetch를 부르고 결과를 기다리거나 하지 않고 이와 상관 없이 networkRequest() 함수는 종료되게 된다. networkRequest() 함수 내에서 fetch 결과에 따라 .. 2020. 5. 31.
Kotlin - Coroutine 추가 정리 2 지난 글에 이어서 계속 작성해 본다. 지난 글 : 2020/05/27 - [Android/Kotlin] - Kotlin - Coroutine 추가 정리 1 구조적 동시성 앞선 글의 예시들을 보면, Coroutine도 결국 blocking 하고 coroutine이 끝날 때까지 기다리는 식의 전통적인 패턴인 것처럼 보인다. 자바에서는 일반적으로 쓰레드에 대한 참조를 유지하고 모든 쓰레드에 대해 join()을 호출해서 다른 쓰레드를 기다리는 동안 기본 쓰레드를 차단하는 방식으로 진행했다. Coroutine도 이와 비슷하게 처리를 할 수는 있지만 이렇게 예전과 같이 사용하는 방식을 사용하지는 않는다. Kotlin에서는 Coroutine을 계층 구조로 만들 수 있다. 그러므로 부모 Coroutine이 자식 Cor.. 2020. 5. 29.
Kotlin - Coroutine 추가 정리 1 Coroutine에 대해서 지난 번 포스팅 글보다 조금 더 상세하게 다시 정리해보려고 한다. 사용을 하다 보니 지난 번에 작성했던 것보다 더 디테일한 부분들도 있고 어떻게 동작하는 지도 더 알면 좋을 것 같아서이다. Coroutine에 대해 다시 한번 생각해보면, 이를 사용해서 callback의 사용을 줄이면서 더 한눈에 들어오게 사용할 수 있다는 장점이 있다. 다른 프로그래밍 언어(ex. javascript)에서의 async await라고 생각할 수도 있다. 비동기 처리 패턴 중의 하나인데, 기존의 비동기 처리 방식인 callback의 단점을 보완하여 더 깔끔하게 코드를 작성할 수 있다. Kotlin은 suspend 키워드를 사용해서 여러 라이브러리 함수와 함께 비동기 프로그래밍을 할 수 있도록 해준다.. 2020. 5. 27.
SWEA 4047 - 영준이의 카드 카운팅 문제 링크 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIsY84KEPMDFAWN 문제의 저작권은 SW Expert Academy에 있습니다. 코드 하단의 example.cpp를 클릭하면 코드를 복사할 수 있습니다. 해당 포스팅은 이전 블로그에서 옮겨 온 글입니다. 2020. 5. 26.
Kotlin 기초 문법 7 - object, companion object Object 코딩을 할 때 싱글턴 패턴이 필요한 경우가 생길 수도 있을 것이다. Kotlin에서는 싱글턴 패턴을 직접 만들어서 사용할 수도 있지만, Object 선언을 통해서 편하게 싱글턴 객체를 생섵할 수 있는 방법도 제공해 준다. 클래스를 선언할 때 class 키워드 대신에 object 키워드를 사용하면 간편하게 만들 수 있다. [Code] [결과] class 키워드 대신에 object 키워드를 사용한 것만 제외하면 클래스를 선언하는 것과 다를 것이 없다. 이렇게 object로 선언하면 SingletonObject라는 식별자로 객체에 바로 접근하는 것이 가능하다. Companion Object companion object에 대해 설명하기 전에 미리 말하면, companion object는 stati.. 2020. 5. 26.
SWEA 1974 - 스도쿠 검증 문제 링크 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq 문제의 저작권은 SW Expert Academy에 있습니다. 코드 하단의 example.cpp를 클릭하시면 코드를 복사할 수 있습니다. 해당 포스팅은 이전 블로그에서 옮겨 온 글입니다. 2020. 5. 25.
Kotlin : local, infix, inline functions, Operator Overloading Local Functions (지역 함수) 함수 안에서 scope 내에 지역 변수를 선언해서 사용할 수 있듯이 함수의 scope 내에서 지역 함수를 선언하여 사용할 수 있다. 당연히 해당 scope 밖에서는 지역 함수를 사용할 수 없다. 내부에서 사용할 때 선언하여 사용할 수 있다. [Code] [결과] Local Return [Code] 위의 코드를 실행하면 어떻게 될까? [결과] forEach문 안에서 return을 하면서 함수 return이 되어서 함수가 종료된다. 이때 forEach문 안에서만 return을 하려 했다면 return@forEach를 사용하면 된다. @ 뒤에 return 할 scope를 지정해주면 의도한 대로 사용이 가능하다. [Code] [결과] 아까와는 다르게 main 함수가 마.. 2020. 5. 25.
SWEA 1768 - [SW Test 샘플문제] 숫자야구게임 문제 링크 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4su3xKXFUDFAUf 문제의 저작권은 SW Expert Academy에 있습니다. 코드 하단의 example.cpp를 클릭하면 코드를 복사할 수 있습니다. 해당 포스팅은 이전 블로그에서 옮겨 온 글입니다. 2020. 5. 24.
Kotlin 기초 문법 6 - Nullable, null, null check 오늘은 Swift의 Optional, nil과 비슷한 개념인 Nullable, null에 대해 알아볼 것이다. Swift와 비교한 부분은 다른 글에 따로 포스팅 했으니 필요하다면 참고 바란다. null 먼저, Kotlin에서의 null은 다른 언어에서의 null 개념과 비슷하다고 생각하면 된다. null은 변수가 실제로 아무 객체도 가리키고 있지 않다는 뜻이다. C언어에서도 메모리를 가리키는 포인터가 실제로 가리킬 객체나 자료가 없을 때 NULL을 가질 수 있듯이 Kotlin도 null을 할당할 수 있다. 한 가지 차이점은 C언어에서의 NULL은 값이 0으로, 0번 주소가 되고 이것은 가리키는 메모리가 없다는 뜻으로 인식된다. 하지만 Kotlin에서의 null은 0이 아니라 null이 따로 정의되어 있다.. 2020. 5. 24.