developer501의 등록된 링크

키자드에 등록된 총 159개의 포스트를 확인하실 수 있습니다.

Naver Blog

fork-ts-checker-webpack-plugin 추가하여 빌드 퍼포먼스 높이기

fork-ts-checker-webpack-plugin 을 추가하여 빌드 퍼포먼스를 높일 수 있다 위와 같은 주제로 git MR이 올라와 관련 내용을 정리 하고자 한다 https://github.com/TypeStrong/fork-ts-checker-webpack-plugin#readme Fork TS Webpack Plugin 0. Webpack 이란? 모든 file을 module로 인식하며, 필요한 모든 모듈을 dependency graph에 따라 번들링 하는 도구를 말한다 - 결과물 : bundle 1. 특징 1) 타입스크립트 타입 체크 속도 향상 (별도 프로세스로 동작) 2) 프로젝트 참조나 incremental 모드와 같은 최신 타입스크립트 지원 * 프로젝트 참조 : https://www.typescriptlang.org/docs/handbook/project-references.html 타입스크립트 프로그.......

Naver Blog

[GIT] CI/CD

최근 회사 프로젝트에서 인프라 담당을 하게 되면서 관련된 내용을 공부하고 정리하는 시간을 갖고자 한다 CI/CD 의 개념 애플리케이션 개발단계를 자동화하여 보다 짧은 주기로 제공하기 위한 방법이다 애플리케이션 통합 및 테스트 단계부터 제공 및 배포에 이르는 라이프 사이클 전체에 걸쳐 지속적인 자동화와 모니터링을 제공한다 코드 통합 과정에서 개발/운영 팀에 발생할 수 있는 인테그레이션 헬(Integration Hell)을 해결 하기 위한 솔루션이다 인테그레이션 헬 (integration Hell) 개발 / 운영 조직에서 코드 통합 (Merge) 과정에서 발생하는 문제를 말한다 통합 프로세스가 갖춰지지 않은 개발환경에서는 Merge 작업에서 오랜 시간 (.......

Naver Blog

엔티티 명은 테이블명과 동일하게 하자

아래는 flyway에 작성된 app_version create script 이다 아래는 AppVersion.java 엔티티를 작성한 코드이다 위와 같이 name에는 테이블명과 동일하게 써주어야 한다

Naver Blog

1:N 연관관계 엔티티 분석 (단방향 매핑)

1:N 연관관계의 엔티티 간에는 어떻게 매핑을 해주어야 할까 1. 우선 App의 엔티티를 살펴보자 1) @Enumerated 엔티티를 사용해서 Enum type을 정의한 것 외에는 별다른게 보이진 않는다 2) 생성자를 두어 AppSimpleDTO를 통해 들어오는 파라미터 데이터를 각 필드에 set 해준다 3) change 메소드를 두어, update 시에 값 변경을 위해 setter 대신 사용한다 2. AppVersion 엔티티를 보자 1) @Getter, @Builder, @Entity, @NoArgsConstructor, @AllArgsConstructor 는 별도 롬복 포스팅에서 다룬다 2) @ManyToOne 다대1 연관관계 세팅에 대해 알아보자 우선 FetchType.Lazy를 써서, AppVersion 엔티티 호출 시, App이 항상 호출 되는 것이 아니라.......

Naver Blog

@PrePersist를 활용해서 등록/수정자 시간을 넣어보자

관리자 생성 시, Admin 엔티티를 통해 등록자/시간과 수정자/시간을 자동 세팅 되도록 해 보자 이때 중요한 건 setter를 두지 않고, 자동으로 세팅하되 java time 을 이용하여 생성하고, 추후 변경사항에 대해서는 updated만 수정하도록 한다 위 소스에서 createdBy와 created는 updatable = false를 주어 해당 컬럼은 수정이 안되도록 했다 또한 onCreate() 메소드 위에 @PrepPersist가 붙어 있는 걸 볼 수 있는데, @PrePersist : DB에 해당 테이블에 데이터를 밀어 넣을 때, 해당 연산을 동시에 같이 실행하라는 어노테이션을 말한다 즉 DB Insert 시에 Instance.now 시간을 created와 updated에 동시에 setting해서 insert하란 뜻이다 그.......

Naver Blog

Boolean과 boolean의 차이

