🦮 스스로를 위한 프로젝트 일지 가이드
1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가
2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가
3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가
✅ 글번호 관리
수강 후기 게시판 목록 조회 구현 시 글번호를 원래는 후기 테이블에서 시퀀스로 설정하던 '리뷰 번호' 컬럼을 이용했다.
이후 DB 컬럼을 그대로 반영하는 방식보다 jsp 파일에서 자체적으로 번호를 만들어 반영했다.
1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가
시퀀스로 생성되는 컬럼의 문제는 중간 글, 예를 들어 1번과 3번 사이 2번 글이 삭제된다면 기존 3번이 2번으로 자동 정렬되지 않고 그대로 3번으로 남아있다는 것이다.
만약 중간 글들이 여러 개 삭제된다면 글 번호는 그야말로 개판이 된다.
이렇게 글 번호가 꼬이는 문제를 해결하기 위해 자체적으로 번호를 반영하기로 했다.
2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가
가장 쉬운 방법은 jsp 파일에서 반복문을 사용하여 DB 내용을 반영하고 있으니 그 부분에 어떤 설정을 더해 번호를 반복적으로 생성하는 것이다.
문제는 이 '어떤 설정'이 무엇인지 잘 몰라 jsp 반복문 속성에 대해 구글링을 했다.
varStatus라고 반복문 속성이 있는데 여기서 status.index 등등을 활용하면 자체적인 번호를 만들어낼 수 있다.
그러면 이제 문제는 '어떤 식으로 최신 글부터 1씩 줄어드는 번호를 만들어낼 것인가'이다.
여기서 페이징에 사용한 데이터를 활용했다.
페이징 VO에서 받는 총 페이지, 현재 페이지, 페이지당 글 갯수 등의 데이터와 반복문 속성을 함께 활용해 다음과 같이 자체적인 식을 만들어냈다.
<c:forEach items="${rlist}" var="rvo" varStatus="status">
<c:set var="desc" value="${(total-(page.page-1)*page.perPageNum)-status.index}"/>
식 만드는 과정이 방탈출 문제 푸는 것 같고 재밌었다🥰
✅ 아이디 마스킹
처음에는 수강 후기 조회 시 작성자의 아이디를 모두 표시했다.
후에 아이디 첫 글자만 표시하고 나머지는 마스킹 처리를 하는 것으로 수정했다.
1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가
아이디는 중요한 정보인 만큼 모든 사용자에게 노출하는 것은 지양해야 한다는 생각이 들어 마스킹 처리를 하기로 했다.
2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가
js에서 DOM이 로드되면 아이디를 마스킹하는 함수를 작성했다.
사실 회원정보 수정 때도 마스킹 처리를 했어서 기존 코드를 재사용할 수 있었다.
그런 점에서 재사용성이 높은 코드가 좋은 코드라는 점을 실감했다.
✅ 페이징
수강 후기 5개마다 하나의 페이지로 묶는 페이징 기능을 구현했다.
1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가
페이지가 나눠지면 사용자 입장에서 가독성이 향상되고 특정 글을 찾을 때 시간이 감소한다.
2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가
현재 페이지, 다음 페이지, 페이지당 글 갯수 이런 걸 식으로 구현하는 과정이 어렵다.
하지만 그것만 하면 model로 넘겨 view에 조건에 따라 반영만 하면 되기 때문에 어려우면서도 할 만한(?) 그런 기능이었다.