728x90
반응형

전체 글 59

CleanCode - 깨끗한 코드

클린코드에서는 깨끗한 코드를 작성하기 위해서는 나쁜 코드를 작성해서는 안 된다고 설명하고 있다. 프로그래머라면 누구나 나쁜 코드로 고생한 경험이 있을 것이다. 그렇다면 어째서 나쁜 코드를 작성한 것일까. 제대로 짤 시간이 없다고 생각해서, 코드를 다듬느라 시간을 보냈다가 상사에게 욕 먹을까봐, 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고 .. 등등 모두가 겪어본 상황이다. 우리는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙을..

JUnitParamsRunner 매개변수를 이용하여 Junit 테스트

매개변수를 이용하여 Junit 테스트하기, 여러 경우의 수를 간단하게 테스트 가능하게 해준다. 1. build.gradle dependency 추가 implementation 'pl.pragmatists:JUnitParams:1.1.1' maven의 경우 https://github.com/Pragmatists/JUnitParams 참고 2. 테스트 클래스에 @RunWith 어노테이션 추가 @RunWith(JUnitParamsRunner.class) 3. @Parameters 어노테이션에 파라미터 넣어주기 @Parameters({ "0, 0, true", "100, 0, false", "0, 100, false" }) JUnitParamsRunner 적용 전 테스트 @Test public void test..

JAVA 2022.12.29

[Ubuntu] docker 및 docker-compose 설치

도커(docker) - 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트 ubuntu 접속 ssh -i [my-key].pem ubuntu@[퍼블릭IPv4주소] 1. 패키지 리스트 최신으로 업데이트 sudo apt update 2. 도커 다운로드를 위해 필요한 https 관련 패키지 설치 sudo apt install apt-transport-https ca-certificates curl software-properties-common - curl, apt-transport-https, ca-certificates, software-properties-common 3. 도커 레포지토리 접근을 위한 GPG Key 설정 curl -fsSL https:..

Linux/docker 2022.11.22

[Linux] 환경변수 PATH 추가하기

☄️ PATH 설정 이유 Linux 쉘에 명령을 입력하면 해당 이름의 프로그램이 있는지 확인하기 위해 모든 디렉토리를 검색하지는 않고 지정한 항목만 찾는다. 이때 $PATH 라는 환경 변수를 이용해 쉘이 어디를 볼지 경로를 확인한다. 즉, PATH에 프로그램 실행 경로를 추가해주면, 명령어 실행 시 경로를 따로 입력하지 않아도 PATH 환경변수에 있는 디렉토리에서 실행파일을 찾아 실행해 준다. 🏓 printenv 명령어로 현재 적용된 환경변수 확인 ubuntu@ip-172-31-42-70:~$ printenv SHELL=/bin/bash PWD=/home/ubuntu LOGNAME=ubuntu XDG_SESSION_TYPE=tty MOTD_SHOWN=pam HOME=/home/ubuntu LANG=C.U..

Linux 2022.11.19

[AWS] 클라우드 서비스 구축 - AWS EC2 설정

AWS는 1년간 무료로 다양한 서비스를 이용할 수 있도록 지원해 줍니다. 그중 EC2를 이용하여 리눅스 서버를 구축해 보도록 하겠습니다. - EC2 서버는 1대까지 무료로 이용이 가능합니다. 2대 이상 세팅 시 과금이 발생됩니다. 1. 상단 오른쪽에 리전이 서울로 설정되어 있는지 확인합니다. - 다른 지역으로 되어있다면 서울로 변경해줍니다. 2. 검색기능을 통해 EC2 검색 후 인스턴스 시작 클릭 3. 설치할 운영체제를 선택 및 키페어 설정 후 인스턴스 시작 - 키페어는 개인 피씨에서 접속 시 사용됩니다. 생성된 키 파일은 기억할 수 있는 폴더에 보관해줍니다. 인스턴스가 실행 중 상태로 생성된 것을 확인하실 수 있습니다. 여기까지 진행하면 EC2 서버가 생성이 완료되었습니다. 다음으로는 고정 IP(탄력적..

AWS 2022.11.18

[JAVA 8] 날짜/시간 표현 (Instant, ZonedDateTime, LocalDateTime, Period)

자바 8이전의 날짜와 시간 정보는 Date, Calendar, SimpleDateFormatter 클래스를 이용왔지만, 이러한 기존 날짜를 표현하는 라이브러리들은 다양한 문제를 가져왔다. 기존 Date, Calendar 등 날짜/시간 표현식의 문제점 - 변경이 가능하다. : 날짜/시간 유형은 변경 불가능한 유형으로 유용하게 모델링 되는 자연 값이다. Date와 같은 기존 클래스는 mutable 하기 때문에 thread safe 하지 않아 멀티 쓰레드 환경에서 안전하게 사용하기 어렵다. - 클래스의 이름이 명확하지 않다. : Date인데 시간까지 설정이 가능하다는 것이 프로그램을 모호하게 만든다. - 월을 표현할 때 +1을 해주어야한다. : type safe 하지 않으며, 버그 발생의 여지가 있다. 그 외..

JAVA/Modern JAVA 2022.11.16

[JavaScript] 바닐라 자바스크립트 페이징 처리

게시판 부트스트랩 https://colorlib.com/wp/template/table-02/ 페이징 부트스트랩 https://getbootstrap.kr/docs/5.0/components/pagination/ paging.jsp zhfvkq table no. title date paging.js const log = console.log; let video_list = [ {"TITLE" : "[디자인 패턴] 자바의 싱글톤 패턴 (static)", "WRITE_DATE" : "2022.11.09"} ,{"TITLE" : "[Spring Security] GET 로그아웃 처리", "WRITE_DATE" : "2022.11.10"} ,{"TITLE" : "[JAVA 8] 분할 가능한 Itortater인 ..

[JPA ERROR] entity 클래스에 @Data 사용 시 java.lang.StackOverflowError 발생 오류

원인 - @Data 어노테이션 안에 있는 @EqualsAndHashCode 어노테이션이 연관관계 매핑 과정에서 무한 루프로 인해 스택오버플로우를 발생시켰다. - @EqualsAndHashCode 어노테이션에서 모든 필드를 기반으로 두 객체와 내용을 비교하는데, OneToMany와 같이 양방향 의존관계를 설정하면 hashCode가 중복되어 무한으로 hashCode 함수가 호출되어 상호 참조로 인한 스택오버플로우가 발생한다. 해결 - 엔티티 클래스에 @Data 사용을 자제하고 필요 어노테이션을 따로 설정하면 된다. - @EqualsAndHashCode(of = "id")로 아이디 정도만 걸어주는 게 좋을 거 같다.. Reference https://projectlombok.org/features/Data h..

JAVA/JPA 2022.11.05
728x90
반응형