BooleanBuilder를 이용해서 파라미터를 받아, jpaQueryFactory에서 데이터를 뽑아내는 JPA작업을 하게 됐다 아래 코드를 보자 재밌는 점은 available 파라미터가 Boolean type이란 것이다 boolean과 Boolean은 무엇이 다를까 우선 boolean은 default가 false인 primitive 자료형이다 즉, false와 true 중 하나는 무조건 갖기 때문에 null이 들어갈 수 없다 만약 위의 파라미터를 boolean available로 받았다면, if(available != null) 구문에서 이미 비교할 수 없다는 에러가 발생 하게 될 것이다 반면 Boolean은 참조형 타입이기 때문에 false, true, null이 모두 들어갈 수 있다 위의 경우는 available이 들어오지 않으면 null이 되어 sel.......

Naver Blog

@Transactional(readOnly = true)

read만 하는 경우, @Transactional(readOnly=true) 을 붙여 개발하는 것이 좋다 해당 어노테이션은 트렌젝션 내에서 데이터를 읽기만 할 건지를 설정하는 것인데, DB 중에 read와 write 락을 따로 사용하는 경우, 해당 트랜젝션 내에서 의도치 않게 데이터가 변경되는 것을 막아줄 수 있다 또한 하이버네이트를 사용하는 경우에는 FlushMode를 Manual로 변경하여 Dirty Checking을 생략 해 주거나, DB에 따라서는 DataSource의 Connection 레벨에서도 설정되어 약간의 최적화가 가능하다 현재 하이버네이트를 사용하고 있지 않아 해당사항은 없지만, 혹시나 발생할 수 있는 쓰기 오류에 대한 방지 차원에서라도 해당 어노테이션은 붙여 개발.......

Naver Blog

vue 에서 활용 가능한 에디터 3가지

1. Toast Editor https://ui.toast.com/tui-editor 2. Vue2 editor 3. TipTap editor

Naver Blog

윤년, 평년 구하기

윤년 평년 구하기 (param = 년도) 1. 윤년은 4년에 한번 발생 (year % 4 == 0) 2. 1의 ...

Naver Blog

2016년 a월 b일의 요일 맞추기 (윤년)

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b...

Naver Blog

a와 b 사이에 속한 모든 정수의 합

두 정수 a, b가 주어졌을 때, a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요....

Naver Blog

각 자리수를 큰 것부터 작은 것 순으로 정렬

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운...

Naver Blog

시저암호 (알파벳 일정거리 Shift, feat. ASCII)

문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 ...

Naver Blog

IntelliJ DataGrip 에서 DB 연결시, Listener Refuse 문제 해결방법

IntelliJ IDE에서 Database를 사용하거나, DataGrip에서 사용하고자 할 때 아래와 같이 Listener ...

Naver Blog

STS(이클립스) 디버그 모드로 톰캣 구동 시, Breakpoint 에러 해결 방법

STS 디버그 모드로 톰캣을 구동 하던 중, 아래와 같은 얼럿 메시지가 떴다 ㅇ_ㅇ... 뭔데..이거;; Unab...

Naver Blog

[IntelliJ Error] Execution failed for task ':compileJava'.

기존에 회사에서 개발했던 소스를 git에 올렸고, 집에 돌아와 pc로 git repository의 소스를 내려받아 빌드...

Naver Blog

Lombok 플러그인 설정

Spring Boot Starter 이용 시, 아래와 같이 Dependencies에 Lombok을 추가하고 Generate 로 프로젝트...

Naver Blog

사용자 커스텀 템플릿 등록하여 사용하기 (ft. Live Template)

테스트 코드 작성 시, 아래와 같이 @Test 어노테이션이나, public void~ 구문, //given~when~then 과 같은...

Naver Blog

Git flow 사용해보기

박스여우 [BoxFox] 님의 글 아래 글은 Git flow을 주제로 박스여우님께서 이해하기 쉽게 작성한 포스팅...

Naver Blog

[Git] 원격 저장소 연결 및 끊기 ( git remote remove & add)

