에궁… 게시판 페이징 로직이다..

리스트에서 빠질 수 없는게 페이징 시스템입니다…

[1][2][3][4][5][6][7][8][9][10]

위와 같은 페이지를 누름으로써 그에 대한 리스트만 출력하는 것이지요…

이렇게 하는 이유는 전체의 리스트를 화면에 다 보여준다면 빨리 찾을 수도 없고

속도 또한 느립니다. 그래서 페이지로 구분해놓으면 찾아가기 싶게 됩니다..

여기서는 가장 기본적인 개념으로 페이징 시스템을 구현하겠습니다….

방법은 여러가지니깐 여러 각도로 시도해보는 것도 좋을 듯 합니다….

페이징 시스템에서 필요로 하는 것이

1. 현재 페이지

2. 현재 페이지의 블럭

(블럭은 페이지가 속해있는 그룹입니다. 예를 들어서 한 블럭에는 10페이지가 들어가는데 현재의

페이지가 20 페이지 라면 블럭은 두번째 블럭으로 선택이 됩니다.. 그럼 표시는

[11][12][13][14][15][16][17][18][19][20] 으로 되겠죠…

이렇게 하는 이유는 페이지 또한 무한히 많을 수 있기 때문에 페이지 자체의 페이징 시스템을

만드는 거죠. 그것이 블럭입니다. )

3. 전체 행의 개수

(이것을 알아야지만 현재 페이지가 속해 있는 블럭을 계산 할 수 있습니다. )

4. 현재 페이지의 블럭에서 시작페이지와 끝 페이지

(숫자 더하기, 빼기 계산만 하면 되기 때문에 특별한 건 없습니다.)

5. 한 페이지에 보여질 리스트 수 (limitList)

한 블럭에 보여질 페이지 수 (limitPage)

(위의 두가지가 있어야지 전체적인 계산이 됩니다… ^^ )

이상 위의 다섯가지로 일단은 페이지 시스템에 대해서 보여지는 것이 가능하구여

이제 가상으로 페이징 시스템을 만들어 보겠습니다…

1. 현재의 페이지 : 1페이지

2. 현재의 블럭 : 1블럭

3. 전체 행의 개수(total) : 100

4. limitList : 10, limitPage : 5

이렇게 네개의 구성요소로서 시작을 합니다….

리스트가 젤 처음 보여질 때 페이징 시스템은 1블럭의 1페이지를 가리키고 있어야 합니다..

1. 현재 페이지에서 현재 블럭구하는 방법

$block = ceil($page/$limitPage);

=> ceil 함수는 만약 숫자가 4.5라고 하면 올림을 하여 5가 되게 하는 함수입니다.

2. 현재 블럭의 시작 페이지와 끝 페이지

// 현재 블럭이 1블럭이라면 1이지만 2 블럭일때는 11이 되어야 합니다

$startPage = ($block-1)*$limitPage + 1;

// 마지막 블럭에서 페이지가 총페이지 수 보다 커지면 안되기 때문에

// 미리 총 페이지 수를 구해서 큰지 확인해줍니다.

$endPage = $startPage + $limitPage – 1;

if ($endPage > $totalPage ) $endPage = $totalPage;

3. 총 페이지 수 구하는 방법

$totalPage = ceil($total/$limitList);

4. 그럼 페이징 시스템을 출력하는건 간단하죠…

for ($i = $startPage; $i <= $endPage; $i++) { if ($page == $i) echo “[$i]”;

else echo “[$i]”;

}

현재 페이지는 찐하게 표시해줍니다. 그럼 기본적인 페이지 표시 시스템이 끝이 납니다.

설마 여기서 끝내는건 아니겠죠.. ^^

아까 블럭이란걸 만들었기 때문에 블럭 자체도 이동할 수가 있어야 겠습니다..

보통 게시판에 보면 ◀, ▶ 이런 화살표로 표시 되거나 prev, next 라는 말로 표시되거나 합니다.

[prev] 1 2 3 4 5 6 7 8 9 10 [next]

그래서 블럭을 옮길 수 있게 됩니다..

1. 현재의 블럭이 어딘지 알고 그 앞에 블럭이 있는지 뒤에 블럭이 있는지를 계산해서 표시합니다

현재 블럭은 위에서 구했기 때문에 넘어가구여

// 현재의 블럭이 앞에 있는 아닌지 검사

if ($block <= 1) echo ""; else echo “[prev]”; // 위의 페이징 시스템 표시 // 마지막 블럭인지 아닌지 검사 $totalBlock = ceil($totalPage/$limitPage); if ($block >= $totalBlock) echo ” “;

else echo [“next”];

위와 같이 쉽게 구할 수 있습니다. 이건 완전히 산수네요.. ㅋㅋㅋ

이제 페이징 시스템의 마지막 단계가 남았습니다..

디비 관련 작업입니다.. ^^

정렬한 것에 대해서 그 페이지에 맞는 내용을 가져와야 하기 때문에

여기서는 디비 쿼리 명령중 limit라는게 사용됩니다.

예 : select * from test order by groupNum desc, listNum asc limit $start, $limitList;

젤 마지막에 변수 두개만 설정 해주면 되는데요,,

두가지 옵션은 처음에는 시작되는 row의 번호구여, 뒤에꺼는 몇개를 얻어올껀지 입니다

0, 5 하면 0번째에서 5개행을 얻어온다는 소리하고 같죠.. ^^

마지막 $limitList는 아까 위에 있는 변수랑 같은 거기 때문에 그 대로 주시면 되구여

$start만 계산하면 됩니다..

계산하는 방법은 1페이지 일때 1에서 10, 2 페이지 일때 11에서 20 이런식으로 된다면

디비에서 row는 0부터 시작하기 때문에 0에서 9, 10에서 19 이런식으로 됩니다. 하나 작죠.. ^^

그럼 어떻게 계산을 하느냐…

($page-1)*$limitList;

어디서 많이 본 공식인데..ㅋㅋ 저위에 보면 블럭의 시작페이지 구하는 공식하고 비슷한데

+1 이 빠졌네요 .. 왜 그렇냐면 1씩 작으니깐요.. ^^ 그래서 +1을 해 줄 필요가 없죠….

그래서

select * from test order by groupNum desc, listNum asc limit 0, 10;

하면 0번째 행에서 10개의 행을 얻어오는것이니 바로 리스트에 적용할 수 있겠죠..

리스트 화면에서는 이것에 대한 처리만 해주면 되구여… ^^

약간씩 복잡해 보일 수도 있지만 실상은 더하기 빼기밖에 없네요.. ^^

우리 모두 게시판을 누워서 떡 먹듯 다루는 그 날까지.. 화이팅.. ^^

ps . 예전에 개발해본적이 있는데 jsp로 다시 할라니 조금 헤멧넹…
암튼 이런 자주 사용하는 로직은 정리가 필수다..

선테크데이때 제임스 고슬링이 오찬 미팅에서 했던 말입니다

** 제임스 고슬링의 말 **

1. 리더 = 창의력 + 팀원의 생각을 한방향으로 유도할수 있는 사람이다
여러분도 좋은 리더가 되기 위해서 이것을 항상 유념하라

2. 점심시간을 활용(팀웍을 위해서), 팀원은 한식탁에 앉을수 있을만큼만
즉 점심식사를 팀원과 함께하라는 말이다. 그 시간을 활용해 프로젝트
에 대한 의견 교류를 하라는 것이다.

3. 공부열심히,코딩매일할것(c계열쪽) (프로그래머가 가져야할 마음가짐)
책도 많이 보고 공부를 열심히 해라. C계열은 코딩을 많이 하는것
을 많이 봤다고 한다.(옛날에는) 하지만 자바는 코드의 재활용성
면에서 코드를 그렇게 많이 치지 않아도 된다.

4. 객관식을 피해라.
자기의 생각을 가지고서 행동하라

