[파이널프로젝트] 어려웠던 부분 모음

hanahana·2022년 11월 24일
0
post-thumbnail

파이널 프로젝트를 하면서 어려웠던 점과 그걸 어떻게 해결했는지 간단히 모아볼까 한다.

ajax로 댓글 페이징하기

ajax를 통해 댓글을 가지고 오려고하니 어떤 방식으로 페이징해야 좋을지 몰랐다.
페이징을 하려면
1. 출력되는 첫 페이지
2. 출력되는 마지막 페이지
3. 현재페이지
4. 최종 페이지
이 4개의 변수를 jsp영역으로 가지고 와서 그 값에 맞는 페이지를 출력해주고 원하는 페이지를 눌러 그 페이지에 맞는 댓글만 출력해줘야하는데
ajax는 json으로 값을 가져와야하기때문에 어떻게 하면 좋을지 생각해보았다.

고민해본 결과, 댓글 domain에 해당 4개의 변수를 추가하고 배열의 index 0번에만 해당 변수값을 넣어주기로 했다.
json으로 온 배열 0변의 변수값을 이용해 적용하니 무난하게 댓글을 사용할수 있었다.

별점 평균 실시간 반영하기

별점을 평균을 내기 위해서는 별점을 준 모든 사람의 수와 별점을 받은 수를 나누어야했다.
문제는 별점을 취소할때였는데 별점을 취소하면 사람수를 -1하고 +한 별점수를 파악해서 다시 - 해야하는 작업을 해야했다, 단순한 작업이지만 테이블값을 계속 가지고 와서 자동 계산을 해주어야 하니 실수가 많이 나왔다.
이런방식으로 계산하여 계산한값을 가지고 오려고 하니 0은 나눌수 없다는 오류가 계속 나와 값이 0이 나오면 0을 출력하라는 코드를 넣어주어 해결할 수 있었다.
ajax를 통한 실시간 반영을 해줄때에는 평균값을 실수로 반올림하게 하여 그 값에 맞는 별모양으로 바꾸게 만들었다.

책 수정 후 관리자에게 승인 받기

책을 회원이 마음대로 수정하지 못하게 하기위해 책을 수정하면 관리자의 검수하에 수정승인을 시키려고했다.
그래서 처음부터 도서 테이블에는 수정용 contents 컬럼이 있었는데...
막상 기능을 개발하려고 하니 contents뿐만이 아니라 제목이나 삽화같은것도 바꾸고싶다면....?
그렇다면 모든 컬럼에 수정용컬럼을 만들어야 할것이다.....
생각을 바꾸어 계획과는 다르지만 수정용 테이블을 만들어 관리자가 승인하면 수정용테이블의 값이 도서 테이블로 update되도록 했다..
결국 쓰이지 않는 컬럼이 하나 남게되어 아쉬움이있다.

다음화가 넘어가는 애니메이션 만들기

애니메이션을 만들었지만 스크롤이 내려간 상태에서 다음화를 누르면 애니메이션이 깔끔하게 나오지 않았다
왜냐하면 나는 애니메이션이 실행되어 다음화를 ajax를 통해 출력해서 보여준뒤 다음화로 아예 페이지가 전환되는 방식을 썼는데 다음화로 넘어기면 스크롤이 무조건 top이 되기 때문이었다
그래서 약간 꼼수로 다음화를 누르면 무조건 스크롤이 top으로 되도록 설정하여 이 문제를 해결할수 있었다.
다음화로 넘어가는것도 내가 지정한 애니메이션이 끝난 뒤 페이지가 넘어가도록 설정해주었다.

검색만들기

검색은 제목, 작가명 2가지의 값으로 되도록했는데
작가명은 작가가 스스로 자신의 프로필에서 변경할 수 있는것이어서 직관적인 검색이 불가능했다.
결국 작가명을 검색하면 member테이블에서 해당 닉네임을 검색하고 그 닉네임에 해당되는 id를 검색하는 방식으로 만들었다.

대댓글 만들기

대댓글을 불러올때는 해당 댓글id와 연결해 불러오게 했는데 댓글 번호(replyNo)와 대댓글 번호(reReplyNo)를 동시에 쓰니 도중에 변수를 틀려서 이상한 댓글이 붙여지는 오류가 계속 생겼다.
결국 하나씩 차분히 확인해 알맞은 변수를 넣어 해결했다, 이런일이 생기지 않게 변수이름을 잘 지정해두는게 좋을것 같다.

SummerNote에 이미지 넣기

summernote에디터에 이미지를 넣으려면 ajax가 필요한데
summernote에서 제공하는 jquery로는 ajax를 사용할수 없었다.
이건 큰 문제는 아니었다, summernote에서 제공하는 jquery를 최신으로 바꿔 해결할 수 있었다.

미니게임에 스케쥴 강제 진행 막기

게임에서 스케쥴을 진행하다보면 내가 정한스케쥴이 2번 반복되는 이상한 오류가 있었다.
대체 이 오류가 왜 생기는지 알수가 없었는데, 정말 단순한 원인이었다.
일부러 휴식이 있으면 background이미지를 비워놨는데 이미지를 비우면 자동으로 새로고침이 되는것이다..
이미지를 채워주는 것으로 해결했지만, 이걸 막을만한 적절한 변수를 처리했다면 이런문제가 일어나지 않았을것이다, 좀더 세심해야 겠다는 생각이 들었다.

profile
hello world

0개의 댓글