최근에 gitlab으로 연결된 프로젝트를 import 받아 github에 shared 해봤더니 원격 저장소 (remote reposit...

Naver Blog

.gitIgnore 설정 및 적용, 잘못 올라간 github 파일 삭제방법

오늘은 버전관리에 있어서 불필요한 파일들에 대해 예외처리를 하는 작업을 했다 최근에 만든 SpringMave...

Naver Blog

web 기본 디렉토리 구조 변경

지난번 spring 기본 환경세팅을 하던 도중, 아래와 같은 이슈를 받았다 오잉; 왜 web폴더가 /src/main/weba...

Naver Blog

[Spring Framework] 스프링 프레임워크 구축부터 시작하기(예제 소스 포함) [펌]

이하 자료는 https://bestheroz.blog.me/ 블로그 님의 자료를 퍼온 자료이며, 이후 진행할 프로젝트의 기본...

Naver Blog

Spring 정적 리소스 자원 매핑 (js, css, img)

이번 글 부터는 캡처 보다는 소스코드를 직접 붙여넣어 포스팅 하겠다 뭔가, 나중에 복붙하여 쓰기 어려울...

Naver Blog

STS 4에서 Spring Legacy Project 사용하기

이전 글의 템플릿을 만드는 과정에서 STS 4를 설치 했다 그런데!! Spring Legacy Project 항목이 없...

Naver Blog

무료 라이센스) DB관리 툴 [DBeaver] 사용하기

나는 DB관리를 위해서 그동안 몇가지 프로그램을 사용해 봤다 회사에서 Oracle + PL/SQL을 3년간 ...

Naver Blog

Spring POST방식으로 전달 시, 한글깨짐 현상 해결법 (Form Submit 전송)

현재 개발 중인 Sample 프로젝트의 회원 가입 페이지에서, DB INSERT 시 회원이름 한글깨짐 현상...

Naver Blog

Gradle spotless apply 대체 plugin

Base-api Gradle spotless apply 대체 plugin 세팅법 base-api 개발 후 gitlab에 push 하면 아래와 같이 ...

Naver Blog

[Mysql] Default Timezone 설정 방법

최근 계속 해서 DB의 기본 시간을 UTC로 할거냐, KST로 할거냐 그리고 그 변환은 어떻게 하느냐에 ...

Naver Blog

Spring Boot DevTools 세팅과 사용이유

devtools 를 추가해 놓으면 console.에 restartedMain으로 시작되는 걸 볼 수 있는데, 화면단의 변경 사항...

Naver Blog

Burp Suit 환경세팅 및 사용법

Burp Suit 을 세팅하고 사용 해 보자 1. 설치 URL : https://portswigger.net/burp/communitydownload...

Naver Blog

.find 와 .some ES6 javascript

이번에 팀원의 코드리뷰를 하다가 위와 같은 changes를 발견했다 .find와 .some의 차이가 뭐길래 바꾸었을...

Naver Blog

[JavaScript] encodeURI() , encodeURIComponent() 차이점 알고 사용하기

URI 전체를 인코딩 할때 -> encodeURI() 사용 URI 파라메터를 인코딩 -> encodeURIComp...

Naver Blog

DB 튜닝 (USE_HASH)

데이터 추출 요청 JIRA가 와서 SQL을 신나게 짜서 돌렸다 (오 좋아 벌써 다짰어 이러면서..) 근데 ...

Naver Blog

[Mysql] MySQL NULL 처리 (IFNULL, CASE, COALESCE)_ft. Oracle NVL, DECODE

Oracle에서는 NVL(), NVL2(), DECODE()를 이용해서, NULL인 경우 값을 치환 할 수 있다 ...

Naver Blog

[Mysql] DATE_FORMAT()

1. DATE_FORMAT(시간 값, 원하는 포멧) - Mysql의 날짜함수, 시간함수 - 설명 : 날짜를 지정된 ...

Naver Blog

[Mysql] STR_TO_DATE()

1. STR_TO_DATE(문자열, 포멧) - Mysql DATE_FORMAT() 함수의 반대라고 생각 - 설명 :...

Naver Blog

[Mysql] UTC Time to KST Time, TimeZone을 이용한 시간변환 (CONVERT_TZ)

JAVA 탭에 "[Java8 날짜와 시간 API ①] Java8 이전, 기존 날짜 API의 문제점과 한계점&q...

Naver Blog

Log4J vs. SLF4J vs. Logback 도대체 무슨차이야?

현재 회사에서는 log4J 를 사용하여 로그를 남기고 있다 하지만 이번에 구축하는 템플릿 프로젝트에서는 l...

Naver Blog

Logback을 사용해야 하는 이유

