분류 전체보기
-
Kotlin) Coroutine 공식 가이드 번역 04 - Coroutine Context and DispatchersKotlin 2021. 1. 15. 21:34
디스패처와 스레드 코루틴은 항상 Coroutine Context로 대표되는 어떤 context에서 실행됩니다. 코루틴의 context중 main 요소는 Job, dispatcher 입니다. code launch { // 상위 컨텍스트, main runBlocking 코루틴 println("main runBlocking : I'm working in thread ${Thread.currentThread().name}") } launch(Dispatchers.Unconfined) { 제한되지 않음 -- 메인 스레드와 함께 실행 println("Unconfined : I'm working in thread ${Thread.currentThread().name}") } launch(Dispatchers.Defa..
-
Kotlin) Coroutine 공식 가이드 번역 03 - Composing Suspending FunctionsKotlin 2021. 1. 15. 20:54
https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-context.html 기본적으로 순차적 코루틴은 기본적으로 순차적으로 수행됩니다. 예제에서 공통으로 사용하기 위한 suspend 함수를 생성합니다. suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 여기에서 어떤 유용한 일을 하고 있는 것처럼 동작합니다 return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) // 여기에서 어떤 유용한 일을 하고 있는 것처럼 동작합니다 return 29 } code val time = meas..
-
MongoDB) MongoDB 소개와 간단한 사용법MongoDB 2021. 1. 13. 22:50
MongoDB NoSQL 기반의 데이터베이스입니다. NoSQL의 의미는 SQL이 없다라는 뜻이 아닌 Not Only SQL입니다. 기존의 RDMS(관계형 데이터베이스)의 한계를 극복하기 위해 만들어진 데이터저장소입니다. Schema-less(Schema가 없습니다.) Application에서 사용되는 객체를 데이터베이스에 추가할 때 Conversion/Mapping이 불필요합니다. 설치과정은 생략합니다. Collection Document의 그룹입니다. RDMS의 Table과 비슷한 개념이지만, schema를 가지고 있지 않습니다. Document들이 동적인 schema를 가지고 있기 때문입니다. Document { "_id": ObjectId("5099803df3f4948bd2f98391"), "use..
-
Kotlin) Coroutine 공식 가이드 번역 02 - Cancellation and TimeoutsKotlin 2021. 1. 11. 18:22
코루틴 실행 취소하기 장시간 구동되는 어플리케이션에서는 백그라운드 코루틴에 대한 세밀한 제어가 필요합니다. 사용자가 코루틴을 시작시킨 페이지를 닫았을 수 있으며, 이제 그 결과를 필요로 하지 않고 해당 작업을 취소할 수 있습니다. launch함수는 실행중인 코루틴을 취소시키는 데 사용할 수 있는 job을 리턴시킵니다. code val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // 약간 delay println("main: I'm tired of waiting!") job.cancel() // job 취소 job.join() // job의 완료를 대기 println("m..
-
프로그래머스) 오픈채팅방 - JAVA알고리즘 2021. 1. 8. 18:43
programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr HashMap의 키의 중복이 허용안되는 특성을 이용해서 풀었습니다. java의 switch의 case가 람다식을 지원하더군요..! 풀이)
-
Kotlin) Coroutine 공식 가이드 번역 01 - BasicsKotlin 2021. 1. 8. 14:37
코루틴 공부를 위해 코루틴 공식 문서 순서에 따라 글을 작성해 보려고 합니다. Coroutines? 우선 코루틴이 무엇인지에 대해 간략하게 알아보고 가겠습니다. 협력형 멀티 태스킹 동시성 프로그래밍 지원 비동기 처리를 쉽게 도와준다. ▶ 코루틴의 핵심은 경량 스레드 입니다. 코루틴의 시작 code import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch fun main() { GlobalScope.launch { // 새로운 코루틴을 백그라운드에서 실행 및 진행 delay(1000L) // 1초간 non-blocking 지연 (기본 시간 단위는 밀리세컨드) println("Wor..
-
Android) Fragment에서 View Binding 문제점, 제대로 사용하기Android 2021. 1. 6. 22:22
View Binding을 모르시는 분들은 이전 글에서 확인 부탁드립니다. Problems in ViewBinding View Binding in Fragment private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = ResultProfileBindi..
-
Android) LiveData와 Lifecycle 알아보기 - Activity, Fragment 사용법Android 2021. 1. 5. 15:28
개발을 하다보면 Activity와 Fragment를 함께 사용하면서 복잡한 생명주기를 다루게 되는 순간이 있습니다. 이 때 생명주기에 더욱 주의를 기울여야 하는데, AAC의 Lifecycle이 생명주기의 처리를 도와주는 라이브러리입니다. LiveData Observer Pattern을 쉽고 간단한 문법으로 구현 할 수 있게 해줍니다. 주로 ViewModel에 생성하며 View가 observe 하는 형태로 사용합니다. LiveData는 lifecycle-aware component입니다. 즉 LiveData의 lifecycle은 observer의 lifecycle을 따라갑니다. 그래서 observer가 위치한 View가 사라지게 되면 LiveData도 함께 사라집니다. ※ Observer Pattern 1..