-problem 이번 클론코딩 프로젝트에서 회원가입 / 로그인 파트를 맡게 되었다. 여기에서 사용자의 핸드폰번호, 닉네임, 생년월일, 비밀번호를 검증해야하는 문제가 있었다. -what I tried 일단 정규식을 작성했으나, 검증이 완벽히 되지 않는 문제가 있었다. 그냥 알고있는 수준에서는 해결할 수가 없어 검색을 하기로 했다. -my answer 생년월일과 비밀번호 검증에서 새로운 것을 알게 되었다. 아래는 생년월일을 검증하기 위한 정규식이다. ^\\d{2}([0]\\d|[1][0-2])([0][1-9]|[1-2]\\d|[3][0-1])$ \\d{2}연도 두 자리는 아무거나 와도 되니까 따로 조건을 걸지 않고 숫자만 오면 상관없게 하였다! ([0]\\d|[1][0-2]) 월의 경우 앞자리가 0이면 뒤에..
-problem 키오스크 기능을 수행하는 웹 어플리케이션을 제작하던 중, 사용자가 주문한 메뉴들의 가격을 찾아서 합산하는 기능을 제작했어야 했다. 여기에서 사용자의 주문을 확인했어야 하는데, 어디까지가 하나의 주문인지 어떻게 아는지에 대한 문제가 발생했다. -what I tried 일단 jwt의 issuedAt을 사용하고자 했다. 주문을 생성할때 토큰을 생성하고 주문 생성시간과 토큰 생성시간이 같으면 같은 주문이라고 보는 것이다. 다만 아무래도 토큰 생성과 주문 생성이 동시에 일어나지 않아서 미세한 차이가 있어 아예 동일하게 처리할 수 없었다. -my answer 먼저 주문 생성시간을 찍어줄때 아래와 같이 String으로 처리하고 localDateTime 의 포맷을 yyyy/MM/dd/hh/mm과 같이 ..
먼저 차근차근 정리해보자. 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 부른다. 그리고 하나의 애플리케이션은 멀티 프로세스를 만들기도 한다. (메모장을 두 개 켜는 것을 생각해보기!) 운영체제에서는 두 가지 이상의 작업을 처리하는 멀티 태스킹을 할 수 있도록 cpu나 메모리 자원을 적당히 할당해준다. 그리고 한 프로세스 내에서 두 가지 이상의 작업을 처리하는 멀티 태스킹이 가능한 애플리케이션도 있다. (카카오톡이 문자를 보내는 것과 파일전송 기능도 가지고 있는 것 떠올리기!) 이것이 가능한 이유가 바로 멀티 스레드에 있다. 스레드는 하나의 작업을 수행하기 위한 코드라고 생각하면 이해하기 쉽다. 프로세스안에 스레드가 2개라면 2개의 코드 실행 흐름이 생긴다는 뜻이다! 위의 내용을 정리하면 아..
-problem 스프링 시큐리티의 기본적인 부분을 적용시키고 테스트를 진행하다가 위 에러를 마주침. 내용만 봤을때 내가 동일한 값을 넘기고 있다고 추측하였음. -what I tired 일단 Jpa로 조회되는 값이 2개 이상일때 해당 오류가 난다고 한다. 대충 봤을 때에는 조회가 어디서 일어나는지 찾기 어려웠다. -my answer 에러로그에서 에러가 난 부분을 보니 문제는 system.out.print 저 부분이었다. 저 부분을 지웠어야 했는데 지우지 못했다. 에러의 이유는 일단 저렇게 되면 findby~~에서 조회 결과가 하나 이상인데 (내 경우가 그랬다는 것!) 이러면 class로 받아서 담을 수 없게 된다. 쉽게 생각했을때에는 그냥 repository에서 List로 타입을 바꿔주면 되지만, 내가 짠..
@Component를 통해 자동으로 등록한 Bean 수동으로 등록한 Bean 테스트코드 결과! (일단 에러가 남 ㅎㅎ) 수동 빈이 자동 빈을 오버라이딩 해버린다. 즉, 수동 빈이 우선권을 가진다! 하지만 대다수의 경우 이렇게 빈이 겹치는 상황을 의도하지는 않을 것이다. 의도치 않은 상황에서 이렇게 빈이 오버라이딩 되는 경우 생각보다 문제가 훨씬 더 심각해 질 수 있다. (어디가 문제인지 짐작도 못할테니까!) 그렇기 때문에 최근 스프링부트에서는 이렇게 자동 빈과 수동 빈의 충돌이 일어나면 아래와 같은 에러를 띄운다. 하지만 꼭 수동 빈이 자동 빈을 오버라이딩해야 하는 상황이라면 application properties에 아래 코드를 추가하자! (스프링에서도 친절하게 알려줌) spring.main.allow..
-problem 스프링 부트를 사용해서 기초 예제를 제작하던 중, 게시글과 댓글에 좋아요 기능을 추가해야 하는 작업을 진행했어야 했다. -what I tried 처음에는 게시글, 댓글 테이블에 좋야요 갯수가 카운팅되는 칼럼을 만들어야 하나 생각했는데, 이건 너무 복잡해지고 검증도 복잡할 것 같았다. -my answer 생각해보니 나중에 총 갯수를 반환할때, 해당되는 게시글 / 댓글에 붙은 좋아요의 개수를 주면 되는 것이라고 판단했다. 이렇게 되면 훨씬 간편하다고 생각했다. sql에 count가 있으니 jpa에서도 당연히 있겠다 싶어 count를 타이핑해보니 바로 나왔다. -I learned! 뭔가 rdb라는 단어에 겁을 먹고 생각하기보다 그냥 엑셀 표를 떠올리면서 생각하니 금방 아이디어가 떠올랐다. (물..
-problem Bcrypt 해시함수를 통해 비밀번호 단방향 암호화를 공부하던 중, 입력받은 값과 DB에 저장된 값을 비교하는데 비밀번호가 일치하지 않는 오류 발생 -what I tired 처음엔 오타인가 싶어 다시 확인하였지만 오타는 아니었음. Postman도 다시 확인하였으나 문제는 없었음. 무엇이 문제였는지 생각하다가 passwordEncoder 인터페이스를 들어가 보기로 함. -my answer 인터페이스 안에 maches라는 메서드로 값의 일치여부를 확인할 수 있었음. 해시함수의 경우 단순 비교가 안되는 것 같다.. (이 부분은 다시 찾아보고 공부해봐야겠다!!) -I learned! 헷갈릴땐 설명서를 보자! 뭐든지 일단 들어가보면 친절하게 사용법과 파리미터 값이나 다른 것들도 정말 친절하게 적혀..
5주차도 끝!! 다시 한 번 배운 내용을 정리하고 남겨두도록 해야겠다. ///////////////////// 먼저 SQL이 무엇일까? 차근차근 생각해 보자! 먼저 데이터베이스를 관리하는 시스템을 DBMS라고 한다. 그리고 이 DBMS를 크게 나눠서 보면 관계형 데이터베이스와 나머지로 볼 수 있는데, 여기에서 관계형 데이터베이스는 SQL DB, 나머지는 NoSQL DB라고 부른다. 여기에서 SQL이란 관계형 데이터베이스와 상호작용하기 위한 언어로, 정리하자면 관계형 데이터베이스에서 데이터를 관리하고 처리하기 위해 설계된 언어라고 할 수 있다. ///////////////////// 그리고 더 나아가 ORM을 설명하기 전에 ORM이 어떻게 등장하였는지를 살펴보자. 객체를 DB에 저장하는 방식은 JDBC, ..
- Total
- Today
- Yesterday
- 인덱스
- 부하테스트시나리오
- Redis
- jmeter세션
- EC2
- jwt
- Redisson
- 동적크롤링
- jmeter로그인
- jmeter테스트
- 토큰
- Python
- CheckedException
- jmeter토큰
- bankersRounding
- Lock
- 항해
- jmeter시나리오
- Java
- index
- 프로그래머스
- 자바
- Spring
- hackerrank
- CorrectnessAndTheLoopInvariant
- jmeter부하테스트
- jmeter쿠키
- pessimisticlock
- 대규모더미데이터
- 스프링faker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |