ToSysop

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ ToSysop ] in KIDS
글 쓴 이(By): akira (Park_S_J_)
날 짜 (Date): 2002년 12월 11일 수요일 오후 10시 16분 23초
제 목(Title): Re: thread기능좀 넣어 주세요. 



http://www.sparcs.org/exhibition/1997/ex15.html
97년에 쓴 글과 비슷한 컨셉이니까 좀 지나긴 했군요. ㅋㅋ

tin을 실행시키는 것은 vi, irc, less등을 붙이는 것과 
시스템의 성능에 미치는 영향이 전혀 다릅니다.
vi, irc,less중 어느 것도 대상이 되는 data가 수만건씩 되진 않죠.
그런 프로그램들은 어떻게 처리해도 전체 시스템 성능엔 큰 영향이 없습니다.
tin을 innd와 같은 host에서 실행시키면 news index화일을 network이 아니라 file을
직접 읽는 등의 잇점을 볼 수 있으나 큰 도움이 안됩니다.

bbs의 index화일은 fixed size record 화일로 글번호를 알면 lseek로 
원하는 글들의 index정보에 바로 접근할 수 있죠.
그냥 lseek해서 필요한 부분만 읽어서 화면에 보여주면 됩니다.
news index화일이라는 것은 bbs의 index화일과는 다르게
제목, 저자, message-id, reference등을 deliminator로 붙여놓은
text 화일에 불과하고 line-feed terminated라 random access도 불가능합니다.
무조건 몽땅 읽어서 메모리에 올린 후 보여주는 목적으로만 사용할 수 있습니다.
어나니에 글이 10만개일때 읽는 사용자가 100명이면 100명 모두 10만건 전체의
제목, 날짜, 글쓴이를 포함한 record를 local process image로 가지고 있어야 하고
게시판을 바꾸면 새로 읽어서 메모리에 올려야 합니다.

tin을 쓴다면 그대로 사용할 수는 없고 메모리도 shm등을 통해 공유하게 하고,
UI로 개선하는 등 상당히 많이 고쳐야 합니다.
그러다 보면 거의 tin이 아니게 됩니다.  그게 바로 '아라'입니다 -_-;
eagle-bbs에 tin을 참고해서 news frontend를 붙였다는게 정확할 겁니다.
게다가 tin 소스는 모듈화가 거의 고려 되어 있지 않아서 global 변수 등을 
매우 많이 쓰는 아주 꿀꿀한 구조로 되어 있습니다.
따라서 수정을 한다던지 다른 프로그램에서 가져다 쓰는 것도 매우 X 같습니다.
그래서 바퀴를 새로 발명하지 말고 그러려면 차라리 발명된 바퀴를 가져다
쓰는게 낫지 않은가 하는 겁니다.
그럼 게시판을 서로 공유할 수도 있죠. 재밌겠군요. ㅋㅋ

근데 여러모로 nntp를 위해 최적화 되어 있는 innd를 article storage로 쓰는게 
요즘 같이 모두 웹으로 통하는 시대에 부적절하다는게 요즘 제 의견입니다.
아라는 사실 나중에는 사용자들을 거의 news로 migration 시키다 시피 해서 
news client로 부터의 접근이 major가 되도록 하고, 
(아라비비 text front-end가 죽어있고 innd만 살아 있을 경우 그런 상태를 간간히
 볼 수 있긴 하죠. ㅋㅋ)
ara의 게시판들을 usenet에 feeding할 계획이었기 때문에 innd를 사용한 것입니다.
(대만쪽 어디 bbs가 tw.? newsgroup과 연동되는 식으로 되어 있던 것에 영감을 받았죠.)
그러나 feeding은 이루어 지지 않았습니다. 의지 부족일 수도 있지만 그만큼 needs가
크지 않았다는게 더 맞을 겁니다.
그리고 사실 news client로부터의 접근이 생각보다 많지 않았고 오히려 많다면
웹 접근이 더 많을 것입니다.
news client로부터의 접근이 major가 아니고, 다른 뉴스서버들에게 feeding을 하거나
받을 생각이 아니라면 tin+innd 구조는 비효율적입니다.
news client의 접근을 위해서라면 차라리 nntp gateway를 짜서 붙이면 됩니다.
제가 eagle bbs의 nntp gateway를 짜본적이 있는데 read-only 버전이지만 
구현에 몇 시간 안걸렸습니다.
옛날 eagle-bbs ara의 글들을 innd로 migration할 때 이걸 짠 다음에 slrnpull을 
사용해서 eagle bbs->innd로 퍼담았었죠.


1. ara를 거의 그대로 가져다 쓰시던가,
2. mysql을 backend로 하는 웹비비를 깔고
그 schema를 그대로 이용하는 eagle-bbs front-end를 붙이고
매번 query 날리면 너무 무거우니까 shm로 cache도 좀 해주고
news client를 위해서는 nntp-gateway를 만들어 붙인다.
가 제 제안입니다. ㅋㅋ

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.