목표launch와 async 빌더 사용법과 각각의 특징 설명Deferred 객체 사용법과 비동기 결과 처리 방법실제 네트워크 호출을 예로 들어 비동기 처리 실습코루틴 빌더 함수코루틴을 생성하는 데 사용하는 함수를 코루틴 빌더 함수라고 한다.코루틴 빌더 함수 종류- runBlocking- launch- asynclaunchlaunch는 코루틴을 추상화한 Job 객체를 반환하며, 이 Job 객체가 cancel되면 코루틴도 cancel됩니다.launch의 coroutineContext는 CoroutineScope를 통해 상속받고, 추가적인 context 요소를 넣을 수도 있습니다.만약, 동일한 key를 가진 context 요소가 이미 있었다면 해당 값을 덮어씌우는 형태로 동작합니다.위 이미지를 보면 확인할 수..
Kotest pluginKotest는 IntelliJ에서 구현할 때 편리함을 주는 플러그인을 제공한다. 각 테스트별로 실행/디버깅중복 테스트 이름이 있을 경우, 밑줄로 알려줌context 내 test는 이름 중복되어도 알려주지 않고, 상위 test에 대해서만 이름 중복 여부 알려줌특정 패키지에 있는 전체 테스트 실행/디버킹해당 플러그인은 IntelliJ에서 아래와 같이 검색이 가능하다.
목표Kotlin 코루틴이 등장한 배경과 기본 개념 소개Launch와 suspend 함수를 사용한 간단한 예제를 통해 코루틴의 기본 실습JVM 프로세스와 스레드더보기프로그램이란?프로그램은 디스크에 저장된 파일의 내용(ex. 소스코드 파일)처럼 보조 메모리에 저장된 수동적 개체(passive entity)이다.실행되어야 할 몇 가지 명령들이 포함된 파일로, 실제로 수행하기 위해서는 메모리에 올려서 실행되어야 한다.프로세스란?프로세스(Job)은 CPU에 의해 실행될 수 있도록 컴퓨터 메모리에 로드된 프로그램 코드를 의미합니다.프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로도 볼 수 있습니다.프로세스가 동작하기 위해서는 메모리 주소, CPU, I/O와 같은 리소스가 필요합니다.프로세스는 수행되는 동안에만 존..
sdkman을 이용한 Java 버전 관리하기 로컬환경에서 개발할 때, 프로젝트마다 Java 버전이 다를 경우 매번 직접 구글링해서 원하는 Java 버전 설치 및 설정을 해야합니다. 이때, sdkman을 활용하면 편하게 Java 버전을 설정할 수 있습니다. sdkman 설치하기 # sdkman 설치 curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" # sdk 버전 정보가 나오면 정상적으로 설치된 것 sdk version sdkman은 macOS, 리눅스, 윈도우 환경에서 모두 사용이 가능하며, Zsh와도 호환됩니다. 유용한 sdkman 명령어 특정 버전의 언어를 설치하고자 할 경우 # sdk install [언어..
들어가기 전에 Java에서는 stream()을 통해 collection 요소를 하나씩 참조하여 반복적인 작업을 할 수 있습니다. Kotlin에는 Collections 자체에 filter(), map() 등의 API를 제공하고 있어 stream() 없이도 collection 요소에 하나씩 참조가 가능합니다. 위 내용만 보면, Java에서 collection에 stream() 붙여서 사용하는 경우와 Kotlin에서 collection의 API를 호출하는 경우 동일하게 연산이 이루어질 것 같지만 서로 상이하게 연산을 진행합니다. Java의 stream: Lazy Evaluation Kotlin의 collection 기본 연산(iterable): Eager Evaluation 이번 포스팅에서는 Kotlin의 c..
배경 github 정책상, private repository에 대해 password 인증을 통해 git clone 하는 방식이 제거되어 access token을 활용한 git clone이 필요해졌습니다. personal access token 생성하기 먼저, github에 로그인 한 뒤 본인의 프로필을 클릭해 settings > Developer settings에 접근합니다. Developer settings에서 Personal access tokens을 선택하여 token을 생성합니다. Generate new token 버튼을 누르면 token을 생성할 수 있고, repo 관련된 작업을 할 것이기 때문에 repo과 관련된 권한을 가진 token을 생성해야 합니다. 추가적으로, 생성된 토큰은 다시 볼 수..
DataGrip에서 프로시저 수행하기 DataGrip에서 프로시저를 수행하기 위해서는 EXEC 프로시저명();이 제대로 작동하지 않습니다. EXEC는 SQL 또는 PL/SQL의 고유 기능이 아닌, SQL *Plus의 기능이기 때문입니다. 따라서, 아래와 같이 프로시저를 실행해야 합니다. 먼저, 실행하고자 하는 프로시저를 마우스 우클릭한 후 Run Procedure...을 클릭합니다. 프로시저 내에 넣어야 하는 파라미터가 존재한다면 해당 파라미터를 수정한 후 OK를 눌러 수행합니다. 참고 자료 stackoverflow - How to execute PL/SQL procedures from DataGrip
객체를 만들어야 할때와 만들지 말아야 할 때를 구분하자. 올바른 객체 생성 방법과 불필요한 생성을 피하자. 객체가 제때 파괴됨을 보장하고, 파괴 전 수행해야 할 정리 작업을 관리하자. 아이템6: 불필요한 객체 생성을 피하라 기존 객체를 재사용해야 한다면 새로운 객체를 만들지 마라 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을때가 많습니다. 특히, 불변 객체는 언제든 재사용할 수 있습니다. String s = "test"; 이 코드는 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용합니다. 위 구조로 String 인스턴스를 생성한다면, 동일한 문자열 리터럴을 사용하는 모든 코드가 같은 객체 재사용함이 보장됩니다. String 클래스는 public final..