개발환경

  • MacBook Air (M1, 2020)
  • OpenJDK 8
  • Eclipse 2021-12
  • tomcat 8.5
  • MySQL Workbench 8.0.19


기간

  • 2022.3.4 ~ 2022.4.6


주제

  • 웹 백엔드 수업 중 중간 과제로 개인 프로젝트를 진행하게 되었다.
  • 회원가입/로그인/탈퇴 등 기본적인 회원관리 시스템을 가진 웹 사이트를 만드는 것이다. 주어진 기한은 한 달
  • 나는 다음 카페를 소규모로 만들어 보기로 했다. 평소 자주 이용하기도 했고 과제의 평가 기준에서 요구하는 기능들을 다 담고 있기도 했기 때문에 이번 기회에 구현해 보면 그동안 배운 것들을 활용하기에 좋을 거 같았다.
  • 평가 기준에 사이트의 디자인 구현(HTML/CSS 등 프론트엔드)은 포함되지 않기 때문에 본인이 쓰고 싶은 HTML/CSS 템플릿을 구한 뒤 회원 관리 기능을 구현하면 된다.


게시글 답글 작성 알고리즘

  • re_ref : 부모글과 그로부터 파생된 자식글들이 같은 값을 가지기 위한 필드
  • re_lev : 같은 re_ref 내에서의 들여쓰기 깊이
  • re_seq : 같은 re_ref 내에서의 순서

첫 번째 글쓰기 입력

  • 처음엔 답글이 아닌 일반 글들이 각자 고유한 re_ref 번호를 가지고 등록된다.
num title re_ref re_lev re_seq  
1 1st 1 0 1  
2 2nd 2 0 1  
3 3rd 3 0 1

1번 글에 답변 글 달기

순서1) re_ref값은 부모글 1st의 re_ref값을 사용한다.
순서2) re_seq값은 부모글 1st에서 1 증가 한 값을 사용한다.
순서3) re_lev값은 부모글 1st에서 1 증가 한 값을 사용한다.

  • 그러면 아래와 같이 글이 등록될 것이다.
num title re_ref re_lev re_seq  
1 1st 1 0 1  
2 2nd 2 0 1  
3 3rd 3 0 1  
4 1st_re1 1 1 2
  • re_seq값이 1인 글은 부모글, 1보다 크면 자식글이라는 것을 알 수 있다.

1번 글의 답변 글에 또 답변 글 달기

  • 1번 글에 답글을 달 때와 같은 순서로 작성하면 아래와 같이 등록될 것이다.
num title re_ref re_lev re_seq  
1 1st 1 0 1  
2 2nd 2 0 1  
3 3rd 3 0 1  
4 1st_re1 1 1 2  
5 1st_re1_re1 1 2 3

1번 글에 답변 글 달기

순서1) re_ref값은 부모글 1st의 re_ref값을 사용한다.
순서2) re_seq값은 부모글 1st에서 1 증가 한 값을 사용한다. 단 부모글을 제외한 값 re_ref 내에서 먼저 입력된 글은 re_seq값을 1 증가시킨다.
순서3) re_lev값은 부모글 1st에서 1 증가 한 값을 사용한다.

num title re_ref re_lev re_seq  
1 1st 1 0 1  
2 2nd 2 0 1  
3 3rd 3 0 1  
4 1st_re1 1 1 3  
5 1st_re1_re1 1 2 4  
6 1st_re2 1 1 2
  • 그러면 위와 같은 값을 가지게 된다.
  • re_ref값을 기준으로 먼저 내림차순 정렬을 한 뒤 re_ref값 내에서 2차로 re_seq값을 기준으로 오름차순 정렬을 한다.
num title re_ref re_lev re_seq  
3 3rd 3 0 1  
2 2nd 2 0 1  
1 1st 1 0 1  
6 1st_re2 1 1 2  
4 1st_re1 1 1 3  
5 1st_re1_re1 1 2 4
  • 그러면 이렇게 최신 글이 가장 위로 올라오면서 들여쓰기 레벨에 따라 작성된 글을 볼 수 있다.


마감까지

  • D-8