지원 OS : Any
개발환경 : PHP, JavaScript, MySQL, HTML
사용제한 : GPL
제작자 : 김현식
자료설명 :
안녕하세요.
노트내비게이터 1.3.3을 릴리즈합니다.
1.2.9와 비교해서 기능상 바뀐 것은 없습니다.
다만, GPL라이센스를 따르기로 하면서 해당 라이센스에서 요구하는 것들을 추가한 것입니다.
1.3.0버전에서 원본 파일이 오염되는 현상을 고쳤습니다.(1.3.1)
또한, register_globals = off 로 되어있는 환경에서도 동작할 수 있도록 만들었습니다(1.3.2 – 1.3.3)
노트 내비게이터란, 일종의 온라인 단어사전입니다.
DB에 단어를 등록하고, 원본 문서를 파서(수동파서, 자동파서)에 넣고 이 프로그램을 실행하면, DB에 등록된 단어마다 HTML문서에 링크가 걸립니다.
그러나, 원본 문서의 모양은 최대한 변형시키지 않습니다. 즉, 파란색이나 밑줄 등이 없는 “숨겨진”링크가 만들어집니다.
해당 단어에 마우스를 올려놓으면 이 단어가 링크내비게이터에 등록된 단어라는 표시가 뜨며(만두가 뜹니다(^^;)), 그것을 클릭하면 팝업창으로 해당 단어의 의미를 보여줍니다.
위 스크린샷에서 보이는 것처럼, 링크는 다단계로 걸릴 수 있습니다. 링크내비게이터의 기술을 사용하여 이론상 무한대의 중첩 링크를 걸 수 있습니다.
이건 인스톨 절차가 까다롭습니다.
기본적으로 MySQL 데이타베이스를 다룰 줄 아셔야 합니다. 적어도 create database명령을 쓰실 줄 알아야 하며, mysql의 user과 db테이블에 새로운 사용자를 등록하는 방법을 모르시면 보안상에 문제가 생길 수 있습니다.
제로보드를 직접 설치한 경험이 있으신 분은 아주 쉽게 하실 수 있습니다. 설치방법이 거의 같게 만들었거든요.(^^;)
1. 압축되어 있는 PHP코드를 받아옵니다.
2. 받아온 파일을 적절한 디렉토리에 풉니다. 적절한 디렉토리란 웹문서(HTML파일)이 있는 디렉토리를 말합니다.
파일을 모두 푼 뒤에 해당 디렉토리를 보시면 note_nav라는 디렉토리가 만들어져 있는 게 보일 겁니다.
3. mysql 계정과 DB를 생성합니다. 보안상의 문제로 꼭 root가 아닌 다른 mysql계정을 생성하시길 바랍니다.
아마 이 부분에서 아주 많은 사람들이 좌절할듯… 제로보드를 스스로 설치해보신 분이라면 쉽게 하실 수 있습니다.
4. note_nav/config.php파일을 편집합니다.
첫째줄은 localhost로 그냥 놔두세요. 거의 그럴 일이 없겠지만 DB서버가 원격지에 있을 경우 localhost를 다른 적절한 서버명으로 고쳐주어야겠죠? 보통은 localhost입니다.
두번째줄은 아까 생성한 mysql user이름,
세번째줄은 해당 유저로 접근하기 위한 패스워드입니다.
네번째줄은 데이타베이스 이름입니다.
다섯번째줄은 노트내비게이터가 있는 절대경로(URL)입니다. (예 : http://my.site.pe.kr/~sam/note_nav)
5. note_nav/sysop/login.php 파일을 웹브라우저로 엽니다. 이 창(로그인페이지)에서 config.php에 적어두었던 계정 정보를 입력합니다.
6. 원하는 노트를 등록하시고…
7. HTML파일에는 다음과 같이 적용합니다.
수동으로 note를 붙이는 경우 : (일시적으로 book를 바꾸고 싶을 때 주로 사용합니다)
– 파일의 맨 처음에 include("note_nav/note_nav.php"); ?>
–
– 노트를 붙이기를 원하시는 곳에 note("title"); ?> 를 끼워넣습니다. title은 6번 시솝 페이지에서 사용하신 바로 그 title입니다.
– 파일의 맨 마지막에 book_close(); ?> 를 추가합니다.
자동으로 note를 붙이는 경우(parser사용) : (대부분의 경우에 사용하지만 속도가 느립니다. 속도가 중요한 문서의 경우 수동파서만 사용하세요)
$src=”원본 HTML파일이름”;
$book=”참조할 book이름”;
include(“노트내비게이터 URL/parser.php”);
?>
이것만 들어있는 HTML파일을 만드시고(경로는 원본 파일과 같은 경로를 추천합니다. 다른 경로 사용시 주의가 필요합니다),
웹브라우저에서는 저것을 읽기만 하면 됩니다.
자동파서를 피해가고 싶으면 :
HTML본문에서 피해가고 싶은 단어 또는 문장을
echo "문장"; ?>
로 만들어줍니다. 자동파서는 ... ?> 도 HTML태그로 인식하여 파싱하지 않습니다.
8. 웹브라우저로 결과를 확인합니다.
수동파싱과 자동파싱 둘 다 같이 사용하실 수도 있습니다. 다만 수동파싱은 다단계의 note를 붙일 수 없습니다.
그럼…
김현식 “위 스크린샷”의 스크린샷은
http://nzeo.com 의 자작프로그램 자료실에 있습니다.
또한, 제가 가장 최신 버전을 맨 처음 릴리즈하는 곳이기도 합니다. 07/25 10:02:43
김현식 e-mail : wbstory@paran.com 07/25 10:04:09
김현식 수동파서에 대한 설명이 불충분했습니다.
open_book 함수는 또한 book_open 함수로도 가능하며(둘이 같은 겁니다), book를 열거나 바꾸는 기능을 합니다.
book_close는 또한 close_book 도 가능하며, book을 닫습니다. 반드시 열린 book은 닫아야 합니다. 그러나 book을 바꾸고 싶을 때는 book_close를 호출하지 않습니다(book_close함수가 정확히 하는 일은 수동파서의 전 동작을 마무리합니다) 07/25 10:08:06
김현식 자동파서만 사용하는 경우에는 원본 HTML문서에는 어떠한 수정도 가해지지 않습니다.
자동파서는 오직 하나의 book만 지정할 수 있는 대신에 다단계의 note를 만들 수 있고, 수동파서는 자동파서가 지정한 book외의 다른 book을 일시적으로 지정할 때 사용합니다. 수동파서는 자동파서와 무관하게 동작하므로 수동파서만 적용된 원본 HTML파일을 그냥 읽을 경우 수동파서만 적용된 문서가 불러집니다.
만약 다단계의 note가 필요한데 book이 달라 적용이 곤란한 경우에는 두 가지 방법을 사용하실 수 있습니다.
첫째 : 다른 book의 내용을 복사.
둘째 : Low level로 note를 붙임.
두번째 방법은 파서가 파싱 완료한 HTML문서의 소스 보기를 하시면 눈치채실 겁니다. 다만 두번째 방법은 제가 절대적으로 비추천합니다. Low Level에서는 ID로 note를 찾는데, DB에 수정이 가해지면 ID값이 바뀌기 때문입니다. 07/25 15:51:50
김현식 요약하면, 자동파서만 쓰는 경우에는 원본 HTML문서는 손댈 게 없고, 수동파서를 쓰는 경우에는 굳이 자동파서를 거칠 필요가 없으며, 둘을 같이 쓸 수도 있습니다.
자동파서는 book을 하나만 지정할 수 있으나 수동파서는 book_open함수를 사용하여 book을 지정하므로 book_open함수를 쓸 때마다 book이 바뀝니다. 그리고 수동파서는 자동파서가 어떤 book을 쓰는지 관심가지지 않으며, 자동파서 역시 마찬가지입니다.