전체 글

전체 글

    [macOS] sdkman 을 활용한 Java 버전 관리하기

    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 [언어..

    [Kotlin] Collections의 Iterable과 Sequences 차이점

    들어가기 전에 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] personal access token을 이용해 private repository git clone 하는 법

    배경 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을 생성해야 합니다. 추가적으로, 생성된 토큰은 다시 볼 수..

    [ORACLE] DataGrip에서 프로시저 수행하기

    DataGrip에서 프로시저 수행하기 DataGrip에서 프로시저를 수행하기 위해서는 EXEC 프로시저명();이 제대로 작동하지 않습니다. EXEC는 SQL 또는 PL/SQL의 고유 기능이 아닌, SQL *Plus의 기능이기 때문입니다. 따라서, 아래와 같이 프로시저를 실행해야 합니다. 먼저, 실행하고자 하는 프로시저를 마우스 우클릭한 후 Run Procedure...을 클릭합니다. 프로시저 내에 넣어야 하는 파라미터가 존재한다면 해당 파라미터를 수정한 후 OK를 눌러 수행합니다. 참고 자료 stackoverflow - How to execute PL/SQL procedures from DataGrip

    [effective JAVA] 아이템6: 불필요한 객체 생성을 피하라

    객체를 만들어야 할때와 만들지 말아야 할 때를 구분하자. 올바른 객체 생성 방법과 불필요한 생성을 피하자. 객체가 제때 파괴됨을 보장하고, 파괴 전 수행해야 할 정리 작업을 관리하자. 아이템6: 불필요한 객체 생성을 피하라 기존 객체를 재사용해야 한다면 새로운 객체를 만들지 마라 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을때가 많습니다. 특히, 불변 객체는 언제든 재사용할 수 있습니다. String s = "test"; 이 코드는 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용합니다. 위 구조로 String 인스턴스를 생성한다면, 동일한 문자열 리터럴을 사용하는 모든 코드가 같은 객체 재사용함이 보장됩니다. String 클래스는 public final..

    [effective JAVA] 아이템1: 생성자 대신 정적 팩토리 메소드를 고려하라

    객체를 만들어야 할때와 만들지 말아야 할 때를 구분하자. 올바른 객체 생성 방법과 불필요한 생성을 피하자. 객체가 제때 파괴됨을 보장하고, 파괴 전 수행해야 할 정리 작업을 관리하자. 아이템1: 생성자 대신 정적 팩토리 메소드를 고려하라 특정 클래스의 인스턴스를 얻는 방법 중 가장 먼저 떠오르는 건 public 생성자을 이용한 방법일 것입니다. 하지만, 모든 개발자들은 정적 팩토리 메소드(static factory method)를 통해 인스턴스를 얻는 방법 역시 알고 있어야 합니다. 정적 팩토리 메소드를 통해 인스턴스를 제공하는 방식에는 장단점이 존재합니다. 정적 팩토리 메소드 장점 1. 이름을 가질 수 있다. 정적 팩토리 메소드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사가 가능합니다. 특정 자..

    [IntelliJ] JAVA Usages 표시하는 법

    IntelliJ JAVA Usages 보이는 방법 IntelliJ에서 메소드를 리팩토링할 때에 메소드가 어디어디에서 사용하는지 확인이 필요합니다. 이때, 메소드를 클릭해서 확인해볼 수도 있지만, IntelliJ 설정을 통해 좀 더 쉽게 몇 군데에서 해당 메소드를 사용하는지 체크할 수 있습니다. 이번 포스팅에서는 Usages 표시하는 방법에 대해 알아보겠습니다. 먼저, IntelliJ IDEA의 Preferences를 클릭하여 설정창에 들어갑니다. 설정 내용 중 Editor > Inlay Hints > Java를 클릭하면 Code vision 항목에 대한 설정을 할 수 있으며, 여기서 Usages 사용 여부를 체크해주면 됩니다. Inheritors에 대해서도 보고 싶다면 아래 그림처럼 Inheritors ..

    [Pattern] Template Method Pattern 구현하기

    들어가기 전에 프로젝트를 진행하면서, 가독성 있게 코드를 작성하기 위해 메소드를 구성하다보니, 각각 다른 API에 대해 비슷한 형태의 로직이 중복적으로 발생하였습니다. 이 로직 중에는 공통 코드(예: 객체 만드는 코드)가 존재하기 때문에 중복을 제거하고, 추후 유지보수가 편할 수 있도록 Template Method Pattern을 적용하고자 합니다. 이번 포스팅에서는 소스코드 리팩토링 시 사용할 Template Method Pattern에 대해 알아보도록 하겠습니다. Template Method Pattern 템플릿 메소드 패턴은 알고리즘 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래..