5. 기술,팀웍,창의력(미래의 프로그래머를 위한)
이 세가지를 가질수 있는 사람이 프로그래머 이다.

6. 학생때 경력을 만들어라(jcp,jco등 open source참여)
꼭 회사에 취직을 해서 경력을 쌓아도 되지만
경력을 만들수 있는 기회는 많다.

7. 내가 있으므로서 팀에 혁신적인 변화를 있게 하라.
즉 팀에 헌신하며 변화 시킬수 있는 능력을 키워라는 것같다.

8. 회사 인턴쉽에 참여하라.
이것을 통해 경험과 능력을 키워라는것 같다.

9. 컴퓨터는 툴이다.(그 이상의 생상성은 없다)
언어도 툴이고 컴퓨터도 툴이다. 다만 수단일 뿐 그 이상도 아니다.

이상 제가 선테그데이에 가서 제임스 고슬링의 대학생들과의
대화에서 제 주간적인 생각도 약간 들어가기는 했지만 그래도
요약정리 한것입니다.

정말 가서 많은 경험과 눈을 높일수 있는 기회였다고 봅니다.

한번씩 이글을 읽어보시면 좋을듯 합니다.

ps. 자바랜드에 있는 글을 퍼왔습니다.^^;

돈 대신 혼을 쫓아라

박대연 KAIST 교수「돈 대신 혼을 쫓아라」
티맥스소프트 창업자, 야간 상고 출신으로 KAIST 교수 임용

정선구 기자 (joins.com)
2004/11/13

도대체 불행은 언제까지 계속되는 것일까. 고난의 끝은 없는 걸까. 프랑스 극작가 로망 롤랑은 “언제까지 계속되는 불행은 없다”고 했는데…. 티맥스소프트의 창업주 박대연(49) 씨가 어린 시절 늘 가졌던 의문이다.

찢어지게 가난해 자신은 사환으로, 동생은 구두닦이로, 누나는 가정부로 돈벌이에 나섰다. 아버지는 암으로 사망하고, 먹을 것이 부족해 젖먹이 동생은 입양돼야 했다. 가난하고 불행한 그 어떤 가정이 이보다 더할 수 있을까. 하지만 고난과 역경을 축복의 기회로 보느냐, 벗어날 수 없는 저주로 보느냐에 따라 인생은 달라지나 보다.

소년가장 박대연은 고난을 넘어 역경을 딛고, 국내 굴지의 소프트웨어 회사를 일궈냈다. 야간상고 출신이지만 한국과학기술원(KAIST) 전자공학과 교수도 됐다. 바로 자신의 혼을 바치는 집념으로-.

가난, 고난, 역경…
광주에서 초등학교를 마친 1968년 그는 운수회사 전남화물의 사환으로 취직했다. 공부하고 싶은 마음이야 굴뚝같았지만, 아버지는 암으로 자리에 누워 있었고 5남매의 장남으로서 가정을 책임져야 했다. 월급은 3000원. 당시 쌀 한 가마니 값이었다. “원래는 7남매였습니다. 그런데 먹을 쌀이 부족해 갓 돌을 지난 막내는 남의 집에 입양시켜야 했습니다.”

동생들은 그나마 초등학교에 다니지도 못했다. 구두닦이로, 가정부로 전전하며 생활비를 벌어야 했다. 동생들은 정상적인 입학 나이를 다섯 해나 지나서야 초등학교에 들어갔을 정도였다. 사환 생활을 하면서도 공부에 대한 미련을 버릴 수 없었다.

그래서 입학한 곳이 광주 동성중 야간과 광주상고 야간. 고등학교 1학년 때는 아버지마저 숨을 거뒀다. 낮에는 사환, 밤에는 학생, 집에서는 소년가장이라는 삼중고의 생활이 이어졌다. 학교에선 늘 수석이었다. 수석졸업이면 무시험으로 은행에 들어갈 수 있어서 고3 때인 75년 한일은행에 취직했다. 은행원 월급(초봉 7만원)과 빚으로 동생들을 대학에 보낼 수도 있었다.

