본문 바로가기

포스트464

[IntelliJ] RoboPOJOGenerator 플러그인 설치 및 사용방법 Spring Boot에서 컨트롤러를 개발하는 경우 JSON 포맷으로 값을 받아 POJO(Plain Old Java Object) 객체에 저장하거나 Java 객체에 있는 값을 JSON 포맷으로 변환해서 응답으로 내어주는 경우가 많다. 이 때문에 값을 표현하는 JSON 포맷과 POJO 클래스 사이에 강한 연관성이 생기게 되는데, 필드의 추가, 제거, 변경이 있을 때마다 POJO 객체를 수정해야 한다. 문제는 설계된 JSON 포맷을 보고 POJO 클래스를 손으로 만드는 경우 매우 귀찮다는 것이다. 귀찮고 번거로운 단순반복 작업은 종종 휴먼 에러를 발생시키고, 소프트웨어에 버그를 만들기도 한다. 따라서 이런 작업은 되도록 자동화하는게 좋다. 인텔리제이의 플러그인 중에 RoboPOJOGenerator라는 플러그인.. 2023. 4. 19.
[IntelliJ] Indent Rainbow 플러그인 설치 및 사용법 파이썬 같은 언어는 인덴트(들여쓰기)가 프로그래밍 언어의 문법에 핵심적인 역할을 한다. 따라서 현재 작성중인 라인이 어느 레벨의 인덴트인지를 정확히 아는 것이 중요하다. 인덴트 레벨이 다르면 전혀 다른 동작을 하는 프로그램이 되어 버리기 때문이다. 인텔리제이나 파이참 같은 IDEA에서 이런 들여쓰기를 잘 관리해주긴하지만 한눈에 잘 안들어온다고 생각된다면 Indent Rainbow 플러그인을 써보자. Indent Rainbow 플러그인 설치 'Indent Rainbow' 플러그인은 인텔리제이의 Plugins 메뉴의 Marketplace에서 조회 및 설치할 수 있다. 인텔리제이 화면 상단의 IntelliJ IDEA > Settings > Plugins 화면으로 들어가자. 검색 창에 Indent Rainbow.. 2023. 4. 18.
[IntelliJ] Rainbow CSV 플러그인 설치 및 사용법 컴퓨터는 쉽게 알아볼 수 있지만 사람은 눈빠지는 포맷 중 하나가 CSV, TSV 같은 것들이다. 빽빽하게 연결되어 있는 데이터들이 콤마나 탭 문자같은 구분자(Delimiter)로 연결되어 있다. CSV, TSV 같은 포맷을 사람이 보기 좋은 형태로 표현해주는 플러그인이 있다. 여러 Rainbow 시리즈 중에 'Rainbow CSV'라는 플러그인이다. Rainbow CSV 플러그인 설치 'Rainbow CSV' 플러그인은 인텔리제이의 Plugins 메뉴의 Marketplace에서 조회 및 설치할 수 있다. 인텔리제이 화면 상단의 IntelliJ IDEA > Settings > Plugins 화면으로 들어가자. 검색 창에 Rainbow CSV를 입력하면 플러그인을 검색할 수 있다. Install 버튼을 눌러.. 2023. 4. 18.
[IntelliJ] Presentation Assistant 플러그인 설치 및 사용방법 코드를 작성하는 동안 개발자의 손은 대부분 키보드 위에 있다. 단축키가 없다면 코드를 입력하다가 IDE의 특정 기능을 실행하고 싶은 경우, 마우스로 손을 옮긴 후 마우스 포인터를 이동해 클릭을 해야한다. 별거 아닌 동작이지만 손을 움직여야하기 때문에 약간의 시간적 손실과 의식의 흐름이 방해를 받을 수 있다. 이 때문에 많은 IDE 들이 개발자들의 생산성 향상을 위해서 단축키를 제공한다. 인텔리제이도 마찬가지다. 다만 수 많은 기능과 그 기능에 매핑되어 있는 단축키들을 모두 외울 수는 없다. 이럴 때 사용하면 좋은게 'Presentation Assistant'라는 인텔리제이 플러그인이다. Presentation Assistant 플러그인은 인텔리제이의 기능이 실행될때마다 동일한 기능을 실행하기 위한 단축키.. 2023. 4. 15.
[IntelliJ] Rainbow Brackets 플러그인 설치 및 사용법 자바 언어는 코드 블럭을 구분하거나 연산자 우선순위를 조정하기 위해 괄호를 사용한다. 문제는 괄호가 굉장히 많이 사용되거나 코드 블럭이 페이지를 넘어가는 등의 상황이 오면 가독성이 매우 떨어진다는 점이다. 다음 코드를 보자. public class Main { public static void main(String[] args) { float result = (((1 + 2) / 3.0f) + 1 + (3.0f / (2 + 1))); long value = ((((((1+1)*2)+3)*4)+5)*6); System.out.println(result); System.out.println(value); } } 의도적으로 지저분한 수식을 만들어봤다. 이를 기본 IntelliJ 에디터로보면 이렇게 보인다. 이.. 2023. 4. 14.
Podman 설치 및 사용법 - Docker desktop의 대체재 맥과 윈도우에서 쉽게 도커 플랫폼을 사용할 수 있게 도와주는 Docker Desktop이 유료화된지 시간이 꽤 지났다. 개인 사용자는 여전히 제한없이 무료로 사용할 수 있지만 250명이 넘는 규모있는 회사에서 Docker Desktop을 사용할 경우 비용을 지불해야한다. (링크 : docker 유료화 공지) 다만 Docker 자체가 유료화되는 것은 아니다. Docker CLI, Docker Engine 등은 오슨소스 라이센스로 개발되고 있기 때문에 기존과 동일하게 사용할 수 있다. 다만 리눅스에서 구동되는 Docker Engine을 맥과 윈도우에서 구동시키기 위해 VM을 생성하고, Docker를 설치하는 등의 처리를 해주는 Docker Desktop만 유료화된 것이다. 따라서 업무용으로 이것저것 테스트하.. 2023. 3. 31.
[Mac] 터미널에서 ls 색상을 리눅스처럼 변경하기 리눅스 개발환경에서 작업하는 사용자가 macOS에서 터미널을 사용하면 뭔지모를 위화감이 드는 경우가 있다. 명령어 사용법은 비슷한데 출력되는 화면이 익숙하지 않은 느낌이다. 실제로 리눅스에서 ls 명령어를 실행했을 때와 맥에서 ls 명령어를 실행했을 때의 결과 화면은 차이점이 있다. ls 명령으로 출력되는 현재 디렉토리의 엔트리 리스트를 표현할 때, 리눅스와 맥의 색상이 다르다. 맥과 리눅스 환경을 동시에 사용하기 때문에 일관된 색상 설정으로 맞춰주고 싶었다. 맥과 리눅스의 ls 색상 차이 맥과 리눅스의 ls 명령어 사이에는 약간의 차이점이 있다. 리눅스는 GNU ls 명령을 사용하고, 맥은 BSD 계열의 ls 명령어를 사용한다. 동일한 이름의 명령어이지만 바이너리가 다르기 때문에 출력되는 결과물도 약간.. 2023. 3. 29.
[Git] git 저장소의 일부 디렉토리만 clone 하기 - git sparse checkout git 저장소에서 일부 디렉토리만 clone 받는 sparse checkout 기능 사용방법에 대해 알아보자. git 저장소에 여러 프로젝트 혹은 여러 디렉토리가 있을 때, 그 중 일부만 사용하고 싶은 경우가 있다. 일부 디렉토리만 필요하기 때문에 저장소 전체 대신 필요한 일부 디렉토리 혹은 일부 파일만 clone 받아서 사용할 필요가 있다. 이 경우 git이 제공하는 sparse checkout 기능을 사용하면 된다. 디렉토리 생성하고 초기화 clone 받을 디렉토리를 생성하고 git init을 실행해준다. 그리고 다운받을 원격 저장소 주소를 추가해준다. mkdir temp cd temp git init git remote add origin {remote 저장소 주소} sparse checkout 기.. 2023. 3. 23.
[Docker] Container 시간 Time Zone 설정 도커로 리눅스 컨테이너를 띄우고 그 안에서 작업을 하는 상황이었다. 이상하게 시간 관련된 작업에서 이상하게 동작하는 것이 발견되었다. 확인 결과 도커 컨테이너에는 시간(Timezone)이 UTC+0 으로 설정되어있었다. 따라서 실행하는 도커 컨테이너의 시간 정보를 한국 시간으로 맞춰줄 필요가 있었다. TZ 환경변수 가장 기본적으로 도커 컨테이너를 실행할 때, TZ 환경변수에 Asia/Seoul을 설정하면 된다. docker run -it -e TZ=Asia/Seoul centos /bin/bash 컨테이너 안쪽에서 date 명령을 실행하면 KST로 설정되어 있는걸 볼 수 있다. # date Tue Mar 21 22:54:50 KST 2023 Dockerfile 설정 컨테이너를 띄울 때 말고 이미지 자체에.. 2023. 3. 22.