Develop and Download Open Source Software

Browse CVS Repository

Contents of /modchxj/mod_chxj/doc/modchxj.sdoc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.37 - (show annotations) (download)
Fri May 16 13:40:39 2008 UTC (15 years, 11 months ago) by konn
Branch: MAIN
CVS Tags: same-as-RELEASE_0_12_1, HEAD
Changes since 1.36: +153 -316 lines
  * Updated document.

1 <?xml version='1.0' encoding="EUC-JP" ?>
2
3 <doc xml:lang="ja">
4 <head>
5 <title>mod_chxj</title>
6 <subtitle></subtitle>
7 <author>Atsushi Konno</author>
8 <date>29 Mar 2005</date>
9 <date>Last modified: @@DATE@@</date>
10 </head>
11 <body>
12 <section title="Overview">
13
14 mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.x用モジュールであり、
15 CHTML(DoCoMo i-Mode用 CHTML5.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。
16 HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。
17 Cookie非対応端末、Refer非対応端末のために、Set-Cookie、CookieヘッダやRefererヘッダをシミュレートすることもできます。
18
19
20 </section>
21 <section title="インストール">
22 <subsection title="準備">
23 mod_chxjをインストールする前に、下記のものを用意する必要があります。
24 <ol>
25 <li>Apache2.xのヘッダーファイル群</li>
26 <li>Apache2.x用のapxs</li>
27 <li>apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)</li>
28 <li>automake、autoconf、libtool1.3.X</li>
29 <li>ImageMagick(MagickWand)</li>
30 <li>memcachedを使用する場合にはlibmemcached 0.20以降</li>
31 <li>mysqlを使用する場合にはlibmysqlclient 4.1.11a以降</li>
32 <li>Linux</li>
33 </ol>
34 </subsection>
35 <subsection title="mod_chxjの入手">
36 mod_chxjは<a href="http://sourceforge.jp/projects/modchxj/">こちら</a>からダウンロードすることができます。
37 </subsection>
38 <subsection title="インストール">
39 以下にmod_chxjインストール手順を示します。
40 <ol>
41 <li>Configure スクリプトを生成します<program title="Configure スクリプトの生成">
42 $ ./buildconf.sh
43 </program>
44 <note>"$"はプロンプトをあらわします。</note>
45 </li>
46 <li>Configure
47
48 <program title="Configure">
49 $ ./configure
50 </program>
51 <note>場合によっては--with-apr-configや--with-apu-config、--with-pcre-configも必要です。</note>
52 <note>詳細はBuildを参照</note>
53 </li>
54 <li>mod_chxj.soを生成します
55 <program title="make">
56 $ make
57 </program>
58 </li>
59 <li>apacheにインストールします
60 <program title="install">
61 $ make install
62 </program>
63 </li>
64 <li>データの設置
65 etcディレクトリは以下のdevice_data.xmlとemoji.xmlをApache
66 からアクセスできるところに配置します。
67
68 以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合
69
70 <program title="データの設置">
71 $ mkdir -p /etc/apache2/chxj
72 $ cp etc/device_data.xml /etc/apache2/chxj
73 $ cp etc/emoji.xml /etc/apache2/chxj
74 </program>
75 </li>
76 </ol>
77 </subsection>
78 </section>
79 <section title="Build">
80 mod_chxjをコンパイルするにはconfigureを行う必要があります。
81 以下にconfigureのオプションを記します。
82 <subsection title="メイン">
83 <subsection title="--with-apache-header">
84 通常指定する必要はありません。configureでApacheのヘッダファイルの場所が検知できなかった場合や、任意のApacheヘッダファイルを使用したい場合に指定します。
85 <program title="--with-apache-header">
86 $ ./configure --with-apache-header=/usr/include/apache2
87 </program>
88 上記は/usr/include/apache2以下にApacheのヘッダファイルがある場合の例です。
89 </subsection>
90 <subsection title="--with-apxs">
91 通常指定する必要はありません。configureでapxsを検知できなかった場合や、任意のapxsプログラムを指定したい場合に指定します。
92 <program title="--with-apxs">
93 $ ./configure --with-apxs=/usr/local/apache2/bin/apxs2
94 </program>
95 上記は/usr/local/apache2/bin/apxs2を使用するようにapxsに指定しています。
96 </subsection>
97 <subsection title="--with-apr-config">
98 通常指定する必要はありません。
99 configureでapr-configを検知できなかった場合や、任意のapr-configプログラムを指定したい場合に指定します。
100 <program title="--with-apr-config">
101 $ ./configure --with-apr-config=/usr/local/apache2/bin/apr-1-config
102 </program>
103 上記は/usr/local/apache2/bin/apr-1-configを使用するように指定しています。
104 </subsection>
105 <subsection title="--with-apu-config">
106 通常指定する必要はありません。
107 configureでapu-configを検知できなかった場合や、任意のapu-configプログラムを指定したい場合に指定します。
108 <program title="--with-apu-config">
109 $ ./configure --with-apu-config=/usr/local/apache2/bin/apu-1-config
110 </program>
111 上記は/usr/local/apache2/bin/apu-1-configを使用するように指定しています。
112 </subsection>
113 </subsection>
114 <subsection title="Cookieシミュレート機能でMySQLを使用する場合">
115 <subsection title="--enable-mysql-cookie">
116 Cookieシミュレート機能を使用する際、保存先をデフォルトのDBMでは無く、MySQLに保存するようにします。
117 DefaultのDBMで良い場合や、Cookieシミュレート機能を使用しない場合は指定する必要はありません。
118 別途MySQLサーバを用意する必要があります。また、本オプションを指定した場合は、--with-mysql-header、--with-mysql-lib-dirも指定します。
119 これはMySQLのヘッダとライブラリが必要なことを意味します。使用するMySQLのライブラリは今のところlibmysqlclient_r.soのみです。
120 <program title="--enable-mysql-cookie">
121 $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql --with-mysql-lib-dir=/usr/lib
122 </program>
123 上記は、/usr/include/mysql以下にmysql用のヘッダがあり、/usr/lib以下にlibmysqlclient_r.soがある場合の例です。
124 </subsection>
125 <subsection title="--with-mysql-header">
126 --enable-mysql-cookieを指定した場合は必須です。
127 MySQLのヘッダファイルの場所を指定します。
128 <program title="--with-mysql-header">
129 $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql --with-mysql-lib-dir=/usr/lib
130 </program>
131 </subsection>
132 <subsection title="--with-mysql-lib-dir">
133 --enable-mysql-cookieを指定した場合は必須です。
134 MySQLのライブラリ、libmysqlclient_r.soの設置されているディレクトリを指定します。
135 <program title="--with-mysql-lib-dir">
136 $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql --with-mysql-lib-dir=/usr/lib
137 </program>
138 </subsection>
139 </subsection>
140 <subsection title="Cookieシミュレート機能でmemcachedを使用する場合">
141 <subsection title="--enable-memcache-cookie">
142 Cookieシミュレート機能を使用する際、保存先をデフォルトのDBMでは無く、memcachedに保存するようにします。
143 DefaultのDBMで良い場合や、Cookieシミュレート機能を使用しない場合は指定する必要はありません。
144 別途memcachedを用意する必要があります。また、本オプションを指定した場合は、--with-memcached-header、--with-memcached-lib-dirも指定します。
145 これはlibmemcachedのヘッダとライブラリが必要なことを意味します。
146 <program title="--enable-memcache-cookie">
147 $ ./configure --enable-memcache-cookie --with-memcached-header=/usr/include/libmemcached --with-memcached-lib-dir=/usr/lib
148 </program>
149 上記は、/usr/include/libmemcached以下にlibmemcached用のヘッダがあり、/usr/lib以下にlibmemcached.soがある場合の例です。
150 </subsection>
151 <subsection title="--with-memcached-header">
152 --enable-memcache-cookieを指定した場合は必須です。
153 libmemcachedのヘッダファイルの場所を指定します。
154 <program title="--with-memcached-header">
155 $ ./configure --enable-memcache-cookie --with-memcached-header=/usr/include/libmemcached --with-memcached-lib-dir=/usr/lib
156 </program>
157 </subsection>
158 <subsection title="--with-memcached-lib-dir">
159 --enable-memcache-cookieを指定した場合は必須です。
160 libmemcachedのライブラリ、libmemcached.soの設置されているディレクトリを指定します。
161 <program title="--with-memcached-lib-dir">
162 $ ./configure --enable-memcache-cookie --with-memcached-header=/usr/include/libmemcached --with-memcached-lib-dir=/usr/lib
163 </program>
164 </subsection>
165 </subsection>
166 </section>
167 <section title="Configuration">
168 以下はmod_chxjが/usr/lib/apache2/modulesディレクトリ配下に設置されたものとしています
169
170 <subsection title="htmlファイルが変換対象の場合">
171
172 例として、Locationが"/chxj"以下のものは全て変換する場合を説明します。
173
174 <ol>
175 <li>httpd.confに以下を追加します。
176
177 <program title="httpd.conf">
178 #====================================================================================
179 # モジュールをApache2.xにロード
180 #====================================================================================
181 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
182
183 #====================================================================================
184 # デバイスデータファイルの設定
185 #====================================================================================
186 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
187
188 #====================================================================================
189 # 絵文字データファイルの設定
190 #====================================================================================
191 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
192
193 #====================================================================================
194 # 変換エンジン動作指示命令
195 # ChxjConvRule ==> ディレクティブ
196 # "^/chxj.+$" ==> Perl互換のURIパターン
197 # EngineOn ==> 変換エンジンを動作させる指示
198 # NONE ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
199 #====================================================================================
200 ChxjConvertRule "^/chxj.+$" "EngineOn" "NONE"
201
202 </program>
203 </li>
204 <li>apacheの再起動。</li>
205 </ol>
206 </subsection>
207 <subsection title="php等の出力結果が変換対象の場合">
208 <ol>
209 <li>httpd.confに以下を追加します
210
211 <program title="httpd.conf">
212 #====================================================================================
213 # モジュールをApache2.xにロード
214 #====================================================================================
215 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
216
217 #====================================================================================
218 # デバイスデータの設定
219 #====================================================================================
220 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
221
222 #====================================================================================
223 # 絵文字データの設定
224 #====================================================================================
225 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
226
227 #====================================================================================
228 # 変換エンジン動作指示命令
229 # ChxjConvRule ==> ディレクティブ
230 # "^/chxj.+$" ==> Perl互換のURIパターン
231 # EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
232 # EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
233 # EUC-JPからCP932に文字コード変換します。
234 #====================================================================================
235 ChxjConvertRule "^/chxj.+$" "EngineOn" "EUC-JP"
236
237 </program>
238 </li>
239 <li>apacheの再起動。</li>
240 </ol>
241 </subsection>
242
243 <subsection title="xoopsを使用し、且つwordpress、bwikiを使用している場合">
244 <ol>
245 <li>httpd.confに以下を追加します
246
247 <program title="httpd.conf">
248 #====================================================================================
249 # モジュールをApache2.xにロード
250 #====================================================================================
251 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
252
253 #====================================================================================
254 # デバイスデータの設定
255 #====================================================================================
256 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
257
258 #====================================================================================
259 # 絵文字データの設定
260 #====================================================================================
261 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
262
263 #====================================================================================
264 # 変換エンジン動作指示命令
265 #====================================================================================
266 #====================================================================================
267 # bwikiの設定をします。bwikiではどうもxoopsヘッダの文字コードとbwiki内での携帯スキン
268 # の文字コードが一致していないようなので、bwiki内で文字コードを変換させないように
269 # 修正後、以下のルールを記述します。
270 #
271 # ChxjConvRule ディレクティブ
272 # "^/modules/bwiki.+$" このルールを適用したいURIパターン
273 # "EngineOn" 変換エンジンを有効にします。
274 # "EUC-JP" 出力時にEUC-JPからCP932に変換させます。
275 # "PC" 変換元HTMLはPCサイト用HTMLです。
276 # "DoCoMo/1.0/D501i" DoCoMo端末としてbwikiにアクセスさせます。
277 #
278 #====================================================================================
279 ChxjConvertRule "^/modules/bwiki.+$" "EngineOn" "EUC-JP" "PC" "DoCoMo/1.0/D501i"
280
281 #====================================================================================
282 # wordpressの設定をします。
283 #
284 # ChxjConvRule ディレクティブ
285 # "^/modules/wordpress.+$" このルールを適用したいURIパターン
286 # "EngineOn" 変換エンジンを有効にします。
287 # "NONE" 出力時に文字コード変換をさせません。
288 # "NONE" 変換元HTMLはPCサイト用HTMLではありません。
289 # "DoCoMo/1.0/D501i" DoCoMo端末としてwordpressにアクセスさせます。
290 #
291 #====================================================================================
292 ChxjConvertRule "^/modules/wordpress/.*$" "EngineOn" "NONE" "PC" "DoCoMo/1.0/D501i"
293
294 #====================================================================================
295 # その他の設定をします。
296 #
297 # ChxjConvRule ディレクティブ
298 # "^/.+$" このルールを適用したいURIパターン
299 # "EngineOn" 変換エンジンを有効にします。
300 # "EUC-JP" 出力時にEUC-JPからCP932に文字コード変換をさせます。
301 #
302 #====================================================================================
303 ChxjConvertRule "^/.+$" "EngineOn" "EUC-JP"
304
305
306 &lt;Location /&gt;
307 ChxjImageEngine On
308 AllowOverride All
309 &lt;/Location&gt;
310 </program>
311 </li>
312 <li>apacheの再起動。</li>
313 </ol>
314 </subsection>
315
316
317
318
319 <subsection title="画像自動変換機能を使用する場合">
320 <ol>
321 <li>httpd.confに以下を追加します。
322 下記は、URIが/imgで始まる全ての画像に対して動作するようmod_chxjに指示しています。
323
324 <program title="httpd.conf">
325 &lt;Location /img&gt;
326 ChxjImageEngine On
327 ChxjImageCacheDir /tmp
328 ChxjImageCopyright "A.Konno"
329 &lt;/Location&gt;
330 </program>
331
332 上記の説明を以下に示します。
333
334 <ol>
335 <li>ChxjImageEngine<br />
336 mod_chxjの画像変換ハンドラを起動するよう指示しています。
337 DefaultはOff
338
339 <br />
340 <br />
341 </li>
342
343
344 <li>ChxjImageCacheDir<br />
345 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリを指定します。
346 デフォルトは/tmp。
347
348 <program title="ChxjImageCacheDir">
349 ChxjImageCacheDir /tmp
350 </program>
351
352 mod_chxjに画像変換キャッシュとして/tmpを使用するよう指示します。
353 <br />
354 <br />
355 </li>
356
357 <li>ChxjImageCacheLimit<br />
358 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリの許容量を指定します。
359 単位はbyte。
360
361 <program title="ChxjImageCacheLimit">
362 ChxjImageCacheLimit 1024
363 </program>
364
365 mod_chxjに画像変換キャッシュ最大サイズとして1kbyteと指定。
366 ※このとき変換結果が1kbyte以上あるような場合にはINTERNAL_SERVER_ERRORを返します。
367 十分な領域を確保するか、画像サイズを小さくしてください。
368 <br />
369 <br />
370 </li>
371
372
373 <li>ChxjImageCopyright<br />
374 mod_chxjの画像変換ハンドラに、転送禁止設定を行うよう指示します。
375 パラメータとして任意の文字列をとります。
376 ChxjImageCopyrightディレクティブで指定された文字列は、それぞれのイメージの
377 コメント部に埋め込まれます。
378
379 <program title="ChxjImageCopyright">
380 ChxjImageCopyright "A.Konno"
381 </program>
382
383 mod_chxjに転送禁止設定を行うよう指示しています。
384 変換後イメージのコメント部分には、キャリア毎に以下の文字列を埋め込みます。
385
386 <b>AU の場合</b>
387 <program title="AU">
388 kddi_copyright=on,A.Konno
389 </program>
390
391 <b>DoCoMoの場合</b>
392 <program title="DoCoMo">copy="NO",A.Konno</program>
393
394 <b>SoftBank/Vodafone</b>の場合は、レスポンスヘッダに
395
396 <program title="SoftBank/Vodafone/J-PHONE">
397 x-jphone-copyright:no-transfer
398 </program>
399
400 を埋め込みます。
401 <note>SoftBank/Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note>
402 </li>
403 </ol>
404 </li>
405 </ol>
406 </subsection>
407
408 <subsection title="文字コードを変換したい場合(EXPERIMENTAL)">
409 <ol>
410 <li>httpd.confに以下を追加します。
411 下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。
412 サーバ側はEUC-JPであった場合の例です。mod_chxjによってSJISに変換するように指示しています。
413 サーバ側がShift_JISで無い場合は、Shift_JISコードの10進参照文字列表記を記述することによって
414 Shift_JISコードの絵文字2バイトコードに変換しクライアントへ返します。
415
416 <program title="httpd.conf">
417 ChxjConvRule "^/chxj.+$" "EngineOn" "EUC-JP"
418 </program>
419
420 上記の説明を以下に示します。
421
422 <ol>
423 <li>ChxjConvertRule<br />
424 サーバサイドの文字コードを指定します。ここに、EUC-JPと指定してあった場合は、
425 EUC-JPからCP932に変換後、クライアントに出力されます。
426 省略した場合はNONE
427 <ol>
428 <li>変換エンジン動作指示命令<br />
429 ChxjConvertRule ==> ディレクティブ<br />
430 "^/chxj.+$" ==> Perl互換のURIパターン<br />
431 EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br />
432 EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)<br />
433 <br />
434 EUC-JPからCP932に文字コード変換します。(glibc/iconvに依存します)<br/>
435 </li>
436 </ol>
437
438 <br />
439 <br />
440 </li>
441 </ol>
442 </li>
443 </ol>
444 </subsection>
445 <subsection title="ディレクティブ">
446 <ol>
447 <li>ChxjLoadDeviceData<br />
448 デバイス定義ファイルを指定します。
449 <program title="ex)">
450 ChxjLoadDeviceData /etc/apache2/device.xml
451 </program>
452 </li>
453 <li>ChxjLoadEmojiData<br />
454 絵文字変換定義ファイルを指定します。
455 <program title="ex)">
456 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
457 </program>
458 </li>
459 <li>ChxjImageEngine<br />
460 画像変換エンジンを有効にします。
461 パラメータとしてOnとOffを指定できます。
462 DefaultはOffです。
463 <program title="ex)">
464 ChxjImageEngine On
465 </program>
466 </li>
467 <li>ChxjImageCacheDir<br />
468 イメージの一時ファイル保存場所を指定します。
469 <program title="ex)">
470 ChxjImageCacheDir /tmp
471 </program>
472 </li>
473 <li>ChxjImageCacheLimit<br />
474 イメージの一時ファイル保存許容量を指定します。
475 下記は1MByteの例。
476 <program title="ex)">
477 ChxjImageCacheLimit 1048576
478 </program>
479 </li>
480 <li>ChxjImageCopyright<br />
481 イメージに著作権情報を付与します。
482 <program title="ex)">
483 ChxjImageCopyright "chosakuken jyoho"
484 </program>
485 </li>
486 <li>ChxjConvertRule<br />
487 HTML変換エンジンの適用ルールを記述します。
488 本ディレクティブを使用し、変換エンジンのOn|Offを指定します。
489 DefaultはOFFです。
490 また、ルールは記述された順番に評価し、マッチするものがあれば、その時点で対象ルールを適用します。
491 パラメータは3つ必要です。下記にパラメータを記します。
492 <table title="パラメータ">
493 <tbody>
494 <tr>
495 <td>第1パラメータ</td><td>URIを評価するPerl互換の正規表現を指定します</td>
496 </tr>
497
498 <tr>
499 <td>第2パラメータ</td><td>HTML変換エンジンのOn|Offを指定します。Onの場合は"EngineOn"。Offの場合は"EngineOff"を指定します。"EngineOn|EngineOff"の他に"CookieOn|CookieOff"を指定することもできます。複数指定する場合は","で区切って指定します。</td>
500 </tr>
501 <tr>
502 <td>第3パラメータ</td><td>文字コードを指定します。ここで指定した文字コードから"CP932"に変換します。指定できる文字コードはiconv -lコマンドによって確認することができます。変換しなくて良い場合はNONEを指定してください。</td>
503 </tr>
504 <tr>
505 <td>第4パラメータ</td><td>省略した場合は、携帯ページからの変換を意味します。PC用ページからの変換を行う場合は"PC"を第四パラメータに指定します。</td>
506 </tr>
507 <tr>
508 <td>第5パラメータ</td><td>サーバサイドアプリケーションに渡すUser-Agentを指定します。
509 例えば、wordpress等のようにCHTMLを出力するアプリケーションがある場合は、"DoCoMo/1.0/N501i"等適当なUser-Agentを指定することによって、アプリケーションにCHTMLを出力するように指示することができます。
510 ここで指定したUser-AgentはHTML出力時には評価されません。</td>
511 </tr>
512 </tbody>
513 </table>
514 <program title="ex)">
515 ChxjConvertRule "^/chxj.+$/" EngineOn EUC-JP
516 </program>
517 </li>
518 <li>ChxjCookieDir<br />
519 クッキー保存先をdbmにする場合(デフォルト)指定します。
520 クッキーの内容を保存するディレクトリを指定します。
521 指定しない場合は/tmpに保存されます。
522 <program title="ex)">
523 &lt;Location /&gt;
524 ChxjCookieDir /tmp
525 &lt;/Location&gt;
526 </program>
527 詳細は「Cookieシミュレート機能」の項を参照ください。
528 </li>
529 <li>ChxjCookieTimeout<br />
530 クッキーを使用する場合に指定します。クッキーの保持期間を秒単位で指定します。
531 指定しない場合は、1800秒でクッキーデータを破棄します。
532 <program title="ex)">
533 &lt;Location /&gt;
534 ChxjCookieTimeout 10
535 &lt;/Location&gt;
536 </program>
537 詳細は「Cookieシミュレート機能」の項を参照ください。
538 </li>
539 <li>ChxjCookieStoreType<br />
540 クッキー保存先を指定します。指定できるものは以下のとおり。
541 <table title="保存先">
542 <thead>
543 <tr>
544 <td></td><td>意味</td><td>指定例</td>
545 </tr>
546 </thead>
547 <tbody>
548 <tr>
549 <td>"dbm"</td><td>dbmを選択します。</td><td>ChxjCookieStoreType "dbm"</td>
550 </tr>
551 <tr>
552 <td>"mysql"</td><td>mysqlを選択します。<font color="#ff0000">有効にするにはconfigure時にMYSQL COOKIE機能を有効にする必要があります</font></td><td>ChxjCookieStoreType "mysql"</td>
553 </tr>
554 <tr>
555 <td>"memcache"</td><td>memcacheを選択します。<font color="#FF0000">有効にするにはconfigure時にMEMCACHE COOKIE機能を有効にする必要があります</font></td><td>ChxjCookieStoreType "memcache"</td>
556 </tr>
557 </tbody>
558 </table>
559 </li>
560 <li>ChxjCookieMysqlHost<br />
561 MySQLサーバの動作するホストを指定します。
562 <program title="ChxjCookieMysqlHostの例">
563 ChxjCookieMysqlHost "localhost"
564 </program>
565 詳細は「Cookieシミュレート機能」の項を参照ください。
566 </li>
567 <li>ChxjCookieMysqlPort<br />
568 MySQLサーバのポート番号を指定します。
569 <program title="ChxjCookieMysqlPortの例">
570 ChxjCookieMysqlPort 3306
571 </program>
572 詳細は「Cookieシミュレート機能」の項を参照ください。
573 </li>
574 <li>ChxjCookieMysqlDatabase<br />
575 MySQLサーバのデータベース名を指定します。
576 <program title="ChxjCookieMysqlDatabaseの例">
577 ChxjCookieMysqlDatabase "test_db"
578 </program>
579 詳細は「Cookieシミュレート機能」の項を参照ください。
580 </li>
581 <li>ChxjCookieMysqlUsername<br />
582 MySQLサーバに接続する際に使用するユーザ名を指定します。
583 <program title="ChxjCookieMysqlUsernameの例">
584 ChxjCookieMysqlUsername "roottest"
585 </program>
586 詳細は「Cookieシミュレート機能」の項を参照ください。
587 </li>
588 <li>ChxjCookieMysqlPassword<br />
589 MySQLサーバに接続する際に使用するパスワードを指定します。
590 <program title="ChxjCookieMysqlPasswordの例">
591 ChxjCookieMysqlPassword "pwtest"
592 </program>
593 詳細は「Cookieシミュレート機能」の項を参照ください。
594 </li>
595 <li>ChxjCookieMysqlSocketPath<br />
596 MySQLのソケットパスを指定します。
597 <program title="ChxjCookieMysqlSocketPathの例">
598 ChxjCookieMysqlSocketPath "/tmp/mysql.sock"
599 </program>
600 詳細は「Cookieシミュレート機能」の項を参照ください。
601 </li>
602 <li>ChxjCookieMysqlCharset<br />
603 MySQLのエンコードを指定します。
604 <program title="ChxjCookieMysqlCharsetの例">
605 ChxjCookieMysqlCharset "utf8"
606 </program>
607 詳細は「Cookieシミュレート機能」の項を参照ください。
608 </li>
609 <li>ChxjCookieMysqlTablename<br />
610 MySQLのクッキーを保存するテーブル名を指定します。
611 <program title="ChxjCookieMysqlTablenameの例">
612 ChxjCookieMysqlTablename "chxj_cookie"
613 </program>
614 上記のように"chxj_cookie"と指定すると、実際に作成されるテーブルは、chxj_cookieとchxj_cookie_expireテーブルの2つになります。
615 詳細は「Cookieシミュレート機能」の項を参照ください。
616 </li>
617 <li>ChxjCookieMemcacheHost<br />
618 memcachedの動作するホストを指定します。
619 <program title="ChxjCookieMemcacheHostの例">
620 ChxjCookieMemcacheHost "localhost"
621 </program>
622 詳細は「Cookieシミュレート機能」の項を参照ください。
623 </li>
624 <li>ChxjCookieMemcachePort<br />
625 memcachedのポート番号を指定します。
626 <program title="ChxjCookieMemcachePortの例">
627 ChxjCookieMemcachePort 11211
628 </program>
629 詳細は「Cookieシミュレート機能」の項を参照ください。
630 </li>
631 </ol>
632 </subsection>
633 </section>
634 <section title="対応するCHTMLタグ">
635 変換可能なCHTMLタグは以下のとおりです。
636
637 <table title="対応タグ一覧">
638 <thead>
639 <tr><th>タグ </th><th>属性 </th><th>備考</th></tr>
640 </thead>
641 <tbody>
642 <tr><td>&lt;!-- --&gt; </td><td> </td><td>無視します。</td></tr>
643 <tr><td>&lt;A&gt; </td><td> </td><td> </td></tr>
644 <tr><td> </td><td>name </td><td>HDMLでは無視します </td></tr>
645 <tr><td> </td><td>href </td><td> </td></tr>
646 <tr><td> </td><td>accesskey </td><td> </td></tr>
647 <tr><td>&lt;BASE&gt; </td><td> </td><td>HDMLでは無視します</td></tr>
648 <tr><td> </td><td>href </td><td>HDMLでは無視します</td></tr>
649 <tr><td>&lt;BODY&gt; </td><td> </td><td>HDMLでは無視します</td></tr>
650 <tr><td> </td><td>bgcolor </td><td>HDML,CHTML1.0では無視します</td></tr>
651 <tr><td> </td><td>text </td><td>HDML,CHTML1.0では無視します</td></tr>
652 <tr><td> </td><td>link </td><td>HDML,CHTML1.0では無視します</td></tr>
653 <tr><td> </td><td>alink </td><td>HDML,XHTML,CHTML1.0,CHTML2.0,CHTML3.0,JHTML,JXHTMLでは無視します。<strong>0.12.0以降で対応</strong></td></tr>
654 <tr><td> </td><td>vlink </td><td>HDML,XHTML,CHTML1.0,CHTML2.0,CHTML3.0,JHTML,JXHTMLでは無視します。<strong>0.12.0以降で対応</strong></td></tr>
655 <tr><td>&lt;BLINK&gt; </td><td> </td><td>HDML,CHTML1.0では無視します。<strong>0.11.0以降で対応</strong></td></tr>
656 <tr><td>&lt;BLOCKQUOTE&gt;</td><td> </td><td><strong>0.11.0以降で対応</strong> </td></tr>
657 <tr><td>&lt;BR&gt; </td><td> </td><td> </td></tr>
658 <tr><td> </td><td>clear </td><td>HDMLでは無視します。<strong>0.11.0以降で対応</strong></td></tr>
659 <tr><td>&lt;CENTER&gt; </td><td> </td><td> </td></tr>
660 <tr><td>&lt;DIR&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong></td></tr>
661 <tr><td> </td><td>type </td><td>HDML,CHTML1.0,CHTML2.0,CHTML3.0,JHTMLでは無視します。<strong>0.12.0以降で対応</strong></td></tr>
662 <tr><td>&lt;DL&gt; </td><td> </td><td>HDMLでは無視します。<strong>0.11.0以降で対応</strong></td></tr>
663 <tr><td>&lt;DT&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong>。必ずタグは閉じてください</td></tr>
664 <tr><td>&lt;DD&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong>。必ずタグは閉じてください</td></tr>
665 <tr><td>&lt;DIV&gt; </td><td> </td><td> </td></tr>
666 <tr><td> </td><td>align </td><td> </td></tr>
667 <tr><td>&lt;FONT&gt; </td><td> </td><td>HDML,CHTML1.0では無視します</td></tr>
668 <tr><td> </td><td>color </td><td>HDML,CHTML1.0では無視します</td></tr>
669 <tr><td> </td><td>size </td><td><strong>0.12.0以降で対応</strong>。HDML,CHTML1.0,CHTML2.0,CHTML3.0,CHTML4.0では無視します。</td></tr>
670 <tr><td>&lt;FORM&gt; </td><td> </td><td> </td></tr>
671 <tr><td> </td><td>action </td><td> </td></tr>
672 <tr><td> </td><td>method </td><td>HDMLでは無視します </td></tr>
673 <tr><td>&lt;Hn&gt; </td><td> </td><td>HDML,JHTMLではalignのみ有効。<strong>0.11.0以降で対応</strong></td></tr>
674 <tr><td> </td><td>align </td><td>HDML,JHTMLではalignのみ有効。<strong>0.11.0以降で対応</strong></td></tr>
675 <tr><td>&lt;HR&gt; </td><td> </td><td> </td></tr>
676 <tr><td> </td><td>align </td><td>HDMLでは無視します。</td></tr>
677 <tr><td> </td><td>size </td><td>HDMLでは無視します。</td></tr>
678 <tr><td> </td><td>width </td><td>HDMLでは無視します。</td></tr>
679 <tr><td> </td><td>color </td><td>HDML,CHTML1.0,CHTML2.0,CHTML3.0では無視します。<strong>0.12.0以降で対応</strong></td></tr>
680 <tr><td>&lt;HTML&gt; </td><td> </td><td>属性を指定した場合は無視されます</td></tr>
681 <tr><td>&lt;IMG&gt; </td><td> </td><td> </td></tr>
682 <tr><td> </td><td>src </td><td> </td></tr>
683 <tr><td> </td><td>align </td><td> </td></tr>
684 <tr><td> </td><td>width </td><td> </td></tr>
685 <tr><td> </td><td>height </td><td> </td></tr>
686 <tr><td> </td><td>hspace </td><td>JHTMLでは無視します。 </td></tr>
687 <tr><td> </td><td>vspace </td><td>JHTMLでは無視します。 </td></tr>
688 <tr><td> </td><td>alt </td><td> </td></tr>
689 <tr><td>&lt;INPUT&gt; </td><td> </td><td> </td></tr>
690 <tr><td> </td><td>name </td><td> </td></tr>
691 <tr><td> </td><td>type </td><td>text,password,hidden,radio,checkbox,submit,resetに対応 </td></tr>
692 <tr><td> </td><td>value </td><td> </td></tr>
693 <tr><td> </td><td>istyle </td><td> </td></tr>
694 <tr><td> </td><td>size </td><td>HDMLでは無視します。 </td></tr>
695 <tr><td> </td><td>maxlength </td><td> </td></tr>
696 <tr><td> </td><td>checked </td><td>HDMLでは非対応。 </td></tr>
697 <tr><td> </td><td>accesskey </td><td> </td></tr>
698 <tr><td>&lt;LI&gt; </td><td> </td><td> </td></tr>
699 <tr><td> </td><td>type </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0では無視します。</td></tr>
700 <tr><td> </td><td>value </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0では無視します。</td></tr>
701 <tr><td>&lt;MENU&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong>。HDMLでは無視します。</td></tr>
702 <tr><td> </td><td>type </td><td>HDML,CHTML1.0,CHTML2.0,CHTML3.0,JHTMLでは無視します。<strong>0.12.0以降で対応</strong></td></tr>
703 <tr><td>&lt;MARQUEE&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0,XHTMLでは無視します。</td></tr>
704 <tr><td> </td><td>direction </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0,XHTMLでは無視します。</td></tr>
705 <tr><td> </td><td>behavior </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0,XHTMLでは無視します。</td></tr>
706 <tr><td> </td><td>loop </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0,XHTML,JHTMLでは無視します。</td></tr>
707 <tr><td> </td><td>bgcolor </td><td><strong>0.12.0以降で対応</strong>。HDML,CHTML1.0,CHTML2.0,CHTML3.0,CHTML4.0,JHTMLでは無視します。</td></tr>
708 <tr><td>&lt;OL&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong>。HDMLでは無視します。</td></tr>
709 <tr><td> </td><td>type </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0では無視します。</td></tr>
710 <tr><td> </td><td>start </td><td><strong>0.11.0以降で対応</strong>。HDML,CHTML1.0では無視します。</td></tr>
711 <tr><td>&lt;SELECT&gt; </td><td> </td><td> </td></tr>
712 <tr><td> </td><td>name </td><td> </td></tr>
713 <tr><td> </td><td>size </td><td>HDMLでは無視します </td></tr>
714 <tr><td> </td><td>multiple </td><td>HDML,CHTML1.0では無視します。<strong>0.11.0以降で対応</strong></td></tr>
715 <tr><td>&lt;OPTION&gt; </td><td> </td><td>必ずタグは閉じてください</td></tr>
716 <tr><td> </td><td>value </td><td> </td></tr>
717 <tr><td> </td><td>selected </td><td>HDMLでは無視します </td></tr>
718 <tr><td>&lt;P&gt; </td><td> </td><td>HDMLではalignのみ有効。 </td></tr>
719 <tr><td> </td><td>align </td><td><strong>0.11.0以降で対応</strong></td></tr>
720 <tr><td>&lt;PLAINTEXT&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong></td></tr>
721 <tr><td>&lt;PRE&gt; </td><td> </td><td>HDMLは<strong>0.11.0以降で対応</strong></td></tr>
722 <tr><td>&lt;TEXTAREA&gt; </td><td> </td><td> </td></tr>
723 <tr><td> </td><td>name </td><td> </td></tr>
724 <tr><td> </td><td>rows </td><td> </td></tr>
725 <tr><td> </td><td>cols </td><td> </td></tr>
726 <tr><td> </td><td>accesskey </td><td><strong>0.11.0以降で対応</strong></td></tr>
727 <tr><td> </td><td>istyle </td><td><strong>0.11.0以降で対応</strong></td></tr>
728 <tr><td>&lt;META&gt; </td><td> </td><td> </td></tr>
729 <tr><td> </td><td>http-equiv </td><td>CHTML1.0,HDMLでは無視されます</td></tr>
730 <tr><td> </td><td>content </td><td>CHTML1.0,HDMLでは無視されます</td></tr>
731 <tr><td>&lt;HEAD&gt; </td><td> </td><td>属性を指定した場合は無視されます</td></tr>
732 <tr><td>&lt;TITLE&gt; </td><td> </td><td>属性を指定した場合は無視されます</td></tr>
733 <tr><td>&lt;UL&gt; </td><td> </td><td><strong>0.11.0以降で対応</strong></td></tr>
734 <tr><td> </td><td>type </td><td>HDML,CHTML1.0,CHTML2.0,CHTML3.0,JHTMLでは無視します。<strong>0.12.0以降で対応</strong></td></tr>
735 <tr><td>&lt;CHXJ:IF&gt; </td><td>lang </td><td>lang属性には&quot;chtml&quot;,&quot;xhtml&quot;,&quot;hdml&quot;,&quot;jhtml&quot;,&quot;jxhtml&quot;が指定できます。(jxhtmlは<strong>0.12.0以降で対応</strong>) </td></tr>
736 </tbody>
737 </table>
738
739 上記以外のタグは全て無視します。
740
741 </section>
742 <section title="独自拡張タグ">
743 <ol>
744 <li>&lt;CHXJ:IF&gt;<br />
745
746 &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
747 変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
748 例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
749 <br />
750 ex)
751 <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
752 &lt;CHXJ:IF lang="HDML" &gt;
753 &lt;NODISPLAY&gt;
754 &lt;ACTION TYPE=ACCEPT TASK=GOSUB DEST='device:data/dnld?url=abc&amp;name=abc.jpg&amp;size=100&amp;disposition=devjaww&amp;title=test'&gt;
755 &lt;/NODISPLAY&gt;
756 &lt;/CHXJ:IF&gt;
757 </program><br />
758
759 ex)
760 <program title="i-Modeのみ出力したい文書がある場合">
761 &lt;CHXJ:IF lang="chtml" &gt;
762 シークレットコードがどーのこーの。
763 &lt;/CHXJ:IF&gt;
764 </program><br />
765
766 また、lang属性は、複数指定することも可能です。<br />
767
768 <program title="HDML機,J-PHONE機は以下を出力します">
769 &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
770 あなたの携帯は、HDML機かJ-HTML機です。
771 &lt;/CHXJ:IF&gt;
772 </program><br />
773
774 </li>
775 </ol>
776 </section>
777
778 <section title="絵文字について">
779 i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
780 ソースに2byteのバイナリコードを直接書いても、10進参照文字列<note>16進参照文字列には対応していません</note>&amp;#XXX;の形)で書いても、どちらでも変換対象になります。
781 10進参照文字列で書いた場合は、mod_chxjにより、自動で2バイトコードに変換します。
782 <subsection title="絵文字変換定義">
783 絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、auの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、
784 emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、vi等で簡単に定義を
785 変更することができます。
786
787 <br />
788 以下に、emoji.xmlファイルの一部を記します。
789 <program title="emoji.xml">
790 &lt;?xml encoding="Shift_JIS" &gt;
791
792 &lt;emoji&gt;
793 &lt;set&gt;
794 &lt;no&gt;1&lt;/no&gt;
795 &lt;imode&gt;
796 &lt;hex1&gt;f8&lt;/hex1&gt;
797 &lt;hex2&gt;9f&lt;/hex2&gt;
798 &lt;string&gt;&amp;#63647;&lt;/string&gt;
799 &lt;description&gt;&lt;/description&gt;
800 &lt;/imode&gt;
801 &lt;ezweb&gt;
802 &lt;A&gt;44&lt;/A&gt;
803 &lt;B&gt;44&lt;/B&gt;
804 &lt;C&gt;44&lt;/C&gt;
805 &lt;D&gt;44&lt;/D&gt;
806 &lt;/ezweb&gt;
807 &lt;jphone&gt;
808 &lt;string&gt;$Gj&lt;/string&gt;
809 &lt;/jphone&gt;
810 &lt;/set&gt;
811 </program>
812
813 絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
814 1つの絵文字につき、1つのセット(&lt;set&gt;タグから&lt;/set&gt;タグまで)とし、キャリア毎の絵文字を定義しています。
815
816 <ol>
817 <li>&lt;imode&gt;要素<br />
818 まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
819 &lt;imode&gt;要素は、2バイトコード要素(&lt;hex1&gt;&lt;hex2&gt;)と、
820 10進参照文字列要素(&lt;string&gt;)を保持していて、この2つの要素を変換元の値として使用します。
821 アクセスしてきた端末が、i-Mode機であった場合で、かつCHTML中に10進参照文字列が絵文字として書かれている場合には、
822 &lt;hex1&gt;&lt;hex2&gt;要素に定義されている値に置換します。
823 </li>
824 <br />
825 <br />
826 <li>&lt;ezweb&gt;要素<br />
827 アクセスしてきた端末が、au機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
828 &lt;ezweb&gt;要素は、&lt;A&gt;&lt;D&gt;要素を持っていて、それぞれauの絵文字タイプA〜Dに対応していますので、
829 もし、Dタイプの絵文字端末であったなら、&lt;D&gt;要素に定義されている値に変換します。ここで定義されている値は、
830 HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
831 XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
832 </li>
833 <br />
834 <br />
835 <li>&lt;jphone&gt;要素<br />
836 アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、&lt;jphone&gt;要素に定義されている値に変換します。
837 &lt;jphone&gt;要素は、&lt;string&gt;要素を保持していて、ここで定義されている値を直接使用します。
838 </li>
839 </ol><br />
840 emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
841 変換するようになります。
842 </subsection>
843 </section>
844
845
846 <section title="デバイス定義 device_data.xml">
847 mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
848 定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。
849 ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。
850 </section>
851
852
853 <section title="イメージ画像変換機能">
854 mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
855 画像のサイズ(縦X横)も、端末の画面サイズに合わせて変換します。
856 画像のサイズ(バイト数)については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
857 大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
858 <br />
859 それぞれのタグで指定する場合には、ファイル名の拡張子(.jpgや.gif等)をはずした形で指定します。<br />
860 本機能には3つのモードが存在します。そのモードを以下に記します。
861
862 <subsection title="サムネイルモード">
863 端末側画面サイズの約3分の1程度のサイズ(縦X横)に画像を縮小表示します。
864 <program title="サムネイルモード 使用例">
865 &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
866 </program>
867 </subsection>
868 <subsection title="壁紙モード">
869 端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
870 <program title="壁紙モード 使用例">
871 &lt;IMG SRC="/img/logo?Mode=WP"&gt;
872 </program>
873 </subsection>
874 <subsection title="EzGetモード">
875 壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
876 <program title="EzGetモード 使用例">
877 &lt;A HREF="/img/logo?Mode=EzGet"&gt;
878 </program>
879 </subsection>
880 <subsection title="その他の機能">
881 モードの他に、画像サイズ(縦X横)を直接指定することも可能です。
882 <b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
883 <ol>
884 <li>wパラメータ<br />
885 横幅を指定します。
886 </li>
887 <li>hパラメータ<br />
888 縦幅を指定します。
889 </li>
890 <program title="w/hパラメータ 使用例">
891 &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
892 </program>
893 <li>User-Agentパラメータ(uaパラメータ)<br />
894 User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
895 このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
896 640x480を元に画像サイズを算出します。
897 </li>
898 </ol>
899 </subsection>
900 上記全てのモード、パラメータはGETリクエストとしてのみ使用できます。
901 </section>
902
903 <section title="QRコード出力機能">
904 <subsection title="QRコード出力ハンドラの登録">
905 QRコード出力機能を使用するには、QRコードハンドラを登録します。
906 <note>QRコードは(株)デンソーウェーブの登録商標です。</note>
907 httpd.confに以下の記述を追加します。
908 <program title="httpd.conf">
909 AddHandler chxj-qrcode .qrc
910 </program>
911 なお、ハンドラを登録しないでも、出力フィルターを経由させることで、QRコードを出力させることも可能です。(※QRコードの動的出力を参照)
912 </subsection>
913 <subsection title="QRコードソースファイルの設置">
914 ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
915 <program title="例:a.qrc">
916 &lt;?xml version=1.0 ?&gt;
917
918 &lt;qrcode&gt;
919 &lt;version&gt;13&lt;/version&gt;
920 &lt;level&gt;H&lt;/level&gt;
921 &lt;mode&gt;8bit&lt;/mode&gt;
922 &lt;size&gt;1&lt;/size&gt;
923 &lt;data&gt;テストデータです&lt;/data&gt;
924 &lt;/qrcode&gt;
925 </program>
926 .qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
927 <ol>
928 <li>versionタグ
929 versionタグは出力するQRコードの生成に利用するバージョンを指定します。
930 使用できるバージョンは、1〜40までの40種類です。
931 </li>
932 <li>levelタグ
933 levelタグは出力するQRコードの生成に利用する誤り検出レベルを指定します。
934  使用できるレベルは、L、Q、M、Hの4つです。
935 </li>
936 <li>modeタグ
937 modeタグは出力するQRコードの生成に利用するモードを指定します。
938 使用できるモードは、NUM(数字モード)ALPHA(英数字モード)8BIT(8ビットバイトモード)KANJI(漢字モード)です。
939 </li>
940 <li>sizeタグ
941 sizeタグは1モジュールを何ピクセルであらわすかを指定します。
942 0を指定した場合は、4を指定した場合と同じ動作をします。
943  使用できるサイズは、0〜20までです。
944 </li>
945 <li>dataタグ
946 dataタグは、QRコードに出力するデータを指定します。改行した場合は、改行文字もQRコード内に符号化されます。
947 </li>
948 </ol>
949 </subsection>
950 <subsection title="QRコードの動的出力機能">
951 プログラム等を使用し、動的にQRコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればOKです。つまり、ChxjConvertRuleディレクティブで"EngineOn"と指定したURIが指すディレクトリに設置すれば良いということです。mod_chxj内部で、Content-Typeがtext/xmlの場合、QRCode用のファイルであるかどうかを一度読み込んで判断するので、Content-Typeには、text/xmlを設定してください。
952
953 <program title="phpでQRコードを動的に出力する例">
954 &lt;php
955 $version = $_POST["version"];
956 $level = $_POST["level"];
957 $mode = $_POST["mode"];
958 $size = $_POST["size"];
959 $data = $_POST["data"];
960
961 header("Content-Type: text/xml; charset=Shift_JIS");
962
963 echo "&lt;qrcode&gt;\n";
964 echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
965 echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
966 echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
967 echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
968 echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
969 echo "&lt;/qrcode&gt;\n";
970 &gt;
971 </program>
972 そして、上記のコードを、mod_chxj変換エンジンが処理するはずであるところに設置すれば完了です。
973
974 </subsection>
975 </section>
976 <section title="Cookieシミュレート機能">
977 <subsection title="Cookieシミュレート機能">
978 Cookieを受け付けない(無視する)端末のためにCookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要があります。ChxjConvertRuleディレクティブの第2パラメータにCookieOnを指定します。
979
980 <program title="Cookieシミュレート機能を有効にする例">
981 ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"
982 </program>
983
984 </subsection>
985 <subsection title="One-Time ID">
986 Cookieシミュレートでは、aタグ、imgタグ、formタグのURL部にOne-Time IDを埋め込むことで実現します。
987 そのため、ユーザがブラウザの戻るボタン等で戻った場合はCookieを取得できなくなります。
988 One-Time IDを使用する必要が無い場合、またはOne-Time IDを使用したくない場合には、
989 CookieLazyModeを使用することで毎回同一IDを発行させることができます。
990 </subsection>
991 <subsection title="Cookieの保存場所">
992 Cookieの内容はサーバ側に保存されます。
993 保存先にはdbm、memcached、mysqlが選択できます。<br />
994 <font color="#ff0000">注意) memcached、mysqlを保存先に選択する場合はconfigure時にそれぞれ指定する必要があります</font><br />
995 保存先の指定にはChxjCookieStoreTypeディレクティブを使用します。
996 <program title="ChxjCookieStoreTypeでDBMを指定した例">
997 ChxjCookieStoreType "dbm"
998 </program>
999 <program title="ChxjCookieStoreTypeでMySQLを指定した例">
1000 ChxjCookieStoreType "mysql"
1001 </program>
1002 <program title="ChxjCookieStoreTypeでmemcacheを指定した例">
1003 ChxjCookieStoreType "memcache"
1004 </program>
1005 上記ChxjCookieStoreTypeが指定されない場合はdbmが選択されます。
1006 <br />
1007
1008 dbmを使用する場合は、ChxjCookieDirディレクティブを指定し、保存ディレクトリを指定します。指定しなかった場合は/tmpに保存されます。
1009
1010 <program title="ChxjCookieDirの例">
1011 ChxjCookieDir /var/abc
1012 </program>
1013
1014 DBMの代わりにMySQLやmemcachedを指定することもできます。その際は、ChxjCookieDirは指定する必要はありません。
1015 MySQLを使用するには、configure時にMySQL COOKIE機能を有効にして、コンパイルする必要があります。<note>Buildの項参照</note>
1016 memcachedを使用するには、configure時にMEMCACHE COOKIE機能を有効にして、コンパイルする必要があります。<note>Buildの項参照</note>
1017
1018 MySQLを使用する場合にはChxjCookieStoreTypeディレクティブのほかに、以下のディレクティブを指定する必要もあります。
1019 <ol>
1020 <li>ChxjCookieMysqlHost<br />
1021 MySQLサーバの動作するホストを指定します。
1022 <program title="ChxjCookieMysqlHostの例">
1023 ChxjCookieMysqlHost "localhost"
1024 </program>
1025 </li>
1026 <li>ChxjCookieMysqlPort<br />
1027 MySQLサーバのポート番号を指定します。
1028 <program title="ChxjCookieMysqlPortの例">
1029 ChxjCookieMysqlPort 3306
1030 </program>
1031 </li>
1032 <li>ChxjCookieMysqlDatabase<br />
1033 MySQLサーバのデータベース名を指定します。
1034 <program title="ChxjCookieMysqlDatabaseの例">
1035 ChxjCookieMysqlDatabase "test_db"
1036 </program>
1037 </li>
1038 <li>ChxjCookieMysqlUsername<br />
1039 MySQLサーバに接続する際に使用するユーザ名を指定します。
1040 <program title="ChxjCookieMysqlUsernameの例">
1041 ChxjCookieMysqlUsername "roottest"
1042 </program>
1043 </li>
1044 <li>ChxjCookieMysqlPassword<br />
1045 MySQLサーバに接続する際に使用するパスワードを指定します。
1046 <program title="ChxjCookieMysqlPasswordの例">
1047 ChxjCookieMysqlPassword "pwtest"
1048 </program>
1049 </li>
1050 <li>ChxjCookieMysqlSocketPath<br />
1051 MySQLのソケットパスを指定します。
1052 <program title="ChxjCookieMysqlSocketPathの例">
1053 ChxjCookieMysqlSocketPath "/tmp/mysql.sock"
1054 </program>
1055 </li>
1056 <li>ChxjCookieMysqlCharset<br />
1057 MySQLのエンコードを指定します。
1058 <program title="ChxjCookieMysqlCharsetの例">
1059 ChxjCookieMysqlCharset "utf8"
1060 </program>
1061 </li>
1062 <li>ChxjCookieMysqlTablename<br />
1063 MySQLのクッキーを保存するテーブル名を指定します。
1064 <program title="ChxjCookieMysqlTablenameの例">
1065 ChxjCookieMysqlTablename "chxj_cookie"
1066 </program>
1067 上記のように"chxj_cookie"と指定すると、実際に作成されるテーブルは、chxj_cookieとchxj_cookie_expireテーブルの2つになります。
1068 </li>
1069 </ol>
1070
1071 memcachedを使用する場合にはChxjCookieStoreTypeディレクティブの他に以下のディレクティブを指定する必要もあります。
1072 <ol>
1073 <li>ChxjCookieMemcacheHost<br />
1074 memcachedの動作するホストを指定します。
1075 <program title="ChxjCookieMemcacheHostの例">
1076 ChxjCookieMemcacheHost "localhost"
1077 </program>
1078 </li>
1079 <li>ChxjCookieMemcachePort<br />
1080 memcachedのポート番号を指定します。
1081 <program title="ChxjCookieMemcachePortの例">
1082 ChxjCookieMemcachePort 11211
1083 </program>
1084 </li>
1085 </ol>
1086 </subsection>
1087 <subsection title="Cookieの保持期間">
1088 ChxjCookieTimeoutディレクティブで保持期間を指定することができます。指定しなかった場合は1800秒でサーバに保存されているCookieは削除されます。
1089 <program title="ChxjCookieTimeoutの例">
1090 &lt;Location /&gt;
1091 ChxjCookieTimeout 10
1092 &lt;/Location&gt;
1093 </program>
1094 上記の例は、10秒でタイムアウト(サーバから削除)するように指定しています。
1095 </subsection>
1096 <subsection title="CookieLazyMode">
1097 ChxjCookieLazyModeディレクティブで"true"を指定するとOne-Time IDを使用しないようにすることができます。
1098 Cookie用のIDは毎回同一のIDが割り振られます。
1099 以下にCookieLazyModeの例を記します。
1100 <program title="ChxjCookieLazyModeの例">
1101 ChxjCookieLazyMode true
1102 </program>
1103 true以外を指定すると通常のOne-Time IDモードになります。
1104 </subsection>
1105 </section>
1106
1107
1108
1109 <section title="Refererシミュレート機能">
1110 <subsection title="Refererシミュレート機能">
1111 DoCoMo端末などのRefererに対応していない機種のためにRefererシミュレート機能を提供します。
1112 本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります。
1113 </subsection>
1114 </section>
1115 </body>
1116 </doc>

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26