부평지점에서 근무하고 있을 무렵 그에게 인생의 전기가 생겼다. 전산실 요원을 모집한다는 것. 적성 테스트를 받은 뒤 전산부로 배치됐다. 훗날 그에게 큰 성공을 가져다준 컴퓨터와의 첫 인연이었다. 은행 컴퓨터와 12년 6개월을 뒹굴었던 88년 7월 그는 더 큰 결심을 하게 된다. 미국 유학이었다. 퇴직금으로 손에 쥔 돈은 1300만원. 이 돈을 밑천 삼아 그는 오리건대로 향했다.

“나는 목숨까지 걸었다”
“개학 전날 응급실로 실려갔습니다. 탈장이었죠. 그러나 병원에 오래 있을 수 없었습니다. 학비를 병원비에 쓸 형편이 못됐습니다. 그날로 퇴원해 버렸어요. 그래서 학교에 다녀오면 온몸이 피범벅이 되곤 했습니다.”

박대연 씨는 뒤늦게나마 배운다는 기쁨이 너무 커 아픈 줄도 몰랐다고 했다. 미국 남가주대(USC)에서 컴퓨터공학 박사학위를 받고 귀국한 때가 96년. 벌써 나이는 마흔을 넘어서고 있었다.

그는 교수직을 얻기 위해 여러 대학에 원서를 냈다. 나이도 많은 데다 지역 연고나 선, 후배도 없어 크게 기대하지는 않았다. 그러다 덜컥 외국어대 제어계측공학과 조교수로 임용됐다. 유학 시절의 올A 학점과 최우수 논문상 등이 크게 작용한 것이다.

이 시절 그는 회사를 하나 차렸는데, 그것이 나중에 대박을 터뜨린 티맥스소프트였다. KAIST 교수 모집 때는 언짢은 말을 듣기도 했다. 그를 인터뷰한 교수가 “KAIST가 어떤 곳인 줄 아느냐”고 질문했다. 나이도 많은 사람이 너무 당돌하게 응시한 것 아니냐는 말투였다.

수업과 사업을 한창 병행할 때인 98년 8월 국방부에서 한 통의 전화가 걸려왔다. “귀사가 개발한 미들웨어에 대해 설명해 보시오.” 신이 나서 설명했다. “인터넷 사이트 시스템이 다운되지 않고 원활히 잘 돌아가게 해주는 소프트웨어로, 미국에 이어 세계에서 둘째로 개발에 성공한 순수 원천기술이며….” 그로부터 1년여 뒤 국방부 발표가 나왔다. 자신의 회사 제품이 1등으로 통과됐다는 소식이었다. 지금 그의 회사 제품은 삼성전자, 포스코 등 굴지의 대기업과 은행, 증권사, 정부 부처 등 각계에서 애용되고 있다.

고난과 역경으로 그는 자연스레 강해져 있었다. 남에게 공부는 짐이었지만 그에게는 재미였다. 사업을 할 때도 최고가 돼 보겠다는 욕심에다 혼까지 투자한 것이 성공으로 이끌었다.

“사람들은 ‘이만하면 최선을 다했다’고 말하곤 합니다. 결코 그렇지 않습니다. 혼을 바치지 않았으니까요. 후배들에게 이렇게 말합니다. ‘돈을 좇지 말고 혼을 좇아라.’ 나라 일도 마찬가집니다. 유능한 인재들이 목숨을 바칠 정도로 혼을 불어넣으면 세상이 바뀝니다.” @

ps 어제 티맥스에 다니는 친구가 교수님 이야기를 했다. 교수님의 일화가 회사에서는 화재라면서.. 아무리 갑일지라도 전혀 상관하지 않고 훈계하시는 모습을 자주 본다고 했다. 자신의 눈에 맞지 않으면 정말 한심해 보이기도 하시고 또한 충고를 해주신다고…
정말 엄격하게 살아오신거 같다. 직접 뵙지는 못했지만 정말 한번정도는 뵙고 이야기 하고싶다..