이 내용은 2003/1/20 기준으로 쓰여졌습니다. 최신 내용은 본가에서 얻으실 수 있습니다.
차례
개요
헤드라인 센서 기구에 의해, Sakura는 임의의 사이트의 헤드라인을 읽어와서 표시한다.
plugin 디렉토리 내에 임의의 디렉토리를 만들고, 거기에 파일들을 넣으면, 메인메뉴의「헤드라인 센서」부메뉴에 그 플러그인이 읽어오는 사이트가 나타난다.
home
+-plugin
+-techside
+-techside.dll
+-descript.txt
+-banner.png
HEADLINE/1.1
헤드라인 센서의 실체는 설정파일 descript.txt 와 execute 함수를 export 하는 2개의 DLL 파일이다.
descript.txt
name, TECHSIDE dllname, techside.dll url, http://www.iris.dti.ne.jp/~spec/news2/bbsf.html openurl, http://www.iris.dti.ne.jp/~spec/
name 엔트리는 그 사이트의 이름이다. 메뉴 명령등에 사용된다.
dllname 엔트리는 플러그인의 dll 파일명이다.
url 엔트리는 읽어올 사이트의 URL 이다.
openurl 엔트리는 사이트에 점프 할 때 실제로 오픈되는 URL 이다.
DLL
extern "C" __declspec(dllexport) HGLOBAL __cdecl getversion(long *len); function getversion(var len: longint): hglobal; cdecl; export;
DLL 로드 직후, 다른 함수가 import 되기 전에 우선 이 함수가 호출된다. 헤드라인 센서 플러그인은 "HEADLINE/1.1" 이라고 하는 12바이트의 문자열을 돌려준다.
extern "C" __declspec(dllexport) HGLOBAL __cdecl execute(HGLOBAL h, long *len); function execute(h: hglobal; var len: longint): hglobal; cdecl; export;
execute는 지정한 파일을 다운로드한 직후에 호출되어 인수에는 다운로드된 파일의 경로가 gmem_fixed로 넘겨진다. 이 파일은 반드시 존재한다. DLL 은 이 경로를 이용해 파일을 읽어들여서 헤드라인을 작성해 gmem_fixed로 반환한다.
반환값은 SAKURA 스크립트가 아니다. 따라서 태그등은 사용할 수 없다. CR+LF 를 개행코드로 하는 완전히 Plain인 문자열을 구성해야한다.
정형방법은 자유지만, 일반적으로 다음과 같이 한다.
■헤드라인 0[CR+LF]■헤드라인 1[CR+LF]■헤드라인 2[CR+LF]‥‥
헤드라인 센서는 10행을 넘는(CR+LF의 총 수가 10이 넘는) 헤드라인은 반환하지 않는다.
처리는 성공했지만 반환할 헤드라인이 없는 경우는 공문자열을 반환한다.
처리 자체의 실패, 혹은 html 구조가 다르다는 등의 분명한 에러인 경우는 메모리를 allocate 하지 않고 0 을 반환한다. 그러면 embryo는 그것을 에러라고 판단해, 유저에게「해석 실패」를 통지한다.
DLL을 로드, 언로드할 때 다음의 함수가 호출된다.
* 로드할 때 extern "C" __declspec(dllexport) BOOL __cdecl load(HGLOBAL h, long len); function load(h: thandle; len: longint): boolean; export; cdecl;
* 언로드할 때 extern "C" __declspec(dllexport) BOOL __cdecl unload(); function unload: boolean; export; cdecl;
load 의 제1인수에 DLL의 디렉토리 경로가 들어간다. 데이터파일등을 갖는 경우는 여기서 current directory를 취득해, 거기에 데이터파일을 만든다.
패스 문자열이 필요없는 경우에서도 함수내에서 반드시 핸들을 해방해야한다.
반환값은 bool 값 이지만 현재로서는 본체는 이 값을 보지 않는다(무엇이 반환되더라도 처리를 속행한다).
HEADLINE/2.0
HEADLINE/2.0은, 헤드라인 센서를 Shift_JIS 이외의 문자 코드로도 확장해 국제화에 대응하기 위한 사양입니다.
request 메소드
SHIORI와 같은 request 메소드를 사용합니다.
extern "C" __declspec(dllexport) HGLOBAL __cdecl request(HGLOBAL h, long *len);
GET Version HEADLINE/2.0
GET Version은, 헤드라인 센서가 사용되는 언어를 본체에 알리기 위하여 사용합니다. 통상, load가 불려진 뒤에 불려집니다. request 메소드를 사용하여 다음에 따라 불려집니다.
GET Version HEADLINE/2.0 Sender: SSP Charset: UTF-8
헤드라인 센서는 다음에 따라서, 되돌려 주세요.
HEADLINE/2.0 200 OK Charset: Shift_JIS Language: Japanese
본체로부터 헤드라인 센서에 보내지는 Path(GET Headline 참조)의 문자 코드를 Charset로 지정해 주세요.
GET Headline HEADLINE/2.0
헤드라인을 취득할 때에, HEADLINE/1.x의 execute 메소드 대신 불려집니다.
GET Headline HEADLINE/2.0 Sender: SSP Charset: UTF-8 Path: C:\ssp\plugin\doichan\doichan.html
Path에, 헤드라인 센스를 해야 할 파일의 경로가 들어갑니다. Path는 Charset로 지정된 인코딩으로 건네 받습니다.
헤드라인 센서는 다음에 따라서, 되돌려 주세요.
HEADLINE/2.0 200 OK Charset: UTF-8 Headline: ■SSP Beta1.67差分公開 Headline: ■ヘッドラインセンサforいろんなHP Headline: ■ぐんにょり更新
이처럼, Headline에 1개의 헤드라인을 넣어서 되돌려 주세요.
후기, 질문 답변 및 그 외 이야기
2.2 DLL 에 プレ-ン이 뭔지 모르겠습니다. -- iguana
plain 일거 같네요..
그럼 그냥 본문을 고쳐주셔도 되는데.. (..) -- iguana
2004년 8월 26일, HEADLINE/2.0 의 사양을 추가했습니다. 원문 출처는 http://doichan.netbank.co.jp/ssp/headline.html 입니다. -- !Nazu NT
