개발공부(173)
-
[SQL] 특정 조건의 sum을 select에 포함하고 싶을 때
특정 조건의 sum을 select에 포함하고 싶을 때 select w.*, sum(case when h.type in ('MEMBER_10', 'MEMBER_20') then amount end + case when h.type in ('MEMBER_10', 'MEMBER_20') then tax end) total from Wallet w left join Member m on w.memberId = m.id left join Wallet h on h.walletId = w.id where m.type='MEMBER_ADMIN' group by w.id; 이런 식으로 case when을 붙여서 사용할 수 있습니다. 참고자료: sta..
2021.10.07 -
[Vue.js] CORS Preflight OPTIONS 메서드
CORS Preflight OPTIONS 메서드 Spring boot Interceptor에서 요청 header에 담긴 토큰 검증하는 로직을 추가했습니다. 그런데 정상 토큰이 넘어와도 CORS 에러가 발생했습니다. 처음엔 웹에서 토큰을 헤더에 잘 못 넘긴것으로 판단하고 Vue 코드를 보았는데 F12 개발자 도구로 보면 headers에 토큰이 잘 담긴 걸 확인했습니다. 문제는 서버 Interceptor handler에서 HttpServletRequest를 받을 때 header에 토큰이 넘어오지 않는다는 것입니다. 찾아본 결과 Preflight OPTIONS 메서드가 넘어올 때 headers에 토큰이 담아오지 않기 때문에 당연히 토큰 유효성 검증을 통과못하는 거라고 합니다. 그래서 Http 요청 메서드가 O..
2021.10.06 -
[Vue.js] ant vue modal 등록하기
ant vue modal 등록하기 프로젝트에서 Vue, Spring boot로 이루어진 관리자용 웹을 맡고 있습니다. 이번엔 모달로 회원에 관련된 간단한 정보를 등록해 리스트로 볼 수 있는 기능이 필요해서 ant vue 공식문서를 참고해 구현했습니다. 아이템 등록 취소 생성하기 아이템 이름 모달 팝업 버튼 showItemCreateModal 메서드와 template slot footer로 구성된 HTML 코드입니다. 모달 내에서 회원 아이템 정보인 이름을 받아 서버에 저장하는 목적으로 기능을 구현했습니다. vue 코드는 메인 컴포넌트에 모달 팝업 여부를 boolean 타입으로 지정해줄 수 있는 visible, 모달이 닫힐때까지 시간을 정해줄 수 있는 setTimeout 메서드에 사용될 boolean 타입..
2021.10.06 -
[Github] Github image 업로드 방식
Github image 업로드 방식 JPA 스터디 때 markdown 형식으로 챕터를 정리해서 Github repository에 커밋하는 방식으로 했었는데 Github Readme 파일이나 issue 와 같은 마크다운 파일에서 이미지 드롭할 때 생성되는 링크로 이미지를 삽입하는 방법이 특이했습니다. 왜냐하면 물리적 저장공간이 없는데도 어디서든 link로 접속하면 이미지에 접근할 수 있기 때문입니다. 어렴풋하게 Github이 가진 서버 어딘가에 저장되겠거니 했는데 정말로 Github의 소유하에 관리되는 것 같다는 것을 stackflow를 통해 확인했습니다. 따라서 이미지 주소를 삭제하려면 Github support에 직접 연락을 취해야합니다. 그리고 Github이 Amazon처럼 스토리지 장사를 하지 않는..
2021.10.02 -
[Jira] Jira 스크럼 시작하기
Jira 스크럼 시작하기 회사에서 사용중인 Jira를 개인 프로젝트에 사용해봤습니다. 사용자는 저 혼자지만 템플릿 구성부터 사용법을 익혀두면 팀 플젝스터디나 회사에서 Jira 관리 역할을 맡았을 때 유용하리라 생각합니다. 백로그와 스프린트를 사용하기 위해 스크럼 템플릿으로 시작했습니다. 프로젝트에 로드맵(에픽), 백로그, 보드(스프린트)가 생깁니다. 화면은 보드(스프린트)화면입니다. 새로운 이슈를 생성하려면 현재 로드맵의 에픽에서 생성해줍니다. 에픽은 프로젝트를 큰 단위로 쪼갠 하위 프로젝트로 사용하고 있습니다. 로드맵은 스프린트 단위로 이슈들을 간트차트 형식으로 볼 수 있습니다. 리팩토링 JPA 설계 작업은 리팩토링 JPA 스프린트에 속하고 스프린트 기간은 10/2~10/16 이란 것을 확인할 수 있습..
2021.10.02 -
[Vue.js] Pagination
Pagination Pagination의 정의 JPA Pagination 동작원리 Paging은 결과 데이터를 통째로 리턴해주지 않고 Spring에서 페이지 사이즈와 시작 페이지에 상응하는 데이터를 넘겨주는 리턴처리 방식을 말합니다. paging을 사용하려면 PagingAndSortingRepository가 필요하지만 JpaRepository가 이미 상속하고 있기 때문에 JpaRepository를 사용하신다면 별도로 상속해주지 않아도 됩니다. PagingAndSortingRepository는 Pageable을 파라미터에 담을 수 있는 메서드를 제공해줍니다. public Page findAll(Pageable pageable); 위 코드와 같이 paging을 위해서 리턴타입을 Page로 설정해주어야 합니다..
2021.10.02