전체 글 (98) 썸네일형 리스트형 럭키드로우 어린이날 이벤트로 진행한 실시간 당첨 시스템을 진행했다.아이디어 제공도 했고, 모두가 좋을것 같다고 동의한 가운데 설계 및 개발까지 진행하게 되었다. 다른 주요한 프로젝트를 진행하고 있던 터라 많은 시간을 쏟지는 못했고, 설계 및 개발 과 공유는 하루정도 걸렸고 테스트 및 프론트 개발자와 협의 포함 총 2-3일정도 걸렸다. 전체적인 구성도는 아래와 같다.가장 먼저 고민한 점은 중복으로 당첨이 되면 안되고 (1유저 1당첨), 최대한 DB를 덜 썼으면 좋겠다 라는 부분이였다.Redis Queue 기반이며 상금을 미리 랜덤으로 분배하여 Queue에 넣어두고, 유저가 들어와 당첨된 즉시 pop하여 DB에 저장했다.테이블엔 유니크 키 제약을 걸어 당첨이 중복이 되지 않도록 했으며, 총 상금 한도 체크 및 실패 시.. 트랜잭션 우린 얼마나 트랜잭션에 대해 알고 쓰고있을까?어쩌면 굉장히 부끄러운 실수 일 수 있지만, 혹여나 비슷한 상황을 겪은 분이 있다면 조금이나마 도움이 되었으면 한다. 가상 모의 투자 서비스가 나갔고, 바로 다음날 데이터가 이상함을 감지했다. 500$를 주고 진행했으나 몇몇 유저에게서 500$가 넘는 금액이 되어 있는것을 발견했다. 무슨일일까?아래 코드를 비교해보자. 1번코드@Transactionalfun cancel() { // user 조회 val userId = 1L // lock 지갑 조회 val lockedWallet = testWalletRepository.findFirstByUserIdOrderByIdDesc(userId) // 트랜잭션 조회 val transact.. 샤오미밴드 8 TMI..미밴드 5?6?때 사고 여행 갈때마다.. 몇 번이나 잃어버린적이 있어서 다시는 사지 않겠노라 다짐했으나 이번에 나온 샤오미밴드8버전은 너무 이쁘고 화면도 커져서 같은 실수를 반복하게 되었다. 가격쿠팡에서 46,830원에 한국 정발 화이트색을 샀고, 1월4일 아침에 샀는데 1월4일 저녁에 받았다. (바쁘다 바빠 현대사회..) 달라진 점 버전 6의 미밴드를 써본사람으로 달라진 점을 말해보자면, 1. 스트랩이 통이 아닌 각각 분리되는 점 2. 화면이 부드러워진 점 3. Mi fitness어플만 가능해진 점이렇게 3개가 가장 크게 변경 된것 같다. 후기가장 많이 쓰는건 '운동 기록', '수면 기록'이고 그 외로 카메라 블루투스와 카톡 알림도 많이 사용중이다. ㅎㅎ그리고 디스플레이가.. 멀티 모듈 프로젝트에 maven-publish 적용하기 ❗멀티 모듈에서 maven-publish를 사용해 공통 모듈을 만드는 방법을 제공하기 위함입니다. 실무에서 멀티모듈로 작성된 서버가 있다면 아래와같이 모듈을 추가하여 진행하도록한다. 1. 프로젝트에서 모듈을 추가한다. 2. root project setting.gradle에 해당 모듈을 include 시킨다. 3. (쓸모 없는 파일, 폴더들을 깔끔하게 삭제해준다.) 4. 공통으로 사용할 dto 파일을 만들어준다. 5. pay-dto 모듈(새로 생성하는)의 build.gradle에 maven-publish 코드들을 추가한다. (https://binny.tistory.com/207?category=1092460 - Project 생성 3번과 동일한 작업이다.) - id 추가 (이때 버전들은 root와 동일하.. gradle의 Maven publish 사용기 ❗서비스 별 api를 공유할 때 dto등을 맞추게 되는데, 이때 좀 더 간편하게 공유하기 위해 사용해본 maven-publish 사용법을 공유하기 위함입니다. Repository 생성 1. 우선, 테스트를 위해 개인 레포지토리를 생성한다. 2. 토큰 발행 - 본인 프로필을 찍고, Settings에 들어가면 맨 아래쪽에 Developer settings가 있다. - Generate new token을 통해 토큰을 발행한다. - 토큰의 이름은 본인이 원하는 이름으로 지정하고, write:packages만 선택후 발행한다. (write는 publish까지 가능하고 아래 read의 경우 maven-publish는 불가하며 말 그대로 read권한만 주어진다.) - 발행된 토큰은 복사 후 어디에다가 저장해둔다. (.. 멀티모듈 프로젝트로 생성하기 ❗처음부터 멀티모듈 프로젝트를 세팅해야하는 분들을 위해 공유드립니다. 1. 깃헙에 repo 생성 후 소스트리 클론 (현재 lp-api 테스트로 진행) 2. base 프로젝트 만들기 이때, 그룹 / artifact는 신경쓰지 않아도 된다. 릴리즈 된 버전을 선택(SNAPSHOT이 아닌 버전), 스프링 웹만 선택한 후 프로젝트 생성을 한다. 3. finder에서 원격 repo에 위에 만든 베이스 프로젝트를 넣어준다. lp-api(원격 repo 폴더) ← lp(base project), 이때 lp(base project)안에 src폴더를 제외하고 모두 복사하여 lp-api(원격 repo 폴더)폴더 밑으로 넣어주고 해당 lp(base project) 폴더는 삭제한다. 4. 인텔리제이 > open에서 그레이들 파.. Cors와 Preflight 이슈 해결 ❗작업 진행하면서 만났던 에러를 공유합니다. 이슈 api 전반적으로 path 수정 및 인증 인터셉터를 추가 한 후 프론트엔지니어분께 api들을 공유드렸고, CORS 문제가 발생한다는 문의를 받게되었습니다. 첫번째. WebConfig 설정을 통해 CORS 설정을 허용할 수 있도록 수정해보자 적용한 인증 인터셉터는 제대로 등록이 되었는지, 변경한 api 자체 문제가 없는지 확인을 한 뒤(postman, swagger에서 모두 동작되는 것 확인) 특이사항이 없어 cross origin 요청을 허용해주기 위해 들어오는 도메인, 포트 모두 다시 확인 후 아래와 같이 설정했습니다. registry.addMapping("/**") .allowedOrigins( "", ...(요청이 들어오는 도메인들) ) .allow.. 이전 블로그 19년도 첫 직장 생활을 하면서 기존 학부에 쓰던 블로그에서 깃헙 블로그로 갈아탔었다. 깃헙 블로그가 좀 더 직관적이긴한데, 접근성과 관리등이 확실히 티스토리가 좋다고 판단되어 다시 돌아왔다. 이전 블로그 내용을 모두 마이그레이션하기 힘들어 주소만 남겨둘 예정이다. https://reyoobin25.github.io/ 이전 1 2 3 4 ··· 13 다음