전체 글 66

QueryDsl에서 서브쿼리 사용하기

최근에 비슷한 유형의 일들만 하다보니 글을 쓸만한 주제가 없었는데, 마침 지금 개발하고있는 부분에서 QueryDsl의 서브쿼리를 사용할일이 생겨서 개발하면서 알게된 점들을 간략하게나마 정리해본다. 먼저 QueryDsl에서 서브쿼리는 인라인뷰(from절 서브쿼리)를 제외하고는 사용할 수 있도록 지원하고 있으며 개인적인 생각으로 from절 서브쿼리는 대부분의 경우에 join을 통해 해결할 수 있다고 생각하기 때문에 지원하지 않는다고해서 문제가 되지는 않는다고 생각한다. QueryDsl의 의존성은 다음과 같이 추가해주면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 com.querydsl querydsl-apt ${querydsl.version} provided com.querydsl querydsl..

SPRING FRAMEWORK 2021.09.13

vue js event가 발생한 객체 value값 가져오기

vue js를 이용하여 화면단을 개발하던 도중 keyup 이벤트를 이용하여 필터하는 기능을 구현해야 했는데, 이 기능을 서버단에서 처리할지 클라이언트단에서 처리할지 고민하다가 결국 클라이언트단에서 처리하기로 결정하고(필터되는 부분이 복잡하고 자원이 많이들었다면 서버단에서 처리했을 것 같긴하다.) 코드작성을 시작헀는데, 처음에는 v-model과 v-on:keyup 이벤트를 이용해서 다음과 같이 작성했었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 {{item}} (function() { let vm = new Vue({ el: '#vi..

JAVASCRIPT 2021.07.28

Java 실수형 자료 계산하기

백준문제들을 풀다보면, 실수로 결과 값이 나오고 특정 소수점자리에서 반올림하는 문제들이 종종 있는데, 회사에서 개발을 할 때는 안정적인 BigDecimal 자료형을 이용해서 계산했는데(보통 회사에서 무언가를 계산하는 경우에는 정확한 값이 필요하기때문에 필수적으로 BigDecimal을 이용해야함) BigDecimal을 이용하면 속도가 느리다는 소리를 들은 것 같아서 알고리즘 문제를 풀때는 Double이나 Float을 이용하게 된다. (찾아보니 BigDecimal은 함수를 이용하여 계산하기 때문에 더 느리다고한다. / Number클래스를 상속받은 자식 클래스니까..) 여튼 문제에서는 결과 값을 소수점 셋째자리에서 반올림한 결과를 출력하라 였는데, 나는 떠올랐던 생각이 Math.round를 이용하는 것 이였기..

JAVA 2021.06.08

Java를 처음부터 다시 살펴본 후기

한 달 전 인프런에 Java 인강이 무료로 풀렸길래, 이 기회에 처음부터 다시 보는 것도 괜찮을 것 같아서 처음부터 다시 살펴보았는데, 처음 자바를 배울때에는 생각하지 제대로 이해하지 못했던 개념들(상속, 인터페이스, 추상메서드)를 이번 기회에 이해할 수 있게되었다. 강의를 듣다보니 실무를 하면서 어떻게하면 효율적이고, 객체지향적으로 짤 수 있을까라는 고민을 할 수 있게되는 기회였던 것 같다. 강의 내용이 짧아서 조금 부족한 부분들은 구글을 통해 검색하거나, API문서를 보면서 학습했는데 이 부분도 도움이 되었던 것 같다. 실제로 Java를 사용하여 개발을 하고 있어도 Java인강을 다시 들어보는 것도 좋은 것 같다. 아래는 이번에 Java 인강을 들으면서 정리했던 내용을 기록했던 github주소이다. ..

JAVA 2021.05.21

javascript Object 자료형의 값을 비교하는 방법

최근 Front-end 단에서 사용자가 데이터를 변경한 뒤 화면을 이동하거나 종료할 때 저장여부에 대한 알림을 띄워주는 기능을 개발해야 했는데, 그 기능중 이전 데이터 Object와 변경된 데이터 Object를 어떻게 비교했는지에 대해서 정리해보려고 한다.(Vue.js에서는 이런기능을 따로 구현할 필요는 없는것으로 알고있다.) 사실 별다른 내용은 없고, Object를 비교하는 내용만 정리할거라 바로 코드로 정리한다, 코드는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 function compareData() { let object = {name : 'kim', age : 32, gender : 'M'}; let object2 = {name : 'park', age : 20, gender : 'M'..

JAVASCRIPT 2021.05.07

Vue js에서 @click과 @change를 사용할 때 주의점

view단 작업을 하던도중 radio버튼을 클릭했을 때 값이 변경된 후 다음로직이 수행되는 부분을 구현해야 했는데, 처음에는 @click(v-on:click)이벤트를 이용해서 작업하다보니 내 생각과는 다르게 작동했다. 의도했던것은 @click가 눌렸을 때 해당 태그의 값이 변경되고, function이 실행될 것 같았는데, 막상 실행해보니 click이벤트가 발생한 뒤 값이 변경되었는데, 이 부분을 코드로 보면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 // 값이 변경된 후 함수가 실행되게 하고싶으면 @change를 사용... //스크립트 최대한 간략화함... let vm = new Vue({ el..

JAVASCRIPT 2021.04.21

[Jquery ]를 이용해서 열에있는 모든 라디오버튼 일괄체크 구현

이번에 표같은 구조로 되어있는 화면에서 표내의 열의 모든 라디오버튼을 일괄선택 해주는 기능을 구현해야했었는데, 내가 구현했던 방법을 기록하고, 비슷한 기능을 구현하는 사람이 있을까 해서 기록해본다. 대략 화면 UI는 다음과 같다. 설명 [버튼] : 전체 예 [버튼] : 전체 아니오 1 라디오버튼(O) 라디오버튼(X) 2 라디오버튼(O) 라디오버튼(X) 3 라디오버튼(O) 라디오버튼(X) 4 라디오버튼(O) 라디오버튼(X) 카카오 오븐이나, 파워포인트 등 툴로 UI를 그릴수도 있지만 귀찮아서 그냥 블로그내의 표로 대체.. 위 UI에서 필요한 기능은 헤더부 상단 버튼을 누르면 아래 모든열(세로)의 라디오버튼이 예또는 아니오로 선택되어야 하고, 각 행(가로)의 라디오버튼 태그들의 name은 같은 상황이였다. ..

JAVASCRIPT 2021.04.09

IntelliJ(인텔리제이) & 이클립스 유용한 단축키

지금까지 인텔리제이를 계속 사용해오고 있지만, 인텔리제이에 대한 강의나 설명같은건 듣지 않고 대략적으로 아는기능만 사용했었는데 최근에 인프런에서 인텔리제이 입문 가이드 인터넷강의 영상을 구매해서 보게되어 알게된 단축키들을 정리해보려고 한다. 일단 나는 인텔리제이 기본 설정키를 사용하는게 아닌 이클립스 버전으로 변경해서 사용하는데 그 이유는 보통 팀단위로 개발을 하게되는데, 사용하는 IDE가 다를경우 생길 수 있는 문제들 떄문이다(라이브러리 import나 환경설정, 코딩 인벤션 등) 현 회사에서는 인텔리제이를 사용해도 문제가 없어서 사용하고 있지만, 다른 회사에서는 문제가 있을수도 있기때문에 이클립스 단축키에도 익숙해지기 위해 이클립스 단축키로 사용하고 있다. * 설치의 경우 직접설치하는 것 보다 Inte..

OTHERS 2021.04.01

JAVA의 Optional 정리 (Java 8 기준)

오늘은 Java의 Optional에 대해서 정리해보려고 한다. Optional class는 Java 8 부터 도입된 클래스로 공식 API 설명에 따르면 "null이 아닌 값을 포함하거나 포함하지 않을 수있는 컨테이너 객체" 라고 한다. 마이바티스나 아이바티스를 쓴다거나 Java 8버전 이하로 개발을 한다면 익숙해지기 어려운 개념인 것 같은데, 나의 경우는 회사에서 JPA를 사용하고 있고, Spring JPA의 JpaRepository의 findOne, findById.. 등의 결과 값이 Optional로 돌아오기 때문에 익숙해질 수 밖에없다. 여기서는 내가 주로 사용하는 Optional의 메소드만 코드로 정리 할 예정이고, 이외의 메소드는 아래표나 공식 문서를 참조하는 것이 좋을 것 같다. (아래 표도 ..

JAVA 2021.03.22

Eescape된 HTML 태그를 JAVA에서 Unescape

개발을 하던 도중 html태그와 text내용이 섞여있는 데이터를 DB저장 한 뒤 뿌려줄 일이 있었는데, 프론트단에서 보낸 html태그 들이 서비스단을 통과하면서 html 엔티티로 변경되어 저장되는 문제가 발생했다. 본래 서비스단에서 html 엔티티로 변경되는 이유는 보안적인 이슈(XSS) 때문에 변경되게 설정이 잡혀있는 것으로 알고 있었는데, 일단 기능 구현하려는 페이지는 내부적으로 사용하는 페이지였기 때문에 그냥 html 엔티티로 escape 되는 부분을 바꿔줘야 했다. 일단 고민해본 방법으로는 html 엔티티로 바뀌어져 들어오는 부분을 정규식을 이용해서 replace하는 방법이 있었는데, 정규식의 경우 눈에 잘 안들어 오기도하고 모든 html 엔티티에 대한 정규식을 작성하는 것에도 어려움이 있어, 찾..

JAVA 2021.03.03