본문 바로가기

코딩코딩81

Oh !! Stop using @Builder라는 글을 읽고... 글 요약 Lombok이나 Ide 덕분에 getter setter같은 보일러플레이트 코드가 대폭 감소 근데 우리가 Lombok의 @Builder를 꼭 써야해? -> No, 안티패턴으로 쓰일 때도 많음 예시(롬복으로 만든 빌더는 아래와 관련된 설정을 해줄 수 없다) 빌더는 setter가 있으면 안돼 == immutable해야돼 Optional이 있으면 안돼. 만약 멤버 변수가 mandatory가 아니라면 contructor가 default값을 제공해주어야.. 대안 그런 부분에 있어서 롬복의 @Builder는 좋은 대안이 아니지. 라고 하면서 2가지 대안을 제시한다. 예제코드들은 본문을 참고해주세요 ㅎㅎ 대안 1 - Builder 생성자에서 mandatory값들을 지정하게 한다. 장 : mandatory값들에.. 2023. 4. 1.
[docker] invalid reference format. See 'docker run --help'. 에러 문제 원인 문자열 파싱에서 오류가 나는 것이다. 나의 경우에는 "-"로 인해 발생했다. 해결방법 참... 그냥 -를 지우고 다시 써주시면 됩니다.. 만약 그래도 되지 않는 다면, 의심가는 문자열들을 다 다시 써주세요. (+ 위 커맨드에서 옵션 줄 때 -name 말고 --name이 맞는데 수정이 귀찮아서 그냥 올렸습니다. 2023. 2. 19.
데이터베이스에 중복 생성이 되지 않게 하는 방법은? 문제 상황 기술 면접 중, 동시성 문제와 관련해서 내가 짠 로직으로는 아이디가 중복 생성이 가능해보인다 라는 피드백을 받았다. 코드를 작성할 때는 몰랐지만, 막상 면접에서 보니 그럴만 하다는 생각이 들었다. (해당 코드는 맨 아래에 첨부하겠습니다) 그래서 이걸 어떻게 하면 중복 생성을 막을 수 있을까 여쭤보셨고 난 다음과 같이 말씀드렸다. 음~ 테이블에서 계정명을 기준으로 SELECT하는 부분부터 생성하는 부분까지 하나의 트랜잭션으로 묶어서 관리하면 될 것 같습니다! ㅎㅎ 그런데 SELECT하는 쿼리는 LOCK이 안 걸리니, PK같은 거로 설정하면 어떨까 말씀해주셨다. 그 당시에는 ㅇㅈ. 하고 넘어갔지만 곰곰히 생각해보니 "보통 VARCHAR로 PK를 하나? UNIQUE가 낫지 않나?" 라는 의문이 들었.. 2022. 9. 20.
supertest에서 multipart/form-data로 파일 post하는 법, timeout 에러 해결하기 describe('/api/card에서는 ', () => { /* 명함 생성 테스트 */ test( 'POST /create 성공 시 201', done => { request(app) .post('/api/card/create') .set('Content-Type', 'multipart/form-data') .attach('image', './tests/dummy.png') .field('user_id', '9999') .field('nickname', '테스트닉네임') .expect(201) .end(() => { done(); }); }, TIMELIMIT, ); 위와 같이 헤더에서 Content-Type을 명시하고, 첨부파일-attach, 일반 텍스트-field로 form의 내용을 채울 수 있다... 2022. 7. 24.