앞선 포스팅에서 Logback에 대해 언급했었다 사실 Log4J나 Logback이나 로깅의 목적면에서는 동일한 역...

Naver Blog

logger.isDebugEnable() 체크가 필요한 이유

아래 새로운 Issues가 올라왔다 (사실 올라온지 좀 됐는데, 다른걸 하느라 좀 늦게 처리했다..) 일단 이슈...

Naver Blog

DTO와 VO에 대한 생각

사실 나의 경우 VO를 데이터 보관/수집 용도로 사용 했고, DTO 역할 또한 VO로 대체했었다 그러다보...

Naver Blog

Collections Framework (업데이트 중)

배열과 컬렉션즈 프레임워크 (Intro) 1. 컬렉션 프레임워크의 사용 이점 : 배열은 정해진 크기를 변경 할 ...

Naver Blog

JAVA Collections Framework 를 활용한 정렬방법 (Collections.sort())

- Java 정렬 방법 Java 에서의 정렬은 java.util.Collections클래스의 static 메소드인 sort()를 이용한...

Naver Blog

Collections.sort 예제 (오름차순/내림차순/역순)

1. 정렬 방법 오름차순 : Collections.sort( arrayList ); 내림차순 : Collections.sort( arrayList, ...

Naver Blog

리플렉션(Reflection) 과 동적 객체 생성 (1)

소스리뷰를 하던 중 targetType.getDeclaredConstructor().newInstance(); 구문을 통해 생성자를 호출...

Naver Blog

Stream 매칭(allMatch(), anyMatch(), noneMatch())

Stream API는 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 메소드를 제공한다 아래 ora...

Naver Blog

리플렉션(Reflection) 과 동적 객체 생성 (2)

1장 포스팅에서 잠깐 언급했던 코드리뷰 소스의 일부를 확인 해 보자 MapperUtils.toObject(item, Mine...

Naver Blog

[Java8 날짜와 시간 API ①] Java8 이전, 기존 날짜 API의 문제점과 한계점

* 아래 샘플 예제들에 대한 소스는 git 주소를 참고하세요 이번에 간단한 고객사 개발요청 건을 수정하다가...

Naver Blog

JAVA BigDecimal을 이용한 double type zero(0) 비교

회사에서 이슈 처리 내용 중 하나를 간단하게 정리하고자 한다 주요 이슈내용은 mobile로부터 value를 받아...

Naver Blog

Interceptor (Spring Framework 5.3.9)_HandlerInterceptor

1. 인터셉터 컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 ...

Naver Blog

DTO를 이용하여 파라미터 받아오는 방법 vs. URL에 파라미터를 싣어 보내고 받는 방법?

1. 정석적인 방법 받아오는 변수가 password 뿐이므로, 1개의 변수를 위해 DTO를 생성해야 하는 번거로...

Naver Blog

[JPA/QueryDSL] Native Query를 JPA+QueryDSL로 변경하기

아래와 같이 회원에 대한 리스트를 출력할 때, 로그인한 계정 권한에 따라 노출시키는 회원이 달라져야 하...

Naver Blog

[QueryDSL] 동적 쿼리를 위한BooleanBuilder, BooleanExpression의 활용

기존에 작성하던 쿼리문은 WHERE 절 밑에 여러 조건을 AND절로 작성함으로써 다수의 조건을 걸 수 ...

Naver Blog

[JPA] deleteAll vs. deleteAllInBatch vs. native query 어떤게 맞아..?

JPA에서 데이터를 일괄 삭제 할일이 있었다 이때 deleteAll과 deleteAllInBatch, native query 를 ...

Naver Blog

[이슈] Create 시에 MemberForm 객체를 생성해서 사용할까? Member Entity를 사용하는게 나을까?

create 시에 MemberForm 객체를 생성해서 파라메터로 사용했었다 그런데 기존에 있는 Member Entity를 ...

Naver Blog

Computed get 과 Watch 차이 명확히 알고 적절히 사용하기 (2)

지난 글에서 computed get과 method에 대해 비교 했다 이번에는 computed get과 watch 에 대해서 알아보고 ...

Naver Blog

Computed get 과 method 차이 명확히 알고 적절히 사용하기 (1)

SELECT BOX를 만들 때, store에 저장된 권한에 따라(일반 계정일 때) SUPER 계정을 보이지 ...

1 2