티스토리 뷰

생활/주절주절

게시판 prev/next 버튼

Jaeyeon Baek 2011. 11. 13. 18:48

게시판의 next 페이지와 prev 페이지 여부 확인...


방화벽 장비의 Log Data를 보여주는 게시판을 만들면서(사실 난 내부 함수와 쿼리만 담당하고 UI 작업은 다른 팀에서 지원 해주었지만), 참 난해한 부분이었다.

출력 개수 지정은 있지만 next버튼을 두는 시점에 대해서 말이다.

페이지 출력  개수 지정이 500개일때 limit절을 이용해서 query하는데,

next 페이지의 경우 limit 500,500 과 같이 query하고, 그 다음페이지는 1000,500 하는 루틴이다.

그러다가 query 결과가 500개 미만인 경우 마지막 페이지로 인식하고 next 버튼을 비활성화 시키려 했지만..(참 단순..)

문제는 바로 발생했다.

만약 query에 대한 결과가 딱 500개이고, 501번째 데이터가 없다면.. 분명 코드는 거짓말을 안하므로

next 버튼이 활성화 될것이다. 그리고 next 버튼을 누르게 되면 결과 없는 화면을 뿌릴것이다.
(실제로 인터넷 서핑중에 이런 페이지를 본적 있다.. 이기적인 개발자 같으니.. 혹은 모자란)

마지막 페이지임을 확인할 수 있는 방법에 대해 한참을 고민......

분명 mysql 에 뭔가 해결 방안이 있을것이라 여기고 고민고민..


그렇다고 next 페이지에 대한 query를 한번 더 질의할수도 없는 노릇이다. 페이지 출력개수의 지정이 늘어나고

데이터의 복잡도가 높아지면.. 엄청난, 혹은 상상하지 못한 부하를 가져올 수 있기 때문이다.
(이를테면 limit 0,500 을 화면에 뿌리고 내부적으로 limit 500,500 한번 더 돌려서 결과가 있는지 확인하는)

참 말도 안되는 발상이다. 이런 생각은 수초 안에 접고..

이번에는 구글신, 검색검색...  딱히 도움이 될만한 글이 없다. 이건 스킬 문제가 아니라 사고의 문제일테니..


검색하는 도중 문득 유년기때 보았던 "고스트 바둑왕" 이라는 만화가 생각났다.

만화에 보면 자주 나오는 멘트.. "신의 한수" .

주인공이 대전(바둑)할 때 바둑 돌을 놓은 위치가 매우 좋은 위치인 경우 모든 사람이 "신의 한수다 !!" 라며 감탄을 아끼지 않았던...

깜짝 놀랄만한 한수는 어디에나 있는법.. (신의 한수에 근접한 코드를 짜고 싶었다... 그뿐이야.. 이 만화 얘기는..)



그러다가 생각해낸 방법, 참으로 간단해서 헛 웃음만 나왔다.

페이지 출력개수가 500개로 지정되었다고 해서 무조건 query가 limit 0,500 일 필요는 없다.
(빌어먹을 고정관념......)

limit 절을 limit 0,501과 같이 +1 하고,  출력은 500개만 뿌린다,
501번째 데이터는 다음 페이지가 있는지 여부에 대한 판단용으로만
사용하면 되는것이다.



왜 이런 간단한걸 생각못했을까.....

모든 문제를 너무 어렵게만 바라보는, 혹은 함수에만 의존하지 말아야겠다...


덧말
물론... limit 자체가 부하를 가져오긴 하지만 말이다.. 웃음


'생활 > 주절주절' 카테고리의 다른 글

Web 개발자..  (0) 2011.11.16
책임 전가  (0) 2011.11.15
게시판 prev/next 버튼  (0) 2011.11.13
[명언] 존A.셰드  (0) 2011.11.13
ABS [anti-lock brake system] 오작동?  (0) 2011.10.25
개발자...  (0) 2011.10.24
댓글
댓글쓰기 폼