OSDN Git Service

* Added Features.
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sun, 23 Mar 2008 14:15:52 +0000 (14:15 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sun, 23 Mar 2008 14:15:52 +0000 (14:15 +0000)
    - using memcached for saving cookie.

git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/trunk@1905 1a406e8e-add9-4483-a2c8-d8cac5b7c224

configure
configure.ac
doc/modchxj.html
doc/modchxj.sdoc
include/chxj_memcache.h [new file with mode: 0644]
include/mod_chxj.h
src/Makefile.am
src/Makefile.in
src/chxj_cookie.c
src/chxj_memcache.c [new file with mode: 0644]
src/mod_chxj.c

index e2e552c..a64414d 100755 (executable)
--- a/configure
+++ b/configure
@@ -1491,6 +1491,7 @@ Optional Features:
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --enable-img-conv-f      Please specify it when you change the file name of the image being written in the
 source by the automatic operation.
+  --enable-memcache-cookie Please specify it when you save Cookie in memcached.
   --enable-mysql-cookie    Please specify it when you save Cookie in MySQL.
   --enable-dump-log   When the log of conversion is output, it specifies it with the output file.
 
@@ -1505,6 +1506,8 @@ Optional Packages:
   --with-apxs=ARG Path of apxs program file.
   --with-apr-config=ARG  Path of apr-config program file.
   --with-apu-config=ARG  Path of apu-config program file.
+  --with-apr-memcache-header Path of "apr_memcache.h"
+  --with-apr-memcache-lib-dir Path of "libapr_memcache.so"
   --with-mysql-header=ARG  Path of "mysql.h"
   --with-mysql-lib-dir=ARG Path of libmysqlclient
 
@@ -5465,7 +5468,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5468 "configure"' > conftest.$ac_ext
+  echo '#line 5471 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7961,11 +7964,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7964: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7967: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7968: \$? = $ac_status" >&5
+   echo "$as_me:7971: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8229,11 +8232,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8232: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8235: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8236: \$? = $ac_status" >&5
+   echo "$as_me:8239: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8333,11 +8336,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8336: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8339: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8340: \$? = $ac_status" >&5
+   echo "$as_me:8343: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10630,7 +10633,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10633 "configure"
+#line 10636 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10730,7 +10733,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10733 "configure"
+#line 10736 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13066,11 +13069,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13069: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13072: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13073: \$? = $ac_status" >&5
+   echo "$as_me:13076: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13170,11 +13173,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13173: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13176: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13177: \$? = $ac_status" >&5
+   echo "$as_me:13180: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14731,11 +14734,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14734: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14737: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14738: \$? = $ac_status" >&5
+   echo "$as_me:14741: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14835,11 +14838,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14838: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14841: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14842: \$? = $ac_status" >&5
+   echo "$as_me:14845: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -17022,11 +17025,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17025: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17028: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17029: \$? = $ac_status" >&5
+   echo "$as_me:17032: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17290,11 +17293,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17293: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17296: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:17297: \$? = $ac_status" >&5
+   echo "$as_me:17300: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -17394,11 +17397,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17397: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17400: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:17401: \$? = $ac_status" >&5
+   echo "$as_me:17404: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -20203,6 +20206,48 @@ else
 fi
 
 
+# Check whether --enable-memcache-cookie was given.
+if test "${enable_memcache_cookie+set}" = set; then
+  enableval=$enable_memcache_cookie;
+fi
+
+
+# Check whether --with-apr-memcache-header was given.
+if test "${with_apr_memcache_header+set}" = set; then
+  withval=$with_apr_memcache_header;
+fi
+
+
+# Check whether --with-apr-memcache-lib-dir was given.
+if test "${with_apr_memcache_lib_dir+set}" = set; then
+  withval=$with_apr_memcache_lib_dir;
+fi
+
+if test "x$enable_memcache_cookie" = "xyes" ; then
+        if test "x$with_apr_memcache_header" = "x" -o "x$with_apr_memcache_header" = "xyes" ; then
+    { { echo "$as_me:$LINENO: error:
+Please specify the --with-apr-memcache-header And, please specify the place of the \"apr_memcache.h\" header file directory.
+" >&5
+echo "$as_me: error:
+Please specify the --with-apr-memcache-header And, please specify the place of the \"apr_memcache.h\" header file directory.
+" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  if test "x$with_apr_memcache_lib_dir" = "x" -o "x$with_apr_memcache_lib_dir" = "xyes" ; then
+    { { echo "$as_me:$LINENO: error:
+Please specify the --with-apr-memcache-lib-dir And, please specify the place of apr-memcache library directory.
+" >&5
+echo "$as_me: error:
+Please specify the --with-apr-memcache-lib-dir And, please specify the place of apr-memcache library directory.
+" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  MEMCACHE_COOKIE_DEFS="-DUSE_MEMCACHE_COOKIE -I${with_apr_memcache_header}"
+  MEMCACHE_COOKIE_LIBS="-L${with_apr_memcache_lib_dir} -lapr_memcache"
+else
+        MEMCACHE_COOKIE_DEFS=""
+  MEMCACHE_COOKIE_LIBS=""
+fi
 # Check whether --enable-mysql-cookie was given.
 if test "${enable_mysql_cookie+set}" = set; then
   enableval=$enable_mysql_cookie;
@@ -20673,14 +20718,17 @@ LIBS="${LIBS} `${WAND_CONFIG} --ldflags` `${WAND_CONFIG} --libs | sed -e s/-ldps
 LIBS="${LIBS} `${APR_CONFIG} --ldflags` `${APR_CONFIG} --libs` "
 LIBS="${LIBS} `${APU_CONFIG} --ldflags` `${APU_CONFIG} --libs` "
 LIBS="${LIBS} ${MYSQL_COOKIE_LIBS}"
+LIBS="${LIBS} ${MEMCACHE_COOKIE_LIBS}"
 CFLAGS="${CFLAGS} `${WAND_CONFIG} --cppflags` `${WAND_CONFIG} --cflags`"
 CFLAGS="${CFLAGS} `${APR_CONFIG} --includes` `${APR_CONFIG} --cflags` `${APR_CONFIG} --cppflags`"
 CFLAGS="${CFLAGS} `${APU_CONFIG} --includes`"
 CFLAGS="${CFLAGS} -I${with_apache_header}"
 CFLAGS="${CFLAGS} ${MYSQL_COOKIE_DEFS}"
+CFLAGS="${CFLAGS} ${MEMCACHE_COOKIE_DEFS}"
 CPPFLAGS="${CPPFLAGS} `${APR_CONFIG} --includes` "
 CPPFLAGS="${CPPFLAGS} -I${with_apache_header}"
 CPPFLAGS="${CPPFLAGS} ${MYSQL_COOKIE_DEFS}"
+CPPFLAGS="${CPPFLAGS} ${MEMCACHE_COOKIE_DEFS}"
 
 
 # Checks for header files.
index cbda940..dcafeb6 100644 (file)
@@ -84,6 +84,37 @@ fi
 
 dnl ==================================================
 dnl
+dnl SAVE COOKIE to memcached Mode
+dnl
+dnl ==================================================
+AC_ARG_ENABLE(memcache-cookie, [  --enable-memcache-cookie Please specify it when you save Cookie in memcached. ])
+AC_ARG_WITH(apr-memcache-header,   [  --with-apr-memcache-header Path of "apr_memcache.h"])
+AC_ARG_WITH(apr-memcache-lib-dir,   [  --with-apr-memcache-lib-dir Path of "libapr_memcache.so"])
+if test "x$enable_memcache_cookie" = "xyes" ; then
+  dnl ======================================
+  dnl use MEMCACHE COOKIE
+  dnl ======================================
+  if test "x$with_apr_memcache_header" = "x" -o "x$with_apr_memcache_header" = "xyes" ; then
+    AC_MSG_ERROR([
+Please specify the --with-apr-memcache-header And, please specify the place of the "apr_memcache.h" header file directory. 
+])
+  fi
+  if test "x$with_apr_memcache_lib_dir" = "x" -o "x$with_apr_memcache_lib_dir" = "xyes" ; then
+    AC_MSG_ERROR([
+Please specify the --with-apr-memcache-lib-dir And, please specify the place of apr-memcache library directory. 
+])
+  fi
+  MEMCACHE_COOKIE_DEFS="-DUSE_MEMCACHE_COOKIE -I${with_apr_memcache_header}"
+  MEMCACHE_COOKIE_LIBS="-L${with_apr_memcache_lib_dir} -lapr_memcache"
+else
+  dnl ======================================
+  dnl no use MEMCACHE COOKIE
+  dnl ======================================
+  MEMCACHE_COOKIE_DEFS=""
+  MEMCACHE_COOKIE_LIBS=""
+fi
+dnl ==================================================
+dnl
 dnl SAVE COOKIE to MySQL Mode
 dnl
 dnl ==================================================
@@ -208,14 +239,17 @@ LIBS="${LIBS} `${WAND_CONFIG} --ldflags` `${WAND_CONFIG} --libs | sed -e s/-ldps
 LIBS="${LIBS} `${APR_CONFIG} --ldflags` `${APR_CONFIG} --libs` "
 LIBS="${LIBS} `${APU_CONFIG} --ldflags` `${APU_CONFIG} --libs` "
 LIBS="${LIBS} ${MYSQL_COOKIE_LIBS}"
+LIBS="${LIBS} ${MEMCACHE_COOKIE_LIBS}"
 CFLAGS="${CFLAGS} `${WAND_CONFIG} --cppflags` `${WAND_CONFIG} --cflags`"
 CFLAGS="${CFLAGS} `${APR_CONFIG} --includes` `${APR_CONFIG} --cflags` `${APR_CONFIG} --cppflags`"
 CFLAGS="${CFLAGS} `${APU_CONFIG} --includes`"
 CFLAGS="${CFLAGS} -I${with_apache_header}"
 CFLAGS="${CFLAGS} ${MYSQL_COOKIE_DEFS}"
+CFLAGS="${CFLAGS} ${MEMCACHE_COOKIE_DEFS}"
 CPPFLAGS="${CPPFLAGS} `${APR_CONFIG} --includes` "
 CPPFLAGS="${CPPFLAGS} -I${with_apache_header}"
 CPPFLAGS="${CPPFLAGS} ${MYSQL_COOKIE_DEFS}"
+CPPFLAGS="${CPPFLAGS} ${MEMCACHE_COOKIE_DEFS}"
 
 
 # Checks for header files.
index 79ea42e..f6a3722 100644 (file)
@@ -720,55 +720,61 @@ function setOHPHandler() {
 <li> <a href="#doc1_141" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">--with-mysql-header</a>
 <li> <a href="#doc1_147" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">--with-mysql-lib-dir</a>
 </ul>
+<li> <a href="#doc1_154" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82Åmemcached\82ð\8eg\97p\82·\82é\8fê\8d\87</a>
+<ul>
+<li> <a href="#doc1_156" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">--enable-memcache-cookie</a>
+<li> <a href="#doc1_162" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">--with-apr-memcache-header</a>
+<li> <a href="#doc1_168" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">--with-apr-memcache-lib-dir</a>
+</ul>
 </ul>
-<li> <a href="#doc1_155" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Configuration</a>
+<li> <a href="#doc1_176" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Configuration</a>
 <ul>
-<li> <a href="#doc1_157" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">html\83t\83@\83C\83\8b\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</a>
-<li> <a href="#doc1_172" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">php\93\99\82Ì\8fo\97Í\8c\8b\89Ê\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</a>
-<li> <a href="#doc1_187" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">xoops\82ð\8eg\97p\82µ\81A\8a\8e\82Âwordpress\81Abwiki\82ð\8eg\97p\82µ\82Ä\82¢\82é\8fê\8d\87</a>
-<li> <a href="#doc1_202" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\89æ\91\9c\8e©\93®\95Ï\8a·\8b@\94\\82ð\8eg\97p\82·\82é\8fê\8d\87</a>
-<li> <a href="#doc1_279" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\95\8e\9a\83R\81[\83h\82ð\95Ï\8a·\82µ\82½\82¢\8fê\8d\87</a>
-<li> <a href="#doc1_323" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83f\83B\83\8c\83N\83e\83B\83u</a>
+<li> <a href="#doc1_178" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">html\83t\83@\83C\83\8b\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</a>
+<li> <a href="#doc1_193" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">php\93\99\82Ì\8fo\97Í\8c\8b\89Ê\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</a>
+<li> <a href="#doc1_208" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">xoops\82ð\8eg\97p\82µ\81A\8a\8e\82Âwordpress\81Abwiki\82ð\8eg\97p\82µ\82Ä\82¢\82é\8fê\8d\87</a>
+<li> <a href="#doc1_223" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\89æ\91\9c\8e©\93®\95Ï\8a·\8b@\94\\82ð\8eg\97p\82·\82é\8fê\8d\87</a>
+<li> <a href="#doc1_300" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\95\8e\9a\83R\81[\83h\82ð\95Ï\8a·\82µ\82½\82¢\8fê\8d\87</a>
+<li> <a href="#doc1_344" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83f\83B\83\8c\83N\83e\83B\83u</a>
 </ul>
-<li> <a href="#doc1_448" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\91Î\89\9e\82·\82éCHTML\83^\83O</a>
-<li> <a href="#doc1_1231" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\93Æ\8e©\8ag\92£\83^\83O</a>
-<li> <a href="#doc1_1268" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\95\8e\9a\83R\81[\83h\82É\82Â\82¢\82Ä</a>
-<li> <a href="#doc1_1297" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\8aG\95\8e\9a\82É\82Â\82¢\82Ä</a>
+<li> <a href="#doc1_469" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\91Î\89\9e\82·\82éCHTML\83^\83O</a>
+<li> <a href="#doc1_1252" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\93Æ\8e©\8ag\92£\83^\83O</a>
+<li> <a href="#doc1_1289" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\95\8e\9a\83R\81[\83h\82É\82Â\82¢\82Ä</a>
+<li> <a href="#doc1_1318" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\8aG\95\8e\9a\82É\82Â\82¢\82Ä</a>
 <ul>
-<li> <a href="#doc1_1302" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\8aG\95\8e\9a\95Ï\8a·\92è\8b`</a>
+<li> <a href="#doc1_1323" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\8aG\95\8e\9a\95Ï\8a·\92è\8b`</a>
 <ul>
-<li> <a href="#doc1_1309" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">DoCoMo\81¨DoCoMo/au/SoftBank\95Ï\8a·\92è\8b`</a>
-<li> <a href="#doc1_1356" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">au\81¨DoCoMo\95Ï\8a·\92è\8b`</a>
-<li> <a href="#doc1_1399" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">SoftBank\81¨DoCoMo\95Ï\8a·\92è\8b`</a>
+<li> <a href="#doc1_1330" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">DoCoMo\81¨DoCoMo/au/SoftBank\95Ï\8a·\92è\8b`</a>
+<li> <a href="#doc1_1377" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">au\81¨DoCoMo\95Ï\8a·\92è\8b`</a>
+<li> <a href="#doc1_1420" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">SoftBank\81¨DoCoMo\95Ï\8a·\92è\8b`</a>
 </ul>
 </ul>
-<li> <a href="#doc1_1450" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83f\83o\83C\83X\92è\8b` device_data.xml</a>
+<li> <a href="#doc1_1471" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83f\83o\83C\83X\92è\8b` device_data.xml</a>
 <ul>
-<li> <a href="#doc1_1454" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83f\83o\83C\83X\92è\8b`\82Ì\97v\91f</a>
+<li> <a href="#doc1_1475" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83f\83o\83C\83X\92è\8b`\82Ì\97v\91f</a>
 </ul>
-<li> <a href="#doc1_1864" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83C\83\81\81[\83W\89æ\91\9c\95Ï\8a·\8b@\94\</a>
+<li> <a href="#doc1_1885" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83C\83\81\81[\83W\89æ\91\9c\95Ï\8a·\8b@\94\</a>
 <ul>
-<li> <a href="#doc1_1873" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83T\83\80\83l\83C\83\8b\83\82\81[\83h</a>
-<li> <a href="#doc1_1879" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\95Ç\8e\86\83\82\81[\83h</a>
-<li> <a href="#doc1_1885" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">EzGet\83\82\81[\83h</a>
-<li> <a href="#doc1_1891" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82»\82Ì\91¼\82Ì\8b@\94\</a>
+<li> <a href="#doc1_1894" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\83T\83\80\83l\83C\83\8b\83\82\81[\83h</a>
+<li> <a href="#doc1_1900" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\95Ç\8e\86\83\82\81[\83h</a>
+<li> <a href="#doc1_1906" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">EzGet\83\82\81[\83h</a>
+<li> <a href="#doc1_1912" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82»\82Ì\91¼\82Ì\8b@\94\</a>
 </ul>
-<li> <a href="#doc1_1922" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\8fo\97Í\8b@\94\</a>
+<li> <a href="#doc1_1943" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\8fo\97Í\8b@\94\</a>
 <ul>
-<li> <a href="#doc1_1924" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\8fo\97Í\83n\83\93\83h\83\89\82Ì\93o\98^</a>
-<li> <a href="#doc1_1930" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\83\\81[\83X\83t\83@\83C\83\8b\82Ì\90Ý\92u</a>
-<li> <a href="#doc1_1954" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\82Ì\93®\93I\8fo\97Í\8b@\94\</a>
+<li> <a href="#doc1_1945" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\8fo\97Í\83n\83\93\83h\83\89\82Ì\93o\98^</a>
+<li> <a href="#doc1_1951" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\83\\81[\83X\83t\83@\83C\83\8b\82Ì\90Ý\92u</a>
+<li> <a href="#doc1_1975" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">\82p\82q\83R\81[\83h\82Ì\93®\93I\8fo\97Í\8b@\94\</a>
 </ul>
-<li> <a href="#doc1_1961" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
+<li> <a href="#doc1_1982" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
 <ul>
-<li> <a href="#doc1_1963" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
-<li> <a href="#doc1_1969" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">One-Time ID</a>
-<li> <a href="#doc1_1972" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\82Ì\95Û\91\8fê\8f\8a</a>
-<li> <a href="#doc1_2048" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\82Ì\95Û\8e\9d\8aú\8aÔ</a>
+<li> <a href="#doc1_1984" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
+<li> <a href="#doc1_1990" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">One-Time ID</a>
+<li> <a href="#doc1_1993" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\82Ì\95Û\91\8fê\8f\8a</a>
+<li> <a href="#doc1_2091" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Cookie\82Ì\95Û\8e\9d\8aú\8aÔ</a>
 </ul>
-<li> <a href="#doc1_2055" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
+<li> <a href="#doc1_2098" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
 <ul>
-<li> <a href="#doc1_2057" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
+<li> <a href="#doc1_2100" onmouseover="hilightSelflink(this)" onmouseout="normal(this)">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</a>
 </ul>
 </ul>
 </div>
@@ -940,17 +946,60 @@ $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql \
 </pre>
 
 
-<h2 id="doc1_155">Configuration</h2>
+<h3 id="doc1_154">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82Åmemcached\82ð\8eg\97p\82·\82é\8fê\8d\87</h3>
+
+
+<h3 id="doc1_156">--enable-memcache-cookie</h3>
+
+<p class="first_ja">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82ð\8eg\97p\82·\82é\8dÛ\81A\95Û\91\90æ\82ð\83f\83t\83H\83\8b\83g\82ÌDBM\82Å\82Í\96³\82­\81Amemcached\82É\95Û\91\82·\82é\82æ\82¤\82É\82µ\82Ü\82·\81BDefault\82ÌDBM\82Å\97Ç\82¢\8fê\8d\87\82â\81ACookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82ð\8eg\97p\82µ\82È\82¢\8fê\8d\87\82Í\8ew\92è\82·\82é\95K\97v\82Í\82 \82è\82Ü\82¹\82ñ\81B\95Ê\93rmemcached\82ð\97p\88Ó\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\82Ü\82½\81A\96{\83I\83v\83V\83\87\83\93\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\81A--with-apr-memcache-header\81A--with-apr-memcache-lib-dir\82à\8ew\92è\82µ\82Ü\82·\81B\82±\82ê\82Íapr_memcache\82Ì\83w\83b\83_\82Æ\83\89\83C\83u\83\89\83\8a\82ª\95K\97v\82È\82±\82Æ\82ð\88Ó\96¡\82µ\82Ü\82·\81B</p>
+
+<div id="doc1_158" class="caption">--enable-memcache-cookie</div>
+<pre class="program" style="margin-top:0">
+$ ./configure --enable-memcache-cookie \
+    --with-apr-memcache-header=/usr/include/apr-memcache0 \
+    --with-apr-memcache-lib-dir=/usr/lib
+      
+</pre>
+
+<p>\8fã\8bL\82Í\81A/usr/include/apr_memcache0\88È\89º\82Éapr-memcache\97p\82Ì\83w\83b\83_\82ª\82 \82è\81A/usr/lib\88È\89º\82Élibapr_memcache.so\82ª\82 \82é\8fê\8d\87\82Ì\97á\82Å\82·\81B</p>
+
+<h3 id="doc1_162">--with-apr-memcache-header</h3>
+
+<p class="first_ja">--enable-memcache-cookie\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\95K\90{\82Å\82·\81Bapr-memcache\82Ì\83w\83b\83_\83t\83@\83C\83\8b\82Ì\8fê\8f\8a\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+
+<div id="doc1_164" class="caption">--with-apr-memcache-header</div>
+<pre class="program" style="margin-top:0">
+$ ./configure --enable-memcache-cookie \
+    --with-apr-memcache-header=/usr/include/apr_memcache0 \
+    --with-apr-memcache-lib-dir=/usr/lib
+      
+</pre>
+
+
+<h3 id="doc1_168">--with-apr-memcache-lib-dir</h3>
+
+<p class="first_ja">--enable-mysql-cookie\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\95K\90{\82Å\82·\81Bapr-memcache\82Ì\83\89\83C\83u\83\89\83\8a\81Alibapr_memcache.so\82Ì\90Ý\92u\82³\82ê\82Ä\82¢\82é\83f\83B\83\8c\83N\83g\83\8a\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
+
+<div id="doc1_170" class="caption">--with-apr-memcache-lib-dir</div>
+<pre class="program" style="margin-top:0">
+$ ./configure --enable-memcache-cookie \
+    --with-apr-memcache-header=/usr/include/apr_memcache0 \
+    --with-apr-memcache-lib-dir=/usr/lib
+      
+</pre>
+
+
+<h2 id="doc1_176">Configuration</h2>
 
 <p class="first_ja">\88È\89º\82Ímod_chxj\82ª/usr/lib/apache2/modules\83f\83B\83\8c\83N\83g\83\8a\94z\89º\82É\90Ý\92u\82³\82ê\82½\82à\82Ì\82Æ\82µ\82Ä\82¢\82Ü\82·</p>
 
-<h3 id="doc1_157">html\83t\83@\83C\83\8b\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</h3>
+<h3 id="doc1_178">html\83t\83@\83C\83\8b\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</h3>
 
 <p class="first_ja">\97á\82Æ\82µ\82Ä\81ALocation\82ª&quot;/chxj&quot;\88È\89º\82Ì\82à\82Ì\82Í\91S\82Ä\95Ï\8a·\82·\82é\8fê\8d\87\82ð\90à\96¾\82µ\82Ü\82·\81B</p>
 
 <ol>
 <li> httpd.conf\82É\88È\89º\82ð\92Ç\89Á\82µ\82Ü\82·\81B
-<div id="doc1_163" class="caption">httpd.conf</div>
+<div id="doc1_184" class="caption">httpd.conf</div>
 <pre class="program" style="margin-top:0">
 #====================================================================================
 # \83\82\83W\83\85\81[\83\8b\82ðApache2.0\82É\83\8d\81[\83h
@@ -979,12 +1028,12 @@ ChxjConvertRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;NONE&quot;
 <li> apache\82Ì\8dÄ\8bN\93®\81B</ol>
 
 
-<h3 id="doc1_172">php\93\99\82Ì\8fo\97Í\8c\8b\89Ê\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</h3>
+<h3 id="doc1_193">php\93\99\82Ì\8fo\97Í\8c\8b\89Ê\82ª\95Ï\8a·\91Î\8fÛ\82Ì\8fê\8d\87</h3>
 
 
 <ol>
 <li> httpd.conf\82É\88È\89º\82ð\92Ç\89Á\82µ\82Ü\82·
-<div id="doc1_178" class="caption">httpd.conf</div>
+<div id="doc1_199" class="caption">httpd.conf</div>
 <pre class="program" style="margin-top:0">
 #====================================================================================
 # \83\82\83W\83\85\81[\83\8b\82ðApache2.x\82É\83\8d\81[\83h
@@ -1014,12 +1063,12 @@ ChxjConvertRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <li> apache\82Ì\8dÄ\8bN\93®\81B</ol>
 
 
-<h3 id="doc1_187">xoops\82ð\8eg\97p\82µ\81A\8a\8e\82Âwordpress\81Abwiki\82ð\8eg\97p\82µ\82Ä\82¢\82é\8fê\8d\87</h3>
+<h3 id="doc1_208">xoops\82ð\8eg\97p\82µ\81A\8a\8e\82Âwordpress\81Abwiki\82ð\8eg\97p\82µ\82Ä\82¢\82é\8fê\8d\87</h3>
 
 
 <ol>
 <li> httpd.conf\82É\88È\89º\82ð\92Ç\89Á\82µ\82Ü\82·
-<div id="doc1_193" class="caption">httpd.conf</div>
+<div id="doc1_214" class="caption">httpd.conf</div>
 <pre class="program" style="margin-top:0">
 #====================================================================================
 # \83\82\83W\83\85\81[\83\8b\82ðApache2.x\82É\83\8d\81[\83h
@@ -1089,13 +1138,13 @@ ChxjConvertRule &quot;^/.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <li> apache\82Ì\8dÄ\8bN\93®\81B</ol>
 
 
-<h3 id="doc1_202">\89æ\91\9c\8e©\93®\95Ï\8a·\8b@\94\\82ð\8eg\97p\82·\82é\8fê\8d\87</h3>
+<h3 id="doc1_223">\89æ\91\9c\8e©\93®\95Ï\8a·\8b@\94\\82ð\8eg\97p\82·\82é\8fê\8d\87</h3>
 
 
 <ol>
 <li> <p>httpd.conf\82É\88È\89º\82ð\92Ç\89Á\82µ\82Ü\82·\81B\89º\8bL\82Í\81AURI\82ª/img\82Å\8en\82Ü\82é\91S\82Ä\82Ì\89æ\91\9c\82É\91Î\82µ\82Ä\93®\8dì\82·\82é\82æ\82¤mod_chxj\82É\8ew\8e¦\82µ\82Ä\82¢\82Ü\82·\81B</p>
 
-<div id="doc1_208" class="caption">httpd.conf</div>
+<div id="doc1_229" class="caption">httpd.conf</div>
 <pre class="program" style="margin-top:0">
 &lt;Location /img&gt;
 ChxjImageEngine On
@@ -1112,7 +1161,7 @@ ChxjImageCacheLimit 10485760
 <p><br></br> <br></br></p>
 <li> <p>ChxjImageCacheDir<br></br> mod_chxj\89æ\91\9c\95Ï\8a·\83n\83\93\83h\83\89\82ª\8eg\97p\82·\82é\95Ï\8a·\8cã\82Ì\89æ\91\9c\82ð\82¨\82¢\82Ä\82¨\82­\83f\83B\83\8c\83N\83g\83\8a\82ð\8ew\92è\82µ\82Ü\82·\81B\83f\83t\83H\83\8b\83g\82Í/tmp\81B</p>
 
-<div id="doc1_226" class="caption">ChxjImageCacheDir</div>
+<div id="doc1_247" class="caption">ChxjImageCacheDir</div>
 <pre class="program" style="margin-top:0">
       ChxjImageCacheDir /tmp
       
@@ -1121,7 +1170,7 @@ ChxjImageCacheLimit 10485760
 <p>mod_chxj\82É\89æ\91\9c\95Ï\8a·\83L\83\83\83b\83V\83\85\82Æ\82µ\82Ä/tmp\82ð\8eg\97p\82·\82é\82æ\82¤\8ew\8e¦\82µ\82Ü\82·\81B<br></br><br></br></p>
 <li> <p>ChxjImageCopyright<br></br> mod_chxj\82Ì\89æ\91\9c\95Ï\8a·\83n\83\93\83h\83\89\82É\81A\93]\91\97\8bÖ\8e~\90Ý\92è\82ð\8ds\82¤\82æ\82¤\8ew\8e¦\82µ\82Ü\82·\81B\83p\83\89\83\81\81[\83^\82Æ\82µ\82Ä\94C\88Ó\82Ì\95\8e\9a\97ñ\82ð\82Æ\82è\82Ü\82·\81BChxjImageCopyright\83f\83B\83\8c\83N\83e\83B\83u\82Å\8ew\92è\82³\82ê\82½\95\8e\9a\97ñ\82Í\81A\82»\82ê\82¼\82ê\82Ì\83C\83\81\81[\83W\82Ì\83R\83\81\83\93\83g\95\94\82É\96\84\82ß\8d\9e\82Ü\82ê\82Ü\82·\81B</p>
 
-<div id="doc1_238" class="caption">ChxjImageCopyright</div>
+<div id="doc1_259" class="caption">ChxjImageCopyright</div>
 <pre class="program" style="margin-top:0">
       ChxjImageCopyright &quot;A.Konno&quot;
       
@@ -1130,7 +1179,7 @@ ChxjImageCacheLimit 10485760
 <p>mod_chxj\82É\93]\91\97\8bÖ\8e~\90Ý\92è\82ð\8ds\82¤\82æ\82¤\8ew\8e¦\82µ\82Ä\82¢\82Ü\82·\81B\95Ï\8a·\8cã\83C\83\81\81[\83W\82Ì\83R\83\81\83\93\83g\95\94\95ª\82É\82Í\81A\83L\83\83\83\8a\83A\96\88\82É\88È\89º\82Ì\95\8e\9a\97ñ\82ð\96\84\82ß\8d\9e\82Ý\82Ü\82·\81B</p>
 <p><b>AU \82Ì\8fê\8d\87</b></p>
 
-<div id="doc1_244" class="caption">AU</div>
+<div id="doc1_265" class="caption">AU</div>
 <pre class="program" style="margin-top:0">
        kddi_copyright=on,A.Konno
        
@@ -1138,23 +1187,23 @@ ChxjImageCacheLimit 10485760
 
 <p><b>DoCoMo\82Ì\8fê\8d\87</b></p>
 
-<div id="doc1_250" class="caption">DoCoMo</div>
+<div id="doc1_271" class="caption">DoCoMo</div>
 <pre class="program" style="margin-top:0">
 copy=&quot;NO&quot;,A.Konno
 </pre>
 
 <p><b>SoftBank/Vodafone</b>\82Ì\8fê\8d\87\82Í\81A\83\8c\83X\83|\83\93\83X\83w\83b\83_\82É</p>
 
-<div id="doc1_256" class="caption">SoftBank/Vodafone/J-PHONE</div>
+<div id="doc1_277" class="caption">SoftBank/Vodafone/J-PHONE</div>
 <pre class="program" style="margin-top:0">
          x-jphone-copyright:no-transfer
        
 </pre>
 
-<p>\82ð\96\84\82ß\8d\9e\82Ý\82Ü\82·\81B<span class="note"><a href="#doc1_259" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="SoftBank/Vodafone\82Ì\8fê\8d\87\82Í\81A\83\8a\83N\83G\83X\83g\82t\82q\82k\82Ì\8dÅ\8cã\82ª.pnz\82©\81A.jpz\82Å\8fI\82í\82é\82æ\82¤\82É\83_\83~\81[\82ð\95t\82¯\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B"><sup>(6)</sup></a></span></p>
+<p>\82ð\96\84\82ß\8d\9e\82Ý\82Ü\82·\81B<span class="note"><a href="#doc1_280" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="SoftBank/Vodafone\82Ì\8fê\8d\87\82Í\81A\83\8a\83N\83G\83X\83g\82t\82q\82k\82Ì\8dÅ\8cã\82ª.pnz\82©\81A.jpz\82Å\8fI\82í\82é\82æ\82¤\82É\83_\83~\81[\82ð\95t\82¯\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B"><sup>(6)</sup></a></span></p>
 <li> <p>ChxjImageCacheLimit<br></br> mod_chxj\89æ\91\9c\95Ï\8a·\83n\83\93\83h\83\89\82ª\8eg\97p\82·\82é\95Ï\8a·\8cã\82Ì\89æ\91\9c\82ð\82¨\82¢\82Ä\82¨\82­\83f\83B\83\8c\83N\83g\83\8a\82Ì\8b\96\97e\97Ê\82ð\8ew\92è\82µ\82Ü\82·\81B\92P\88Ê\82Íbyte\81B</p>
 
-<div id="doc1_267" class="caption">ChxjImageCacheLimit</div>
+<div id="doc1_288" class="caption">ChxjImageCacheLimit</div>
 <pre class="program" style="margin-top:0">
       ChxjImageCacheLimit 1024
       
@@ -1165,17 +1214,17 @@ copy=&quot;NO&quot;,A.Konno
 
 <div class="footnote">
 <ol>
-<li id="doc1_259" value="6"> SoftBank/Vodafone\82Ì\8fê\8d\87\82Í\81A\83\8a\83N\83G\83X\83g\82t\82q\82k\82Ì\8dÅ\8cã\82ª.pnz\82©\81A.jpz\82Å\8fI\82í\82é\82æ\82¤\82É\83_\83~\81[\82ð\95t\82¯\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B</ol>
+<li id="doc1_280" value="6"> SoftBank/Vodafone\82Ì\8fê\8d\87\82Í\81A\83\8a\83N\83G\83X\83g\82t\82q\82k\82Ì\8dÅ\8cã\82ª.pnz\82©\81A.jpz\82Å\8fI\82í\82é\82æ\82¤\82É\83_\83~\81[\82ð\95t\82¯\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B</ol>
 </div>
 
 
-<h3 id="doc1_279">\95\8e\9a\83R\81[\83h\82ð\95Ï\8a·\82µ\82½\82¢\8fê\8d\87</h3>
+<h3 id="doc1_300">\95\8e\9a\83R\81[\83h\82ð\95Ï\8a·\82µ\82½\82¢\8fê\8d\87</h3>
 
 
 <ol>
 <li> <p>httpd.conf\82É\88È\89º\82ð\92Ç\89Á\82µ\82Ü\82·\81B\89º\8bL\82Í\81AURI\82ª/chxj\82Å\8en\82Ü\82é\91S\82Ä\82Ì\83R\83\93\83e\83\93\83c\82É\91Î\82µ\82Ä\93®\8dì\82·\82é\82æ\82¤mod_chxj\82É\8ew\8e¦\82µ\82Ä\82¢\82Ü\82·\81B\83T\81[\83o\91¤\82ÍEUC-JP\82Å\82 \82Á\82½\8fê\8d\87\82Ì\97á\82Å\82·\81Bmod_chxj\82É\82æ\82Á\82ÄSJIS\82É\95Ï\8a·\82·\82é\82æ\82¤\82É\8ew\8e¦\82µ\82Ä\82¢\82Ü\82·\81B\83T\81[\83o\91¤\82ªShift_JIS\82Å\96³\82¢\8fê\8d\87\82Í\81AShift_JIS\83R\81[\83h\82Ì10\90i\8eQ\8fÆ\95\8e\9a\97ñ\95\\8bL\82ð\8bL\8fq\82·\82é\82±\82Æ\82É\82æ\82Á\82ÄShift_JIS\83R\81[\83h\82Ì\8aG\95\8e\9a2\83o\83C\83g\83R\81[\83h\82É\95Ï\8a·\82µ\83N\83\89\83C\83A\83\93\83g\82Ö\95Ô\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_285" class="caption">httpd.conf</div>
+<div id="doc1_306" class="caption">httpd.conf</div>
 <pre class="program" style="margin-top:0">
 ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 </pre>
@@ -1191,49 +1240,49 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <p><br></br><br></br></p></ol></ol>
 
 
-<h3 id="doc1_323">\83f\83B\83\8c\83N\83e\83B\83u</h3>
+<h3 id="doc1_344">\83f\83B\83\8c\83N\83e\83B\83u</h3>
 
 
 <ol>
 <li> ChxjLoadDeviceData<br></br>\83f\83o\83C\83X\92è\8b`\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_331" class="caption">ex)</div>
+<div id="doc1_352" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjLoadDeviceData /etc/apache2/device.xml
   
 </pre>
 <li> ChxjLoadEmojiData<br></br>\8aG\95\8e\9a\95Ï\8a·\92è\8b`\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_339" class="caption">ex)</div>
+<div id="doc1_360" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjLoadEmojiData   /etc/apache2/chxj/emoji.xml
   
 </pre>
 <li> ChxjImageEngine<br></br>\89æ\91\9c\95Ï\8a·\83G\83\93\83W\83\93\82ð\97L\8cø\82É\82µ\82Ü\82·\81B\83p\83\89\83\81\81[\83^\82Æ\82µ\82ÄOn\82ÆOff\82ð\8ew\92è\82Å\82«\82Ü\82·\81BDefault\82ÍOff\82Å\82·\81B
-<div id="doc1_347" class="caption">ex)</div>
+<div id="doc1_368" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjImageEngine On
   
 </pre>
 <li> ChxjImageCacheDir<br></br>\83C\83\81\81[\83W\82Ì\88ê\8e\9e\83t\83@\83C\83\8b\95Û\91\8fê\8f\8a\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_355" class="caption">ex)</div>
+<div id="doc1_376" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjImageCacheDir   /tmp
   
 </pre>
 <li> ChxjImageCacheLimit<br></br>\83C\83\81\81[\83W\82Ì\88ê\8e\9e\83t\83@\83C\83\8b\95Û\91\8b\96\97e\97Ê\82ð\8ew\92è\82µ\82Ü\82·\81B\89º\8bL\82Í1MByte\82Ì\97á\81B
-<div id="doc1_363" class="caption">ex)</div>
+<div id="doc1_384" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjImageCacheLimit   1048576
   
 </pre>
 <li> ChxjImageCopyright<br></br>\83C\83\81\81[\83W\82É\92\98\8dì\8c \8fî\95ñ\82ð\95t\97^\82µ\82Ü\82·\81B
-<div id="doc1_371" class="caption">ex)</div>
+<div id="doc1_392" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjImageCopyright   &quot;chosakuken jyoho&quot;
   
 </pre>
 <li> ChxjConvertRule<br></br> HTML\95Ï\8a·\83G\83\93\83W\83\93\82Ì\93K\97p\83\8b\81[\83\8b\82ð\8bL\8fq\82µ\82Ü\82·\81B\96{\83f\83B\83\8c\83N\83e\83B\83u\82ð\8eg\97p\82µ\81A\95Ï\8a·\83G\83\93\83W\83\93\82ÌOn|Off\82ð\8ew\92è\82µ\82Ü\82·\81BDefault\82ÍOFF\82Å\82·\81B\82Ü\82½\81A\83\8b\81[\83\8b\82Í\8bL\8fq\82³\82ê\82½\8f\87\94Ô\82É\95]\89¿\82µ\81A\83}\83b\83`\82·\82é\82à\82Ì\82ª\82 \82ê\82Î\81A\82»\82Ì\8e\9e\93_\82Å\91Î\8fÛ\83\8b\81[\83\8b\82ð\93K\97p\82µ\82Ü\82·\81B\83p\83\89\83\81\81[\83^\82Í3\82Â\95K\97v\82Å\82·\81B\89º\8bL\82É\83p\83\89\83\81\81[\83^\82ð\8bL\82µ\82Ü\82·\81B
 <div class="table">
-<table id="doc1_379" class="data" rules="groups">
+<table id="doc1_400" class="data" rules="groups">
 <caption>\83p\83\89\83\81\81[\83^</caption>
 <colgroup span="2">
 <col>
@@ -1265,14 +1314,14 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 </div>
 
 
-<div id="doc1_425" class="caption">ex)</div>
+<div id="doc1_446" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     ChxjConvertRule &quot;^/chxj.+$/&quot; EngineOn EUC-JP
   
 </pre>
 <li> <p>ChxjCookieDir<br></br>\83N\83b\83L\81[\82ð\8eg\97p\82·\82é\8fê\8d\87\82É\8ew\92è\82µ\82Ü\82·\81B\83N\83b\83L\81[\82Ì\93à\97e\82ð\95Û\91\82·\82é\83f\83B\83\8c\83N\83g\83\8a\82ð\8ew\92è\82µ\82Ü\82·\81B\8ew\92è\82µ\82È\82¢\8fê\8d\87\82Í/tmp\82É\95Û\91\82³\82ê\82Ü\82·\81B</p>
 
-<div id="doc1_433" class="caption">ex)</div>
+<div id="doc1_454" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     &lt;Location /&gt;
       ChxjCookieDir   /tmp
@@ -1283,7 +1332,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <p>\8fÚ\8d×\82Í\81uCookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82­\82¾\82³\82¢\81B</p>
 <li> <p>ChxjCookieTimeout<br></br>\83N\83b\83L\81[\82ð\8eg\97p\82·\82é\8fê\8d\87\82É\8ew\92è\82µ\82Ü\82·\81B\83N\83b\83L\81[\82Ì\95Û\8e\9d\8aú\8aÔ\82ð\95b\92P\88Ê\82Å\8ew\92è\82µ\82Ü\82·\81B\8ew\92è\82µ\82È\82¢\8fê\8d\87\82Í\81A1800\95b\82Å\83N\83b\83L\81[\83f\81[\83^\82ð\94j\8aü\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_441" class="caption">ex)</div>
+<div id="doc1_462" class="caption">ex)</div>
 <pre class="program" style="margin-top:0">
     &lt;Location /&gt;
       ChxjCookieTimeout 10
@@ -1294,12 +1343,12 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <p>\8fÚ\8d×\82Í\81uCookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82­\82¾\82³\82¢\81B</p></ol>
 
 
-<h2 id="doc1_448">\91Î\89\9e\82·\82éCHTML\83^\83O</h2>
+<h2 id="doc1_469">\91Î\89\9e\82·\82éCHTML\83^\83O</h2>
 
 <p class="first_ja">\95Ï\8a·\89Â\94\\82È\82b\82g\82s\82l\82k\83^\83O\82Í\88È\89º\82Ì\82Æ\82¨\82è\82Å\82·\81B</p>
 
 <div class="table">
-<table id="doc1_450" class="data" rules="groups">
+<table id="doc1_471" class="data" rules="groups">
 <caption>\91Î\89\9e\83^\83O\88ê\97\97</caption>
 <colgroup span="7">
 <col>
@@ -1464,7 +1513,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
-<td align="left"><span class="note"><a href="#doc1_862" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="SoftBank\82Ì\97\\96ñ\83N\83G\83\8a\96¼\82Í\93à\95\94\82Å\95Ï\8a·\82·\82é\82Ì\82Å\8ew\92è\82µ\82Ä\82à\97Ç\82¢"><sup>(11)</sup></a></span></td>
+<td align="left"><span class="note"><a href="#doc1_883" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="SoftBank\82Ì\97\\96ñ\83N\83G\83\8a\96¼\82Í\93à\95\94\82Å\95Ï\8a·\82·\82é\82Ì\82Å\8ew\92è\82µ\82Ä\82à\97Ç\82¢"><sup>(11)</sup></a></span></td>
 </tr>
 <tr class="even">
 <td></td>
@@ -1518,7 +1567,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
-<td align="left"><span class="note"><a href="#doc1_1006" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B"><sup>(12)</sup></a></span></td>
+<td align="left"><span class="note"><a href="#doc1_1027" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B"><sup>(12)</sup></a></span></td>
 </tr>
 <tr class="even">
 <td></td>
@@ -1581,7 +1630,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
-<td align="left"><span class="note"><a href="#doc1_1175" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B"><sup>(13)</sup></a></span></td>
+<td align="left"><span class="note"><a href="#doc1_1196" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B"><sup>(13)</sup></a></span></td>
 </tr>
 <tr class="odd">
 <td>&lt;DD&gt;</td>
@@ -1590,7 +1639,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
 <td align="center">\81\9b</td>
-<td align="left"><span class="note"><a href="#doc1_1200" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B"><sup>(14)</sup></a></span></td>
+<td align="left"><span class="note"><a href="#doc1_1221" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B"><sup>(14)</sup></a></span></td>
 </tr>
 <tr class="even">
 <td>&lt;CHXJ:IF&gt;</td>
@@ -1608,18 +1657,18 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <div class="footnote">
 <ol>
-<li id="doc1_862" value="11"> SoftBank\82Ì\97\\96ñ\83N\83G\83\8a\96¼\82Í\93à\95\94\82Å\95Ï\8a·\82·\82é\82Ì\82Å\8ew\92è\82µ\82Ä\82à\97Ç\82¢<li id="doc1_1006" value="12"> \95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B<li id="doc1_1175" value="13"> \95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B<li id="doc1_1200" value="14"> \95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B</ol>
+<li id="doc1_883" value="11"> SoftBank\82Ì\97\\96ñ\83N\83G\83\8a\96¼\82Í\93à\95\94\82Å\95Ï\8a·\82·\82é\82Ì\82Å\8ew\92è\82µ\82Ä\82à\97Ç\82¢<li id="doc1_1027" value="12"> \95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B<li id="doc1_1196" value="13"> \95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B<li id="doc1_1221" value="14"> \95K\82¸\95Â\82\82Ä\82­\82¾\82³\82¢\81B\82»\82Ì\82¤\82¿\91Î\89\9e\82µ\82Ü\82·\81B</ol>
 </div>
 
 
-<h2 id="doc1_1231">\93Æ\8e©\8ag\92£\83^\83O</h2>
+<h2 id="doc1_1252">\93Æ\8e©\8ag\92£\83^\83O</h2>
 
 
 <ol>
 <li> <p>&lt;CHXJ:IF&gt;<br></br></p>
-<p>&lt;CHXJ:IF&gt;\83^\83O\82Æ&lt;/CHXJ:IF&gt;\83^\83O\82Å\82Í\82³\82Ü\82ê\82½\83^\83O\82â\83e\83L\83X\83g\82Í\81A\95Ï\8a·\82¹\82¸\82É<b>\82»\82Ì\82Ü\82Ü</b><span class="note"><a href="#doc1_1241" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95Ï\8a·\82µ\82Ü\82¹\82ñ\82Ì\82Å\92\8d\88Ó\82ª\95K\97v\82Å\82·"><sup>(15)</sup></a></span>\8fo\97Í\82µ\82Ü\82·\81B\95K\90{\82Ì\91®\90«\82Æ\82µ\82Älang\82ª\82 \82è\82Ü\82·\81Blang\91®\90«\82ð\8ew\92è\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä\81A\97á\82¦\82Î\81A<b>\81uHDML\8b@\82Ì\8fê\8d\87\82Ì\82Ý\8fo\97Í\82³\82¹\82é\81v</b>\82Æ\82¢\82Á\82½\82±\82Æ\82ð\89Â\94\\82É\82µ\82Ü\82·\81B<br></br><br></br>ex)</p>
+<p>&lt;CHXJ:IF&gt;\83^\83O\82Æ&lt;/CHXJ:IF&gt;\83^\83O\82Å\82Í\82³\82Ü\82ê\82½\83^\83O\82â\83e\83L\83X\83g\82Í\81A\95Ï\8a·\82¹\82¸\82É<b>\82»\82Ì\82Ü\82Ü</b><span class="note"><a href="#doc1_1262" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\95Ï\8a·\82µ\82Ü\82¹\82ñ\82Ì\82Å\92\8d\88Ó\82ª\95K\97v\82Å\82·"><sup>(15)</sup></a></span>\8fo\97Í\82µ\82Ü\82·\81B\95K\90{\82Ì\91®\90«\82Æ\82µ\82Älang\82ª\82 \82è\82Ü\82·\81Blang\91®\90«\82ð\8ew\92è\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä\81A\97á\82¦\82Î\81A<b>\81uHDML\8b@\82Ì\8fê\8d\87\82Ì\82Ý\8fo\97Í\82³\82¹\82é\81v</b>\82Æ\82¢\82Á\82½\82±\82Æ\82ð\89Â\94\\82É\82µ\82Ü\82·\81B<br></br><br></br>ex)</p>
 
-<div id="doc1_1251" class="caption">HTML\95\8f\91\92\86\82ÉHDML\8b@\82Ì\8fê\8d\87\82Ì\82Ý\97L\8cø\82É\82µ\82½\82¢\83^\83O\81A\82Ü\82½\82Í\95\8f\91\82ª\82 \82é\8fê\8d\87</div>
+<div id="doc1_1272" class="caption">HTML\95\8f\91\92\86\82ÉHDML\8b@\82Ì\8fê\8d\87\82Ì\82Ý\97L\8cø\82É\82µ\82½\82¢\83^\83O\81A\82Ü\82½\82Í\95\8f\91\82ª\82 \82é\8fê\8d\87</div>
 <pre class="program" style="margin-top:0">
        &lt;CHXJ:IF lang=&quot;HDML&quot; &gt;
          &lt;NODISPLAY&gt;
@@ -1633,7 +1682,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <p><br></br></p>
 <p>ex)</p>
 
-<div id="doc1_1255" class="caption">i-Mode\82Ì\82Ý\8fo\97Í\82µ\82½\82¢\95\8f\91\82ª\82 \82é\8fê\8d\87</div>
+<div id="doc1_1276" class="caption">i-Mode\82Ì\82Ý\8fo\97Í\82µ\82½\82¢\95\8f\91\82ª\82 \82é\8fê\8d\87</div>
 <pre class="program" style="margin-top:0">
        &lt;CHXJ:IF lang=&quot;chtml&quot; &gt;
          \83V\81[\83N\83\8c\83b\83g\83R\81[\83h\82ª\82Ç\81[\82Ì\82±\81[\82Ì\81B
@@ -1644,7 +1693,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <p><br></br></p>
 <p>\82Ü\82½\81Alang\91®\90«\82Í\81A\95¡\90\94\8ew\92è\82·\82é\82±\82Æ\82à\89Â\94\\82Å\82·\81B<br></br></p>
 
-<div id="doc1_1261" class="caption">HDML\8b@,J-PHONE\8b@\82Í\88È\89º\82ð\8fo\97Í\82µ\82Ü\82·</div>
+<div id="doc1_1282" class="caption">HDML\8b@,J-PHONE\8b@\82Í\88È\89º\82ð\8fo\97Í\82µ\82Ü\82·</div>
 <pre class="program" style="margin-top:0">
        &lt;CHXJ:IF lang=&quot;chtml&quot; lang=&quot;jhtml&quot;&gt;
        \82 \82È\82½\82Ì\8cg\91Ñ\82Í\81AHDML\8b@\82©J-HTML\8b@\82Å\82·\81B
@@ -1657,13 +1706,13 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <div class="footnote">
 <ol>
-<li id="doc1_1241" value="15"> \95Ï\8a·\82µ\82Ü\82¹\82ñ\82Ì\82Å\92\8d\88Ó\82ª\95K\97v\82Å\82·</ol>
+<li id="doc1_1262" value="15"> \95Ï\8a·\82µ\82Ü\82¹\82ñ\82Ì\82Å\92\8d\88Ó\82ª\95K\97v\82Å\82·</ol>
 </div>
 
 
-<h2 id="doc1_1268">\95\8e\9a\83R\81[\83h\82É\82Â\82¢\82Ä</h2>
+<h2 id="doc1_1289">\95\8e\9a\83R\81[\83h\82É\82Â\82¢\82Ä</h2>
 
-<p class="first_ja">\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82É\82Â\82¢\82Ä\82ÍShift_JIS(CP932)\81AEUCJP-WIN(Win\8aO\8e\9a\91Î\89\9e\82ÌEUCJP)\81AUTF-8\82Ì\82Ç\82ê\82©\82Å\8bL\8fq\82·\82é\82±\82Æ\82ª\89Â\94\\82Å\82·\81BShift_JIS\82Å\8bL\8fq\82µ\82½\8fê\8d\87\82Í\8aG\95\8e\9a\82É\82Â\82¢\82Ä\82àShift_JIS\82Å\81AEUCJP-WIN\82Å\8bL\8fq\82µ\82½\8fê\8d\87\82Í\8aG\95\8e\9a\82É\82Â\82¢\82Ä\82àEUCJP-WIN\82Å\81AUTF-8\82Å\8bL\8fq\82µ\82½\8fê\8d\87\82Í\8aG\95\8e\9a\82É\82Â\82¢\82Ä\82àUTF-8\82Å\8bL\8fq\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1270" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\8fÚ\8d×\82Í\81u\8aG\95\8e\9a\82É\82Â\82¢\82Ä\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ"><sup>(16)</sup></a></span>\83N\83\89\83C\83A\83\93\83g\83T\83C\83h\81i\92[\96\96\91¤\81j\82É\91\97\90M\82·\82é\95\8e\9a\83R\81[\83h\82ÍShift_JIS\82Ü\82½\82ÍUTF-8\82ð\8ew\92è\82·\82é\82±\82Æ\82ª\89Â\94\\82Å\82·\81B<span class="note"><a href="#doc1_1273" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\8ew\92è\95û\96@\82É\82Â\82¢\82Ä\82Í\81u\83f\83o\83C\83X\92è\8b`\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ\81B"><sup>(17)</sup></a></span>mod_chxj\82É\82æ\82è\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82Ì\95\8e\9a\83R\81[\83h\82©\82ç\92[\96\96\82É\91\97\90M\82·\82é\95\8e\9a\83R\81[\83h\82Ö\82Æ\8aG\95\8e\9a\82à\8aÜ\82ß\82Ä\95Ï\8a·\82µ\82Ü\82·\81BPOST/GET\92\86\82Ì\83f\81[\83^\82É\82Â\82¢\82Ä\82à\92[\96\96\91¤\95\8e\9a\83R\81[\83h\82©\82ç\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82Ì\95\8e\9a\83R\81[\83h\82Ö\82Æ\8aG\95\8e\9a\82à\8aÜ\82ß\82Ä\95Ï\8a·\82µ\82Ü\82·\81B</p>
+<p class="first_ja">\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82É\82Â\82¢\82Ä\82ÍShift_JIS(CP932)\81AEUCJP-WIN(Win\8aO\8e\9a\91Î\89\9e\82ÌEUCJP)\81AUTF-8\82Ì\82Ç\82ê\82©\82Å\8bL\8fq\82·\82é\82±\82Æ\82ª\89Â\94\\82Å\82·\81BShift_JIS\82Å\8bL\8fq\82µ\82½\8fê\8d\87\82Í\8aG\95\8e\9a\82É\82Â\82¢\82Ä\82àShift_JIS\82Å\81AEUCJP-WIN\82Å\8bL\8fq\82µ\82½\8fê\8d\87\82Í\8aG\95\8e\9a\82É\82Â\82¢\82Ä\82àEUCJP-WIN\82Å\81AUTF-8\82Å\8bL\8fq\82µ\82½\8fê\8d\87\82Í\8aG\95\8e\9a\82É\82Â\82¢\82Ä\82àUTF-8\82Å\8bL\8fq\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1291" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\8fÚ\8d×\82Í\81u\8aG\95\8e\9a\82É\82Â\82¢\82Ä\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ"><sup>(16)</sup></a></span>\83N\83\89\83C\83A\83\93\83g\83T\83C\83h\81i\92[\96\96\91¤\81j\82É\91\97\90M\82·\82é\95\8e\9a\83R\81[\83h\82ÍShift_JIS\82Ü\82½\82ÍUTF-8\82ð\8ew\92è\82·\82é\82±\82Æ\82ª\89Â\94\\82Å\82·\81B<span class="note"><a href="#doc1_1294" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\8ew\92è\95û\96@\82É\82Â\82¢\82Ä\82Í\81u\83f\83o\83C\83X\92è\8b`\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ\81B"><sup>(17)</sup></a></span>mod_chxj\82É\82æ\82è\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82Ì\95\8e\9a\83R\81[\83h\82©\82ç\92[\96\96\82É\91\97\90M\82·\82é\95\8e\9a\83R\81[\83h\82Ö\82Æ\8aG\95\8e\9a\82à\8aÜ\82ß\82Ä\95Ï\8a·\82µ\82Ü\82·\81BPOST/GET\92\86\82Ì\83f\81[\83^\82É\82Â\82¢\82Ä\82à\92[\96\96\91¤\95\8e\9a\83R\81[\83h\82©\82ç\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82Ì\95\8e\9a\83R\81[\83h\82Ö\82Æ\8aG\95\8e\9a\82à\8aÜ\82ß\82Ä\95Ï\8a·\82µ\82Ü\82·\81B</p>
 
 <ol>
 <li> \92\8d\88Ó: Shift_JIS\82Å\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82ð\8bL\8fq\82µ\82½\8fê\8d\87\82ÍPOST/GET\83f\81[\83^\82àShift_JIS\82Å\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\83c\82É\93n\82³\82ê\82Ü\82·\81B
@@ -1675,31 +1724,31 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <div class="footnote">
 <ol>
-<li id="doc1_1270" value="16"> \8fÚ\8d×\82Í\81u\8aG\95\8e\9a\82É\82Â\82¢\82Ä\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ<li id="doc1_1273" value="17"> \8ew\92è\95û\96@\82É\82Â\82¢\82Ä\82Í\81u\83f\83o\83C\83X\92è\8b`\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ\81B</ol>
+<li id="doc1_1291" value="16"> \8fÚ\8d×\82Í\81u\8aG\95\8e\9a\82É\82Â\82¢\82Ä\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ<li id="doc1_1294" value="17"> \8ew\92è\95û\96@\82É\82Â\82¢\82Ä\82Í\81u\83f\83o\83C\83X\92è\8b`\81v\82Ì\8d\80\82ð\8eQ\8fÆ\82Ì\82±\82Æ\81B</ol>
 </div>
 
 
-<h2 id="doc1_1297">\8aG\95\8e\9a\82É\82Â\82¢\82Ä</h2>
+<h2 id="doc1_1318">\8aG\95\8e\9a\82É\82Â\82¢\82Ä</h2>
 
-<p class="first_ja">i-Mode\97p\82Ì\8aG\95\8e\9a\82ð\8f\91\82¢\82Ä\82¨\82¯\82Î\81A\83A\83N\83Z\83X\82µ\82½\83L\83\83\83\8a\83A\82É\82æ\82Á\82Ä\81Amod_chxj\82ª\91Î\89\9e\82Ì\8aG\95\8e\9a\82É\8e©\93®\95Ï\8a·\82µ\82Ü\82·\81B\83\\81[\83X\82É2byte\82Ì\83o\83C\83i\83\8a\83R\81[\83h\82ð\92¼\90Ú\8f\91\82¢\82Ä\82à\81A10\90i\8eQ\8fÆ\95\8e\9a\97ñ(&amp;#XXX;\82Ì\8c`)\81A16\90i\8eQ\8fÆ\95\8e\9a\97ñ(&amp;#xXXX;\82Ì\8c`)\82Å\8f\91\82¢\82Ä\82à\81A\95Ï\8a·\91Î\8fÛ\82É\82È\82è\82Ü\82·\81B10\90i\8eQ\8fÆ\95\8e\9a\97ñ\81A16\90i\8eQ\8fÆ\95\8e\9a\97ñ\82Ímod_chxj\82É\82æ\82è\8e©\93®\82Å2\83o\83C\83g\83R\81[\83h\82É\95Ï\8a·\82³\82ê\82Ü\82·\81B<span class="note"><a href="#doc1_1299" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\83R\83\93\83e\83\93\83c\82ðSJIS\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àSJIS\82Å\81A\83R\83\93\83e\83\93\83c\82ðEUCJP-WIN\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àEUCJP-WIN\82Å\81AUTF-8\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àUTF-8\82Å\8bL\8fq\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·"><sup>(18)</sup></a></span></p>
+<p class="first_ja">i-Mode\97p\82Ì\8aG\95\8e\9a\82ð\8f\91\82¢\82Ä\82¨\82¯\82Î\81A\83A\83N\83Z\83X\82µ\82½\83L\83\83\83\8a\83A\82É\82æ\82Á\82Ä\81Amod_chxj\82ª\91Î\89\9e\82Ì\8aG\95\8e\9a\82É\8e©\93®\95Ï\8a·\82µ\82Ü\82·\81B\83\\81[\83X\82É2byte\82Ì\83o\83C\83i\83\8a\83R\81[\83h\82ð\92¼\90Ú\8f\91\82¢\82Ä\82à\81A10\90i\8eQ\8fÆ\95\8e\9a\97ñ(&amp;#XXX;\82Ì\8c`)\81A16\90i\8eQ\8fÆ\95\8e\9a\97ñ(&amp;#xXXX;\82Ì\8c`)\82Å\8f\91\82¢\82Ä\82à\81A\95Ï\8a·\91Î\8fÛ\82É\82È\82è\82Ü\82·\81B10\90i\8eQ\8fÆ\95\8e\9a\97ñ\81A16\90i\8eQ\8fÆ\95\8e\9a\97ñ\82Ímod_chxj\82É\82æ\82è\8e©\93®\82Å2\83o\83C\83g\83R\81[\83h\82É\95Ï\8a·\82³\82ê\82Ü\82·\81B<span class="note"><a href="#doc1_1320" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\83R\83\93\83e\83\93\83c\82ðSJIS\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àSJIS\82Å\81A\83R\83\93\83e\83\93\83c\82ðEUCJP-WIN\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àEUCJP-WIN\82Å\81AUTF-8\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àUTF-8\82Å\8bL\8fq\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·"><sup>(18)</sup></a></span></p>
 
 <div class="footnote">
 <ol>
-<li id="doc1_1299" value="18"> \83R\83\93\83e\83\93\83c\82ðSJIS\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àSJIS\82Å\81A\83R\83\93\83e\83\93\83c\82ðEUCJP-WIN\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àEUCJP-WIN\82Å\81AUTF-8\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àUTF-8\82Å\8bL\8fq\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·</ol>
+<li id="doc1_1320" value="18"> \83R\83\93\83e\83\93\83c\82ðSJIS\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àSJIS\82Å\81A\83R\83\93\83e\83\93\83c\82ðEUCJP-WIN\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àEUCJP-WIN\82Å\81AUTF-8\82Å\8bL\8fq\82·\82é\8fê\8d\87\82É\82Í\8aG\95\8e\9a\82àUTF-8\82Å\8bL\8fq\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·</ol>
 </div>
 
 
-<h3 id="doc1_1302">\8aG\95\8e\9a\95Ï\8a·\92è\8b`</h3>
+<h3 id="doc1_1323">\8aG\95\8e\9a\95Ï\8a·\92è\8b`</h3>
 
 <p class="first_ja">\8aG\95\8e\9a\82Ì\95Ï\8a·\82É\8aÖ\82·\82é\93®\8dì\82ð\95Ï\82¦\82½\82¢\8fê\8d\87\81i\97á\82¦\82Î\81u\83n\81[\83g\82ª\82 \82Á\82½\82ç\81A\82`\82t\82Ì\8fê\8d\87\82Í\83X\83y\81[\83h\82É\81v\82Æ\82©\81A\81u\95Ï\8a·\92è\8b`\82ª\82¨\82©\82µ\82¢\81v\82Æ\82¢\82Á\82½\8fê\8d\87\81j\82Í\81Aemoji.xml\83t\83@\83C\83\8b\82ð\92¼\90Ú\95Ò\8fW\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä\92è\8b`\82ð\95Ï\8dX\82·\82é\82±\82Æ\82ª\89Â\94\\82Å\82·\81Bemoji.xml\82ÍXML\83t\83@\83C\83\8b\82Æ\82È\82Á\82Ä\82¢\82Ü\82·\82Ì\82Å\81A\90l\82É\82æ\82Á\82Ä\82Ívi\93\99\82Å\8aÈ\92P\82É\92è\8b`\82ð\95Ï\8dX\82·\82é\82±\82Æ\82ª\82Å\82«\82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ\81B</p>
 <p>emoji.xml\82Í3\82Â\82Ì\83p\81[\83g\82É\95ª\82©\82ê\82Ä\82¢\82Ü\82·\81B1\82Â\96Ú\82ÍDoCoMo\81¨DoCoMo/au/SoftBank\82Ì\95Ï\8a·\92è\8b`\95\94\81B2\82Â\96Ú\82Íau\81¨DoCoMo\82Ì\95Ï\8a·\92è\8b`\95\94\81B3\82Â\96Ú\82ÍSoftBank\81¨DoCoMo\82Ì\95Ï\8a·\92è\8b`\95\94\81B1\82Â\96Ú\82Í\83T\81[\83o\83T\83C\83h\83R\83\93\83e\83\93\82©\82ç\8ae\83L\83\83\83\8a\83A\82Ì\8aG\95\8e\9a\82É\95Ï\8a·\82·\82é\8dÛ\82É\8eg\97p\82³\82ê\82Ü\82·\81B2\82Â\96Ú\82Æ3\82Â\96Ú\82ÍPOST/GET\83f\81[\83^\82Ì\95Ï\8a·\82É\8eg\97p\82³\82ê\82Ü\82·\81B</p>
 <p><br></br></p>
 
-<h3 id="doc1_1309">DoCoMo\81¨DoCoMo/au/SoftBank\95Ï\8a·\92è\8b`</h3>
+<h3 id="doc1_1330">DoCoMo\81¨DoCoMo/au/SoftBank\95Ï\8a·\92è\8b`</h3>
 
 <p class="first_ja">\88È\89º\82É\81Aemoji.xml\83t\83@\83C\83\8b\82Ì1\82Â\96Ú\82Ì\83p\81[\83g\81ADoCoMo\81¨DoCoMo/au/SoftBank\82Ì\95Ï\8a·\92è\8b`\95\94\82ð\8bL\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1311" class="caption">emoji.xml</div>
+<div id="doc1_1332" class="caption">emoji.xml</div>
 <pre class="program" style="margin-top:0">
 &lt;emoji&gt;
   &lt;set&gt;
@@ -1777,19 +1826,19 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <br></br><br></br><li> &lt;ezweb&gt;\97v\91f<br></br>\83A\83N\83Z\83X\82µ\82Ä\82«\82½\92[\96\96\82ª\81AAU\8b@\82Å\82 \82Á\82½\8fê\8d\87\81A&lt;ezweb&gt;\97v\91f\82É\92è\8b`\82³\82ê\82Ä\82¢\82é\92l\82É\95Ï\8a·\82µ\82Ü\82·\81B&lt;ezweb&gt;\97v\91f\82Í\81A&lt;A&gt;\81`&lt;D&gt;\97v\91f\82ð\8e\9d\82Á\82Ä\82¢\82Ä\81A\82»\82ê\82¼\82êAU\82Ì\8aG\95\8e\9a\83^\83C\83v\82`\81`\82c\82É\91Î\89\9e\82µ\82Ä\82¢\82Ü\82·\82Ì\82Å\81A\82à\82µ\81A\82c\83^\83C\83v\82Ì\8aG\95\8e\9a\92[\96\96\82Å\82 \82Á\82½\82È\82ç\81A&lt;D&gt;\97v\91f\82Ì&lt;no&gt;\82É\92è\8b`\82³\82ê\82Ä\82¢\82é\92l\82É\95Ï\8a·\82µ\82Ü\82·\81B\82±\82±\82Å\92è\8b`\82³\82ê\82Ä\82¢\82é\92l\82Í\81AHDML\8b@\82Ì\8fê\8d\87\82Í\81A<b>&lt;IMG ICON=&quot;XX&quot;&gt;</b>\82Ì&quot;XX&quot;\82Ì\95\94\95ª\82É\93\96\82Ä\82Í\82ß\82ç\82ê\82Ä\81A\92u\8a·\82³\82ê\82Ü\82·\81BXHTML\8b@\82Ì\8fê\8d\87\82Í\81A<b>&lt;IMG LOCALSRC=&quot;XX&quot;&gt;</b>\82Ì&quot;XX&quot;\82Ì\95\94\95ª\82É\93\96\82Ä\82Í\82ß\82ç\82ê\82Ä\81A\92u\8a·\82³\82ê\82Ü\82·\81B\93¯\97v\91f\82É\82Ísjis-hex\81Asjis-dec\81Aunicode-hex\81Aunicode-dec\81Autf8-hex\81Autf8-dec\82ª\97L\82è\82Ü\82·\82ª\81A\8d¡\82Ì\82Æ\82±\82ë\8eg\97p\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B
 <br></br><br></br><li> &lt;softbank&gt;\97v\91f<br></br>\83A\83N\83Z\83X\82µ\82Ä\82«\82½\92[\96\96\82ª\81ASoftBank/Vodafone/J-Phone\92[\96\96\82Å\82 \82Á\82½\8fê\8d\87\81A&lt;softbank&gt;\97v\91f\82É\92è\8b`\82³\82ê\82Ä\82¢\82é\92l\82É\95Ï\8a·\82µ\82Ü\82·\81B&lt;softbank&gt;\97v\91f\82Í\81A\8fã\8bL\97v\91f\82Æ\93¯\97l\82Ésjis-hex\81Asjis-dec\81Aunicode-hex\81Aunicode-dec\81Autf8-hex\81Autf8-dec\82ð\95Û\8e\9d\82µ\82Ä\82¢\82Ü\82·\81B\83A\83N\83Z\83X\82µ\82Ä\82«\82½\92[\96\96\82É\82Ísjis\82ð\95Ô\82·\8fê\8d\87\82Ísjis-hex\81Asjis-dec\82Ì\92l\82ð\8eg\97p\82µ\82Ü\82·\81Butf8\82ð\95Ô\82·\8fê\8d\87\82É\82Íutf8-hex\81Autf8-dec\82Å\82Í\96³\82­unicode-hex\81Aunicode-dec\82ð\95Ô\82µ\82Ü\82·\81BSoftBank\92[\96\96\82Ì\8fê\8d\87\82Í3G\92[\96\96\82Í\8aî\96{\93I\82ÉUTF8\82ð\95Ô\82·\82æ\82¤\82É\83f\83o\83C\83X\92è\8b`\82É\82Ä\92è\8b`\82³\82ê\82Ä\82¢\82Ü\82·\81BUTF8\82Å\92è\8b`\82³\82ê\82½\8fê\8d\87\82ÅSoftBank\82Ì\8fê\8d\87\82ÍUNICODE\82Ì\8eQ\8fÆ\95\8e\9a\97ñ\82ð\95Ô\82·\82æ\82¤\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B(\96â\91è\89ñ\94ð\82Ì\82½\82ß)</ol>
 
-<p><br></br>emoji.xml\82É\92è\8b`\82³\82ê\82Ä\82¢\82È\82¢\8aG\95\8e\9a\82Å\81A\95Ï\8a·\82µ\82½\82¢\8aG\95\8e\9a\82ª\82 \82é\8fê\8d\87\82É\82Í\81A\82±\82Ì\83t\83@\83C\83\8b\82É\90V\82½\82È\92è\8b`\82ð\91«\82¹\82Î\81A\95Ï\8a·\82·\82é\82æ\82¤\82É\82È\82è\82Ü\82·\81B<span class="note"><a href="#doc1_1349" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\93¯\88ê\83R\81[\83h\97Ì\88æ\82É\8a\84\82è\93\96\82Ä\82é\95K\97v\82ª\82 \82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ"><sup>(19)</sup></a></span></p>
+<p><br></br>emoji.xml\82É\92è\8b`\82³\82ê\82Ä\82¢\82È\82¢\8aG\95\8e\9a\82Å\81A\95Ï\8a·\82µ\82½\82¢\8aG\95\8e\9a\82ª\82 \82é\8fê\8d\87\82É\82Í\81A\82±\82Ì\83t\83@\83C\83\8b\82É\90V\82½\82È\92è\8b`\82ð\91«\82¹\82Î\81A\95Ï\8a·\82·\82é\82æ\82¤\82É\82È\82è\82Ü\82·\81B<span class="note"><a href="#doc1_1370" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\93¯\88ê\83R\81[\83h\97Ì\88æ\82É\8a\84\82è\93\96\82Ä\82é\95K\97v\82ª\82 \82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ"><sup>(19)</sup></a></span></p>
 
 <div class="footnote">
 <ol>
-<li id="doc1_1349" value="19"> \93¯\88ê\83R\81[\83h\97Ì\88æ\82É\8a\84\82è\93\96\82Ä\82é\95K\97v\82ª\82 \82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ</ol>
+<li id="doc1_1370" value="19"> \93¯\88ê\83R\81[\83h\97Ì\88æ\82É\8a\84\82è\93\96\82Ä\82é\95K\97v\82ª\82 \82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ</ol>
 </div>
 
 
-<h3 id="doc1_1356">au\81¨DoCoMo\95Ï\8a·\92è\8b`</h3>
+<h3 id="doc1_1377">au\81¨DoCoMo\95Ï\8a·\92è\8b`</h3>
 
 <p class="first_ja">au-&gt;DoCoMo\95Ï\8a·\82Ì\92è\8b`\82Í\8eå\82Éau\92[\96\96\82©\82ç\83T\81[\83o\83T\83C\83h\82Ö\82ÌPOST/GET\83f\81[\83^\82Ì\95Ï\8a·\82É\8eg\97p\82³\82ê\82Ü\82·\81B\92è\8b`\82Íemoji.xml\83t\83@\83C\83\8b\82Ì&lt;ezweb2imode&gt;\83^\83O\82Å\82Í\82³\82Ü\82ê\82½\82Æ\82±\82ë\82É\92è\8b`\82µ\82Ä\82 \82è\82Ü\82·\81B&lt;set&gt;\82©\82ç&lt;/set&gt;\82Ü\82Å\82Ì\8aÔ\82ª1\8aG\95\8e\9a\82ð\95\\8c»\82·\82é\95\94\95ª\82É\82È\82è\82Ü\82·\81B<br></br>\88È\89º\82É\81Aemoji.xml\83t\83@\83C\83\8b\82Ì2\82Â\96Ú\82Ì\83p\81[\83g\81Aau\81¨DoCoMo\95Ï\8a·\92è\8b`\82ð\88È\89º\82É\8bL\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1360" class="caption">emoji.xml</div>
+<div id="doc1_1381" class="caption">emoji.xml</div>
 <pre class="program" style="margin-top:0">
 &lt;ezweb2imode&gt;
   &lt;set&gt;
@@ -1817,11 +1866,11 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <br></br><br></br></ol>
 
 
-<h3 id="doc1_1399">SoftBank\81¨DoCoMo\95Ï\8a·\92è\8b`</h3>
+<h3 id="doc1_1420">SoftBank\81¨DoCoMo\95Ï\8a·\92è\8b`</h3>
 
 <p class="first_ja">SoftBank-&gt;DoCoMo\95Ï\8a·\82Ì\92è\8b`\82Í\8eå\82ÉSoftBank\92[\96\96\82©\82ç\83T\81[\83o\83T\83C\83h\82Ö\82ÌPOST/GET\83f\81[\83^\82Ì\95Ï\8a·\82É\8eg\97p\82³\82ê\82Ü\82·\81B\92è\8b`\82Íemoji.xml\83t\83@\83C\83\8b\82Ì&lt;softbank2imode&gt;\83^\83O\82Å\82Í\82³\82Ü\82ê\82½\82Æ\82±\82ë\82É\92è\8b`\82µ\82Ä\82 \82è\82Ü\82·\81B&lt;set&gt;\82©\82ç&lt;/set&gt;\82Ü\82Å\82Ì\8aÔ\82ª1\8aG\95\8e\9a\82ð\95\\8c»\82·\82é\95\94\95ª\82É\82È\82è\82Ü\82·\81B<br></br>\88È\89º\82É\81Aemoji.xml\83t\83@\83C\83\8b\82Ì3\82Â\96Ú\82Ì\83p\81[\83g\81ASoftBank\81¨DoCoMo\95Ï\8a·\92è\8b`\82ð\88È\89º\82É\8bL\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1403" class="caption">emoji.xml</div>
+<div id="doc1_1424" class="caption">emoji.xml</div>
 <pre class="program" style="margin-top:0">
 &lt;softbank2imode&gt;
   &lt;set&gt;
@@ -1862,16 +1911,16 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <p><br></br><br></br></p>
 
-<h2 id="doc1_1450">\83f\83o\83C\83X\92è\8b` device_data.xml</h2>
+<h2 id="doc1_1471">\83f\83o\83C\83X\92è\8b` device_data.xml</h2>
 
 <p class="first_ja">mod_chxj\82Ì\93®\8dì\82ð\8c\88\92è\95t\82¯\82é\8fd\97v\82È\92è\8b`\82Å\82·\81B\95Ï\8a·\91Î\8fÛ\82Ì\92[\96\96\82Í\91S\82Ä\81Adevice_data.xml\83t\83@\83C\83\8b\82É\92è\8b`\82³\82ê\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\92è\8b`\82³\82ê\82Ä\82¢\82È\82¢\92[\96\96\82Í\81Amod_chxj\82Æ\82µ\82Ä\82Í\81A\94F\8e¯\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82¹\82ñ\81B\94F\8e¯\82Å\82«\82È\82¢\8fê\8d\87\82É\82Í\81A\95Ï\8a·\82¹\82¸\82É\82»\82Ì\82Ü\82Ü\8fo\97Í\82µ\82Ü\82·\81B\82½\82¾\82µ\81APerl\8cÝ\8a·\82Ì\90³\8bK\95\\8c»\82É\82æ\82Á\82Ä\92è\8b`\82Å\82«\82é\82½\82ß\81A\90³\8bK\95\\8c»\82Ì\8f\91\82«\95û\82É\82æ\82Á\82Ä\82Í\91S\82Ä\82Ì\8b@\8eí\82É\91Î\89\9e\82³\82¹\82é\82±\82Æ\82à\89Â\94\\82Å\82·\81B</p>
 <p><br></br></p>
 
-<h3 id="doc1_1454">\83f\83o\83C\83X\92è\8b`\82Ì\97v\91f</h3>
+<h3 id="doc1_1475">\83f\83o\83C\83X\92è\8b`\82Ì\97v\91f</h3>
 
 <p class="first_ja">\82Ü\82¸\88È\89º\82É\83f\83o\83C\83X\92è\8b`\82ð\8bL\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1456" class="caption">device_data.xml</div>
+<div id="doc1_1477" class="caption">device_data.xml</div>
 <pre class="program" style="margin-top:0">
 &lt;devices&gt;
   &lt;user_agent pattern=&quot;^KDDI-([^     ]+) UP.Browser/[^   ]+ .+&quot;&gt;
@@ -1940,7 +1989,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <p><br></br><br></br></p>
 <li> <b>device_id\83^\83O</b><br></br>user_agent\83^\83O\82Ìpattern\91®\90«\82É\82æ\82è\90\90¬\82³\82ê\82½$1\82É\82æ\82è\8cã\95û\8eQ\8fÆ\82³\82ê\82é\92l\82Æ\94ä\8ar\82³\82ê\82é\92l\82ð\95Û\8e\9d\82µ\82Ü\82·\81B\92Ê\8fíDoCoMo\82Å\82 \82ê\82ÎUser-Agent\82Ì\81u\8b@\8eí\96¼\81v\95\94\81Aau\82Å\82 \82ê\82ÎUser-Agent\82Ì\81u\83f\83o\83C\83XID\81v\95\94\81ASoftBank\82Å\82 \82ê\82Î\81AUser-Agent\82Ì\81u\8b@\8eí\96¼\81v\95\94\82ð\8bL\8fq\82µ\82Ü\82·\81B
-<div id="doc1_1566" class="caption">\97á</div>
+<div id="doc1_1587" class="caption">\97á</div>
 <pre class="program" style="margin-top:0">
       &lt;!-- DoCoMo F905i\82Ì\8fê\8d\87 --&gt;
       &lt;device_id&gt;F905i&lt;/device_id&gt;
@@ -1953,14 +2002,14 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
     
 </pre>
 <li> <b>device_name\83^\83O</b><br></br>mod_chxj\82Å\82Í\96{\92l\82ð\83f\83o\83b\83O\83\8d\83O\8fo\97Í\8e\9e\82É\82Ì\82Ý\8eg\97p\82µ\82Ü\82·\81A\90l\82ª\8c©\82Ä\82í\82©\82è\82â\82·\82¢\96¼\91O\82ð\93ü\97Í\82µ\82Ä\82¨\82«\82Ü\82·\81Bdevice_id\82Æ\8d¬\93¯\82µ\82È\82¢\82æ\82¤\82É\92\8d\88Ó\82µ\82Ü\82·\81B
-<div id="doc1_1575" class="caption">au W21CA\82Ì\97á</div>
+<div id="doc1_1596" class="caption">au W21CA\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
       &lt;device_name&gt;W21CA&lt;/device_name&gt;
     
 </pre>
 <li> <b>html_spec_type\83^\83O</b><br></br>\92[\96\96\82Ì\83T\83|\81[\83g\82·\82éHTML\83^\83C\83v\82ð\8ew\92è\82µ\82Ü\82·\81B\96{\83^\83O\82Ì\92l\82É\82æ\82èHTML\95Ï\8a·\8c\8b\89Ê\82ª\95Ï\82í\82è\82Ü\82·\81B\8ew\92è\82Å\82«\82é\92l\82Í\88È\89º\82Ì\82Æ\82¨\82è\82Å\82·\81B\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Í\8bæ\95Ê\82µ\82Ü\82¹\82ñ\81B
 <div class="table">
-<table id="doc1_1584" class="data" rules="groups">
+<table id="doc1_1605" class="data" rules="groups">
 <caption>\91Î\89\9eHTML\83^\83C\83v\88ê\97\97</caption>
 <colgroup span="2">
 <col>
@@ -2018,16 +2067,16 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 </div>
 <li> <b>width\83^\83O</b><br></br>\92[\96\96\82Ì\89¡\95\9d\82ð\8ew\92è\82µ\82Ü\82·\81B
 <li> <b>height\83^\83O</b><br></br>\92[\96\96\82Ì\8fc\95\9d\82ð\8ew\92è\82µ\82Ü\82·\81B
-<li> <b>gif\83^\83O</b><br></br>\92[\96\96\82ªgif\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1710" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(20)</sup></a></span>
-<li> <b>jpeg\83^\83O</b><br></br>\92[\96\96\82ªjpeg\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1719" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(21)</sup></a></span>
-<li> <b>png\83^\83O</b><br></br>\92[\96\96\82ªpng\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1728" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(22)</sup></a></span>
-<li> <b>bmp2\83^\83O</b><br></br>\92[\96\96\82ªbmp2\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1737" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(23)</sup></a></span>\92Ê\8fí\82Ífalse\81B
-<li> <b>bmp4\83^\83O</b><br></br>\92[\96\96\82ªbmp4\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1746" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(24)</sup></a></span>\92Ê\8fí\82Ífalse\81B
+<li> <b>gif\83^\83O</b><br></br>\92[\96\96\82ªgif\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1731" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(20)</sup></a></span>
+<li> <b>jpeg\83^\83O</b><br></br>\92[\96\96\82ªjpeg\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1740" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(21)</sup></a></span>
+<li> <b>png\83^\83O</b><br></br>\92[\96\96\82ªpng\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1749" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(22)</sup></a></span>
+<li> <b>bmp2\83^\83O</b><br></br>\92[\96\96\82ªbmp2\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1758" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(23)</sup></a></span>\92Ê\8fí\82Ífalse\81B
+<li> <b>bmp4\83^\83O</b><br></br>\92[\96\96\82ªbmp4\89æ\91\9c\82ð\95\\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\8fê\8d\87(\83T\83|\81[\83g\82µ\82Ä\82¢\82é\8fê\8d\87)\82Ítrue\82ð\8ew\92è\82µ\82Ü\82·\81B\95\\8e¦\82Å\82«\82È\82¢(\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\81j\8fê\8d\87\82Ífalse\82ð\8ew\92è\82µ\82Ü\82·\81B<span class="note"><a href="#doc1_1767" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(24)</sup></a></span>\92Ê\8fí\82Ífalse\81B
 <li> <b>color\83^\83O</b><br></br>\92[\96\96\82Ì\95\\8e¦\89Â\94\\90F\90\94\81B
 <li> <p><b>emoji_type\83^\83O</b><br></br>au\82Ì\8fê\8d\87\82É\8ew\92è\82µ\82Ü\82·\81Bau\88È\8aO\82Ì\8fê\8d\87\82Í\8ew\92è\82µ\82Ä\82à\88Ó\96¡\82Í\82 \82è\82Ü\82¹\82ñ\81B<br></br>\90Ý\92è\82Å\82«\82é\92l\82Í\88È\89º\82Ì\82Æ\82¨\82è\81B</p>
 
 <div class="table">
-<table id="doc1_1763" class="data" rules="groups">
+<table id="doc1_1784" class="data" rules="groups">
 <caption>emoji_type\82É\90Ý\92è\82Å\82«\82é\92l</caption>
 <colgroup span="2">
 <col>
@@ -2060,7 +2109,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 </table>
 </div>
 
-<p><span class="note"><a href="#doc1_1817" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(25)</sup></a></span></p>
+<p><span class="note"><a href="#doc1_1838" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="\91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ"><sup>(25)</sup></a></span></p>
 <li> <b>wp_width\83^\83O</b><br></br>\95Ç\8e\86\82Ì\89¡\95\9d\82ð\8ew\92è\82µ\82Ü\82·\81BMode=WP\82Å\89æ\91\9c\90\90¬\82·\82é\8fê\8d\87\81A\82±\82Ì\92l\82ª\8eg\97p\82³\82ê\82Ü\82·\81B
 <li> <b>wp_height\83^\83O</b><br></br>\95Ç\8e\86\82Ì\8fc\95\9d\82ð\8ew\92è\82µ\82Ü\82·\81BMode=WP\82Å\89æ\91\9c\90\90¬\82·\82é\8fê\8d\87\81A\82±\82Ì\92l\82ª\8eg\97p\82³\82ê\82Ü\82·\81B
 <li> <b>cache\83^\83O</b><br></br>\83u\83\89\83E\83U\82Ì\83L\83\83\83b\83V\83\85\83T\83C\83Y\82ð\8ew\92è\82µ\82Ü\82·\81B
@@ -2072,49 +2121,49 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <div class="footnote">
 <ol>
-<li id="doc1_1710" value="20"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1719" value="21"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1728" value="22"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1737" value="23"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1746" value="24"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1817" value="25"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ</ol>
+<li id="doc1_1731" value="20"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1740" value="21"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1749" value="22"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1758" value="23"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1767" value="24"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ<li id="doc1_1838" value="25"> \91å\95\8e\9a\81A\8f¬\95\8e\9a\82Ì\8bæ\95Ê\82È\82µ</ol>
 </div>
 
 <p><br></br></p>
 
-<h2 id="doc1_1864">\83C\83\81\81[\83W\89æ\91\9c\95Ï\8a·\8b@\94\</h2>
+<h2 id="doc1_1885">\83C\83\81\81[\83W\89æ\91\9c\95Ï\8a·\8b@\94\</h2>
 
 <p class="first_ja">mod_chxj\82É\82Í\81AJPEG\81AGIF\81APNG\81ABMP\83t\83@\83C\83\8b\82ð\92u\82¢\82Ä\82¨\82­\82¾\82¯\82Å\81A\83f\83o\83C\83X\92è\8b`\82É\8f]\82Á\82Ä\81A\82»\82ê\82¼\82ê\82Ì\83L\83\83\83\8a\83A\91Î\89\9e\82Ì\83t\83H\81[\83}\83b\83g\82É\95Ï\8a·\82·\82é\8b@\94\\82ª\82 \82è\82Ü\82·\81B\89æ\91\9c\82Ì\83T\83C\83Y\81i\8fc\82w\89¡\81j\82à\81A\92[\96\96\82Ì\89æ\96Ê\83T\83C\83Y\82É\8d\87\82í\82¹\82Ä\95Ï\8a·\82µ\82Ü\82·\81B\89æ\91\9c\82Ì\83T\83C\83Y\81i\83o\83C\83g\90\94\81j\82É\82Â\82¢\82Ä\82Í\81A\83f\83o\83C\83X\92è\8b`\92\86\82Ì\83L\83\83\83b\83V\83\85\83T\83C\83Y\82ð\8c©\82Ä\81A\82»\82Ì\92l\82æ\82è\82à\8f¬\82³\82­\82È\82é\82æ\82¤\82É<b>\93w\97Í</b>\82µ\82Ü\82·\82ª\81A\8c³\82Ì\89æ\91\9c\82ª\91å\82«\82·\82¬\82é\8fê\8d\87\82â\81A\95¡\8eG\82È\89æ\91\9c\82Ì\8fê\8d\87\82É\82Í\81A\83L\83\83\83b\83V\83\85\83T\83C\83Y\82æ\82è\82à\8f¬\82³\82­\82Å\82«\82¸\82É\95\\8e¦\82Å\82«\82È\82¢\8fê\8d\87\82ª\82 \82è\82Ü\82·\81B<br></br>\82»\82ê\82¼\82ê\82Ì\83^\83O\82Å\8ew\92è\82·\82é\8fê\8d\87\82É\82Í\81A\83t\83@\83C\83\8b\96¼\82Ì\8ag\92£\8eq\81i.jpg\82â.gif\93\99\81j\82ð\82Í\82¸\82µ\82½\8c`\82Å\8ew\92è\82µ\82Ü\82·\81B<br></br>\96{\8b@\94\\82É\82Í\82R\82Â\82Ì\83\82\81[\83h\82ª\91\8dÝ\82µ\82Ü\82·\81B\82»\82Ì\83\82\81[\83h\82ð\88È\89º\82É\8bL\82µ\82Ü\82·\81B</p>
 
-<h3 id="doc1_1873">\83T\83\80\83l\83C\83\8b\83\82\81[\83h</h3>
+<h3 id="doc1_1894">\83T\83\80\83l\83C\83\8b\83\82\81[\83h</h3>
 
 <p class="first_ja">\92[\96\96\91¤\89æ\96Ê\83T\83C\83Y\82Ì\96ñ\82R\95ª\82Ì\82P\92ö\93x\82Ì\83T\83C\83Y\81i\8fc\82w\89¡\81j\82É\89æ\91\9c\82ð\8fk\8f¬\95\\8e¦\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1875" class="caption">\83T\83\80\83l\83C\83\8b\83\82\81[\83\8eg\97p\97á</div>
+<div id="doc1_1896" class="caption">\83T\83\80\83l\83C\83\8b\83\82\81[\83\8eg\97p\97á</div>
 <pre class="program" style="margin-top:0">
   &lt;IMG SRC=&quot;/img/logo?Mode=Thumbnail&quot;&gt;
   
 </pre>
 
 
-<h3 id="doc1_1879">\95Ç\8e\86\83\82\81[\83h</h3>
+<h3 id="doc1_1900">\95Ç\8e\86\83\82\81[\83h</h3>
 
 <p class="first_ja">\92[\96\96\91¤\89æ\96Ê\82Ì\83T\83C\83Y\82É\83}\83b\83`\82·\82é\83T\83C\83Y\82É\8ag\91å\81E\8fk\8f¬\82µ\82Ü\82·\81B\89¡\92·\82Ì\89æ\91\9c\82Ì\8fê\8d\87\82É\82Í\81A\8fc\95\9d\82ð\8d\87\82í\82¹\82½\8cã\82É\8d\89E\82ð\83g\83\8a\83~\83\93\83O\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1881" class="caption">\95Ç\8e\86\83\82\81[\83\8eg\97p\97á</div>
+<div id="doc1_1902" class="caption">\95Ç\8e\86\83\82\81[\83\8eg\97p\97á</div>
 <pre class="program" style="margin-top:0">
   &lt;IMG SRC=&quot;/img/logo?Mode=WP&quot;&gt;
   
 </pre>
 
 
-<h3 id="doc1_1885">EzGet\83\82\81[\83h</h3>
+<h3 id="doc1_1906">EzGet\83\82\81[\83h</h3>
 
 <p class="first_ja">\95Ç\8e\86\83_\83E\83\93\83\8d\81[\83h\82ð\8ds\82¢\82½\82¢\8fê\8d\87\82É\8eg\97p\82µ\82Ü\82·\81BEzGET\83\82\81[\83h\82Í\81A\95Ç\8e\86\83\82\81[\83h\82Å\8fo\97Í\82³\82ê\82é\89æ\91\9c\83T\83C\83Y\82Æ\93¯\88ê\83T\83C\83Y\82Ì\89æ\91\9c\82ª\8eg\97p\82³\82ê\82Ü\82·\81B</p>
 
-<div id="doc1_1887" class="caption">EzGet\83\82\81[\83\8eg\97p\97á</div>
+<div id="doc1_1908" class="caption">EzGet\83\82\81[\83\8eg\97p\97á</div>
 <pre class="program" style="margin-top:0">
   &lt;A HREF=&quot;/img/logo?Mode=EzGet&quot;&gt;
   
 </pre>
 
 
-<h3 id="doc1_1891">\82»\82Ì\91¼\82Ì\8b@\94\</h3>
+<h3 id="doc1_1912">\82»\82Ì\91¼\82Ì\8b@\94\</h3>
 
 <p class="first_ja">\83\82\81[\83h\82Ì\91¼\82É\81A\89æ\91\9c\83T\83C\83Y\81i\8fc\82w\89¡\81j\82ð\92¼\90Ú\8ew\92è\82·\82é\82±\82Æ\82à\89Â\94\\82Å\82·\81B<b>w</b>\83p\83\89\83\81\81[\83^\81A<b>h</b>\83p\83\89\83\81\81[\83^\82ð\8eg\97p\82µ\82Ä\8ew\92è\82µ\82Ü\82·\81B</p>
 
@@ -2122,7 +2171,7 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <li> w\83p\83\89\83\81\81[\83^<br></br>\89¡\95\9d\82ð\8ew\92è\82µ\82Ü\82·\81B
 <li> h\83p\83\89\83\81\81[\83^<br></br>\8fc\95\9d\82ð\8ew\92è\82µ\82Ü\82·\81B
 
-<div id="doc1_1911" class="caption">w/h\83p\83\89\83\81\81[\83\8eg\97p\97á</div>
+<div id="doc1_1932" class="caption">w/h\83p\83\89\83\81\81[\83\8eg\97p\97á</div>
 <pre class="program" style="margin-top:0">
   &lt;IMG SRC=&quot;/img/logo?w=100&amp;h=200&quot;&gt;
   
@@ -2132,25 +2181,25 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <p>\8fã\8bL\91S\82Ä\82Ì\83\82\81[\83h\81A\83p\83\89\83\81\81[\83^\82Í\82f\82d\82s\83\8a\83N\83G\83X\83g\82Æ\82µ\82Ä\82Ì\82Ý\8eg\97p\82Å\82«\82Ü\82·\81B</p>
 
-<h2 id="doc1_1922">\82p\82q\83R\81[\83h\8fo\97Í\8b@\94\</h2>
+<h2 id="doc1_1943">\82p\82q\83R\81[\83h\8fo\97Í\8b@\94\</h2>
 
 
-<h3 id="doc1_1924">\82p\82q\83R\81[\83h\8fo\97Í\83n\83\93\83h\83\89\82Ì\93o\98^</h3>
+<h3 id="doc1_1945">\82p\82q\83R\81[\83h\8fo\97Í\83n\83\93\83h\83\89\82Ì\93o\98^</h3>
 
 <p class="first_ja">\82p\82q\83R\81[\83h\8fo\97Í\8b@\94\\82ð\8eg\97p\82·\82é\82É\82Í\81A\82p\82q\83R\81[\83h\83n\83\93\83h\83\89\82ð\93o\98^\82µ\82Ü\82·\81Bhttpd.conf\82É\88È\89º\82Ì\8bL\8fq\82ð\92Ç\89Á\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1926" class="caption">httpd.conf</div>
+<div id="doc1_1947" class="caption">httpd.conf</div>
 <pre class="program" style="margin-top:0">
   AddHandler chxj-qrcode .qrc
 </pre>
 
 <p>\82È\82¨\81A\83n\83\93\83h\83\89\82ð\93o\98^\82µ\82È\82¢\82Å\82à\81A\8fo\97Í\83t\83B\83\8b\83^\81[\82ð\8co\97R\82³\82¹\82é\82±\82Æ\82Å\81A\82p\82q\83R\81[\83h\82ð\8fo\97Í\82³\82¹\82é\82±\82Æ\82à\89Â\94\\82Å\82·\81B\81i\81¦\82p\82q\83R\81[\83h\82Ì\93®\93I\8fo\97Í\82ð\8eQ\8fÆ\81j</p>
 
-<h3 id="doc1_1930">\82p\82q\83R\81[\83h\83\\81[\83X\83t\83@\83C\83\8b\82Ì\90Ý\92u</h3>
+<h3 id="doc1_1951">\82p\82q\83R\81[\83h\83\\81[\83X\83t\83@\83C\83\8b\82Ì\90Ý\92u</h3>
 
 <p class="first_ja">\83n\83\93\83h\83\89\82ð\93o\98^\82µ\82½\82ç\81A\82»\82Ì\93o\98^\82µ\82½\8ag\92£\8eq\82ð\8e\9d\82Â\83t\83@\83C\83\8b\82ð\97p\88Ó\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1932" class="caption">\97á\81Fa.qrc</div>
+<div id="doc1_1953" class="caption">\97á\81Fa.qrc</div>
 <pre class="program" style="margin-top:0">
   &lt;?xml version=1.0 ?&gt;
   
@@ -2173,11 +2222,11 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 <li> data\83^\83Odata\83^\83O\82Í\81A\82p\82q\83R\81[\83h\82É\8fo\97Í\82·\82é\83f\81[\83^\82ð\8ew\92è\82µ\82Ü\82·\81B\89ü\8ds\82µ\82½\8fê\8d\87\82Í\81A\89ü\8ds\95\8e\9a\82à\82p\82q\83R\81[\83h\93à\82É\95\84\8d\86\89»\82³\82ê\82Ü\82·\81B</ol>
 
 
-<h3 id="doc1_1954">\82p\82q\83R\81[\83h\82Ì\93®\93I\8fo\97Í\8b@\94\</h3>
+<h3 id="doc1_1975">\82p\82q\83R\81[\83h\82Ì\93®\93I\8fo\97Í\8b@\94\</h3>
 
 <p class="first_ja">\83v\83\8d\83O\83\89\83\80\93\99\82ð\8eg\97p\82µ\81A\93®\93I\82É\82p\82q\83R\81[\83h\82ð\8fo\97Í\82µ\82½\82¢\8fê\8d\87\82Í\81A\8fã\8bL\82Ì.qrc\83t\83@\83C\83\8b\82Ì\93à\97e\82ð\82»\82Ì\82Ü\82ÜOutputFilter\82É\92Ê\82µ\82Ä\82 \82°\82ê\82Î\82n\82j\82Å\82·\81B\82Â\82Ü\82è\81AChxjConvertRule\83f\83B\83\8c\83N\83e\83B\83u\82Å&quot;EngineOn&quot;\82Æ\8ew\92è\82µ\82½URI\82ª\8ew\82·\83f\83B\83\8c\83N\83g\83\8a\82É\90Ý\92u\82·\82ê\82Î\97Ç\82¢\82Æ\82¢\82¤\82±\82Æ\82Å\82·\81Bmod_chxj\93à\95\94\82Å\81AContent-Type\82ªtext/xml\82Ì\8fê\8d\87\81AQRCode\97p\82Ì\83t\83@\83C\83\8b\82Å\82 \82é\82©\82Ç\82¤\82©\82ð\88ê\93x\93Ç\82Ý\8d\9e\82ñ\82Å\94»\92f\82·\82é\82Ì\82Å\81AContent-Type\82É\82Í\81Atext/xml\82ð\90Ý\92è\82µ\82Ä\82­\82¾\82³\82¢\81B</p>
 
-<div id="doc1_1956" class="caption">php\82Å\82p\82q\83R\81[\83h\82ð\93®\93I\82É\8fo\97Í\82·\82é\97á</div>
+<div id="doc1_1977" class="caption">php\82Å\82p\82q\83R\81[\83h\82ð\93®\93I\82É\8fo\97Í\82·\82é\97á</div>
 <pre class="program" style="margin-top:0">
     &lt;php
       $version = $_POST[&quot;version&quot;];
@@ -2201,82 +2250,82 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <p>\82»\82µ\82Ä\81A\8fã\8bL\82Ì\83R\81[\83h\82ð\81Amod_chxj\95Ï\8a·\83G\83\93\83W\83\93\82ª\8f\88\97\9d\82·\82é\82Í\82¸\82Å\82 \82é\82Æ\82±\82ë\82É\90Ý\92u\82·\82ê\82Î\8a®\97¹\82Å\82·\81B</p>
 
-<h2 id="doc1_1961">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h2>
+<h2 id="doc1_1982">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h2>
 
 
-<h3 id="doc1_1963">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h3>
+<h3 id="doc1_1984">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h3>
 
 <p class="first_ja">Cookie\82ð\8eó\82¯\95t\82¯\82È\82¢\81i\96³\8e\8b\82·\82é\81j\92[\96\96\82Ì\82½\82ß\82ÉCookie\82ð\83V\83~\83\85\83\8c\81[\83g\82µ\82Ü\82·\81B\96{\8b@\94\\82ð\97L\8cø\82É\82·\82é\82½\82ß\82É\82ÍChxjConvertRule\83f\83B\83\8c\83N\83e\83B\83u\82ð\8eg\97p\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81BChxjConvertRule\83f\83B\83\8c\83N\83e\83B\83u\82Ì\91æ\82Q\83p\83\89\83\81\81[\83^\82ÉCookieOn\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_1965" class="caption">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82ð\97L\8cø\82É\82·\82é\97á</div>
+<div id="doc1_1986" class="caption">Cookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82ð\97L\8cø\82É\82·\82é\97á</div>
 <pre class="program" style="margin-top:0">
     ChxjConvertRule &quot;^/chxj.+$&quot; &quot;EngineOn,CookieOn&quot; &quot;NONE&quot;
   
 </pre>
 
 
-<h3 id="doc1_1969">One-Time ID</h3>
+<h3 id="doc1_1990">One-Time ID</h3>
 
 <p class="first_ja">Cookie\83V\83~\83\85\83\8c\81[\83g\82Å\82Í\81Aa\83^\83O\81Aimg\83^\83O\81Aform\83^\83O\82ÌURL\95\94\82ÉOne-Time ID\82ð\96\84\82ß\8d\9e\82Þ\82±\82Æ\82Å\8eÀ\8c»\82µ\82Ü\82·\81B\82»\82Ì\82½\82ß\81A\83\86\81[\83U\82ª\83u\83\89\83E\83U\82Ì\96ß\82é\83{\83^\83\93\93\99\82Å\96ß\82Á\82½\8fê\8d\87\82ÍCookie\82ð\8eæ\93¾\82Å\82«\82È\82­\82È\82è\82Ü\82·\81B</p>
 
-<h3 id="doc1_1972">Cookie\82Ì\95Û\91\8fê\8f\8a</h3>
+<h3 id="doc1_1993">Cookie\82Ì\95Û\91\8fê\8f\8a</h3>
 
 <p class="first_ja">Cookie\82Ì\93à\97e\82Í\83T\81[\83o\91¤\82É\95Û\91\82³\82ê\82Ü\82·\81B\83f\83t\83H\83\8b\83g\82Å\82ÍDBM\82ð\8eg\97p\82µ\81A\95Û\91\83f\83B\83\8c\83N\83g\83\8a\82ÍChxjCookieDir\83f\83B\83\8c\83N\83e\83B\83u\82ð\8eg\97p\82·\82é\82±\82Æ\82Å\8ew\92è\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\8ew\92è\82µ\82È\82©\82Á\82½\8fê\8d\87\82Í\81A/tmp\82É\95Û\91\82³\82ê\82Ü\82·\81B</p>
 
-<div id="doc1_1974" class="caption">ChxjCookieDir\82Ì\97á</div>
+<div id="doc1_1995" class="caption">ChxjCookieDir\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
     ChxjCookieDir /var/abc
   
 </pre>
 
-<p>DBM\82Ì\91ã\82í\82è\82ÉMySQL\82ð\8ew\92è\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B\82»\82Ì\8dÛ\82Í\81AChxjCookieDir\82Í\8ew\92è\82·\82é\95K\97v\82Í\82 \82è\82Ü\82¹\82ñ\81BMySQL\82ð\8eg\97p\82·\82é\82É\82Í\81Aconfigure\8e\9e\82ÉMySQL COOKIE\8b@\94\\82ð\97L\8cø\82É\82µ\82Ä\81A\83R\83\93\83p\83C\83\8b\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B<span class="note"><a href="#doc1_1977" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="Build\82Ì\8d\80\8eQ\8fÆ"><sup>(26)</sup></a></span>\82Ü\82½\88È\89º\82Ì\83f\83B\83\8c\83N\83e\83B\83u\82ð\8ew\92è\82·\82é\95K\97v\82à\82 \82è\82Ü\82·\81B</p>
+<p>DBM\82Ì\91ã\82í\82è\82ÉMySQL\82âmemcached\82ð\8ew\92è\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B\82»\82Ì\8dÛ\82Í\81AChxjCookieDir\82Í\8ew\92è\82·\82é\95K\97v\82Í\82 \82è\82Ü\82¹\82ñ\81BMySQL\82ð\8eg\97p\82·\82é\82É\82Í\81Aconfigure\8e\9e\82ÉMySQL COOKIE\8b@\94\\82ð\97L\8cø\82É\82µ\82Ä\81A\83R\83\93\83p\83C\83\8b\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B<span class="note"><a href="#doc1_1998" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="Build\82Ì\8d\80\8eQ\8fÆ"><sup>(26)</sup></a></span>memcached\82ð\8eg\97p\82·\82é\82É\82Í\81Aconfigure\8e\9e\82ÉMEMCACHE COOKIE\8b@\94\\82ð\97L\8cø\82É\82µ\82Ä\81A\83R\83\93\83p\83C\83\8b\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B<span class="note"><a href="#doc1_2001" onmouseover="hilightSelflink(this)" onmouseout="normal(this)" title="Build\82Ì\8d\80\8eQ\8fÆ"><sup>(27)</sup></a></span>\82Ü\82½MySQL\82ð\8eg\97p\82·\82é\8fê\8d\87\82É\82Í\88È\89º\82Ì\83f\83B\83\8c\83N\83e\83B\83u\82ð\8ew\92è\82·\82é\95K\97v\82à\82 \82è\82Ü\82·\81B</p>
 
 <ol>
 <li> ChxjCookieMysqlHost<br></br> MySQL\83T\81[\83o\82Ì\93®\8dì\82·\82é\83z\83X\83g\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_1986" class="caption">ChxjCookieMysqlHost\82Ì\97á</div>
+<div id="doc1_2010" class="caption">ChxjCookieMysqlHost\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlHost &quot;localhost&quot;
       
 </pre>
 <li> ChxjCookieMysqlPort<br></br> MySQL\83T\81[\83o\82Ì\83|\81[\83g\94Ô\8d\86\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_1994" class="caption">ChxjCookieMysqlPort\82Ì\97á</div>
+<div id="doc1_2018" class="caption">ChxjCookieMysqlPort\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlPort 3306
       
 </pre>
 <li> ChxjCookieMysqlDatabase<br></br> MySQL\83T\81[\83o\82Ì\83f\81[\83^\83x\81[\83X\96¼\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_2002" class="caption">ChxjCookieMysqlDatabase\82Ì\97á</div>
+<div id="doc1_2026" class="caption">ChxjCookieMysqlDatabase\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlDatabase &quot;test_db&quot;
       
 </pre>
 <li> ChxjCookieMysqlUsername<br></br> MySQL\83T\81[\83o\82É\90Ú\91±\82·\82é\8dÛ\82É\8eg\97p\82·\82é\83\86\81[\83U\96¼\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_2010" class="caption">ChxjCookieMysqlUsername\82Ì\97á</div>
+<div id="doc1_2034" class="caption">ChxjCookieMysqlUsername\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlUsername &quot;roottest&quot;
       
 </pre>
 <li> ChxjCookieMysqlPassword<br></br> MySQL\83T\81[\83o\82É\90Ú\91±\82·\82é\8dÛ\82É\8eg\97p\82·\82é\83p\83X\83\8f\81[\83h\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_2018" class="caption">ChxjCookieMysqlPassword\82Ì\97á</div>
+<div id="doc1_2042" class="caption">ChxjCookieMysqlPassword\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlPassword &quot;pwtest&quot;
       
 </pre>
 <li> ChxjCookieMysqlSocketPath<br></br> MySQL\82Ì\83\\83P\83b\83g\83p\83X\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_2026" class="caption">ChxjCookieMysqlSocketPath\82Ì\97á</div>
+<div id="doc1_2050" class="caption">ChxjCookieMysqlSocketPath\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlSocketPath  &quot;/tmp/mysql.sock&quot;
       
 </pre>
 <li> ChxjCookieMysqlCharset<br></br> MySQL\82Ì\83G\83\93\83R\81[\83h\82ð\8ew\92è\82µ\82Ü\82·\81B
-<div id="doc1_2034" class="caption">ChxjCookieMysqlCharset\82Ì\97á</div>
+<div id="doc1_2058" class="caption">ChxjCookieMysqlCharset\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlCharset  &quot;utf8&quot;
       
 </pre>
 <li> <p>ChxjCookieMysqlTablename<br></br> MySQL\82Ì\83N\83b\83L\81[\82ð\95Û\91\82·\82é\83e\81[\83u\83\8b\96¼\82ð\8ew\92è\82µ\82Ü\82·\81B</p>
 
-<div id="doc1_2042" class="caption">ChxjCookieMysqlTablename\82Ì\97á</div>
+<div id="doc1_2066" class="caption">ChxjCookieMysqlTablename\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
          ChxjCookieMysqlTablename  &quot;chxj_cookie&quot;
       
@@ -2284,18 +2333,34 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <p>\8fã\8bL\82Ì\82æ\82¤\82É&quot;chxj_cookie&quot;\82Æ\8ew\92è\82·\82é\82Æ\81A\8eÀ\8dÛ\82É\8dì\90¬\82³\82ê\82é\83e\81[\83u\83\8b\82Í\81Achxj_cookie\82Æchxj_cookie_expire\83e\81[\83u\83\8b\82Ì2\82Â\82É\82È\82è\82Ü\82·\81B</p></ol>
 
+<p>memcached\82ð\8eg\97p\82·\82é\8fê\8d\87\82É\82Í\88È\89º\82Ì\83f\83B\83\8c\83N\83e\83B\83u\82ð\8ew\92è\82·\82é\95K\97v\82à\82 \82è\82Ü\82·\81B</p>
+
+<ol>
+<li> ChxjCookieMemcacheHost<br></br> memcached\82Ì\93®\8dì\82·\82é\83z\83X\83g\82ð\8ew\92è\82µ\82Ü\82·\81B
+<div id="doc1_2077" class="caption">ChxjCookieMemcacheHost\82Ì\97á</div>
+<pre class="program" style="margin-top:0">
+         ChxjCookieMemcacheHost &quot;localhost&quot;
+      
+</pre>
+<li> ChxjCookieMemcachePort<br></br> memcached\82Ì\83|\81[\83g\94Ô\8d\86\82ð\8ew\92è\82µ\82Ü\82·\81B
+<div id="doc1_2085" class="caption">ChxjCookieMemcachePort\82Ì\97á</div>
+<pre class="program" style="margin-top:0">
+         ChxjCookieMemcachePort 11211
+      
+</pre></ol>
+
 
 <div class="footnote">
 <ol>
-<li id="doc1_1977" value="26"> Build\82Ì\8d\80\8eQ\8fÆ</ol>
+<li id="doc1_1998" value="26"> Build\82Ì\8d\80\8eQ\8fÆ<li id="doc1_2001" value="27"> Build\82Ì\8d\80\8eQ\8fÆ</ol>
 </div>
 
 
-<h3 id="doc1_2048">Cookie\82Ì\95Û\8e\9d\8aú\8aÔ</h3>
+<h3 id="doc1_2091">Cookie\82Ì\95Û\8e\9d\8aú\8aÔ</h3>
 
 <p class="first_ja">ChxjCookieTimeout\83f\83B\83\8c\83N\83e\83B\83u\82Å\95Û\8e\9d\8aú\8aÔ\82ð\8ew\92è\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\8ew\92è\82µ\82È\82©\82Á\82½\8fê\8d\87\82Í1800\95b\82Å\83T\81[\83o\82É\95Û\91\82³\82ê\82Ä\82¢\82éCookie\82Í\8dí\8f\9c\82³\82ê\82Ü\82·\81B</p>
 
-<div id="doc1_2050" class="caption">ChxjCookieTimeout\82Ì\97á</div>
+<div id="doc1_2093" class="caption">ChxjCookieTimeout\82Ì\97á</div>
 <pre class="program" style="margin-top:0">
     &lt;Location /&gt;
       ChxjCookieTimeout 10
@@ -2305,10 +2370,10 @@ ChxjConvRule &quot;^/chxj.+$&quot; &quot;EngineOn&quot; &quot;EUC-JP&quot;
 
 <p>\8fã\8bL\82Ì\97á\82Í\81A10\95b\82Å\83^\83C\83\80\83A\83E\83g(\83T\81[\83o\82©\82ç\8dí\8f\9c)\82·\82é\82æ\82¤\82É\8ew\92è\82µ\82Ä\82¢\82Ü\82·\81B</p>
 
-<h2 id="doc1_2055">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h2>
+<h2 id="doc1_2098">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h2>
 
 
-<h3 id="doc1_2057">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h3>
+<h3 id="doc1_2100">Referer\83V\83~\83\85\83\8c\81[\83g\8b@\94\(EXPERIMENTAL)</h3>
 
 <p class="first_ja">DoCoMo\92[\96\96\82È\82Ç\82ÌReferer\82É\91Î\89\9e\82µ\82Ä\82¢\82È\82¢\8b@\8eí\82Ì\82½\82ß\82ÉReferer\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82ð\92ñ\8b\9f\82µ\82Ü\82·\81B\96{\8b@\94\\82Í\81ACookie\83V\83~\83\85\83\8c\81[\83g\8b@\94\\82ð\97L\8cø\82É\82·\82é\82Æ\81A\8e©\93®\82Å\97L\8cø\82É\82È\82è\82Ü\82·(\8f«\97\88\93I\82É\82Í\95Ï\8dX\97\\92è)\81B</p>
 </body>
index c66f98f..f16fe41 100644 (file)
@@ -137,6 +137,32 @@ mod_chxj
       </program>
   </subsection>
 </subsection>
+<subsection title="Cookie¥·¥ß¥å¥ì¡¼¥Èµ¡Ç½¤Çmemcached¤ò»ÈÍѤ¹¤ë¾ì¹ç">
+  <subsection title="--enable-memcache-cookie">
+      Cookie¥·¥ß¥å¥ì¡¼¥Èµ¡Ç½¤ò»ÈÍѤ¹¤ëºÝ¡¢ÊݸÀè¤ò¥Ç¥Õ¥©¥ë¥È¤ÎDBM¤Ç¤Ï̵¤¯¡¢memcached¤ËÊݸ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
+      Default¤ÎDBM¤ÇÎɤ¤¾ì¹ç¤ä¡¢Cookie¥·¥ß¥å¥ì¡¼¥Èµ¡Ç½¤ò»ÈÍѤ·¤Ê¤¤¾ì¹ç¤Ï»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
+      ÊÌÅÓmemcached¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢ËÜ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¡¢--with-apr-memcache-header¡¢--with-apr-memcache-lib-dir¤â»ØÄꤷ¤Þ¤¹¡£
+      ¤³¤ì¤Ïapr_memcache¤Î¥Ø¥Ã¥À¤È¥é¥¤¥Ö¥é¥ê¤¬É¬Íפʤ³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
+      <program title="--enable-memcache-cookie">
+         $ ./configure --enable-memcache-cookie --with-apr-memcache-header=/usr/include/apr-memcache0 --with-apr-memcache-lib-dir=/usr/lib
+      </program>
+      ¾åµ­¤Ï¡¢/usr/include/apr_memcache0°Ê²¼¤Ëapr-memcacheÍѤΥإåÀ¤¬¤¢¤ê¡¢/usr/lib°Ê²¼¤Ëlibapr_memcache.so¤¬¤¢¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£
+  </subsection>
+  <subsection title="--with-apr-memcache-header">
+      --enable-memcache-cookie¤ò»ØÄꤷ¤¿¾ì¹ç¤Ïɬ¿Ü¤Ç¤¹¡£
+      apr-memcache¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¾ì½ê¤ò»ØÄꤷ¤Þ¤¹¡£
+      <program title="--with-apr-memcache-header">
+         $ ./configure --enable-memcache-cookie --with-apr-memcache-header=/usr/include/apr_memcache0  --with-apr-memcache-lib-dir=/usr/lib
+      </program>
+  </subsection>
+  <subsection title="--with-apr-memcache-lib-dir">
+      --enable-mysql-cookie¤ò»ØÄꤷ¤¿¾ì¹ç¤Ïɬ¿Ü¤Ç¤¹¡£
+      apr-memcache¤Î¥é¥¤¥Ö¥é¥ê¡¢libapr_memcache.so¤ÎÀßÃÖ¤µ¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£
+      <program title="--with-apr-memcache-lib-dir">
+         $ ./configure --enable-memcache-cookie --with-apr-memcache-header=/usr/include/apr_memcache0  --with-apr-memcache-lib-dir=/usr/lib
+      </program>
+  </subsection>
+</subsection>
 </section>
 <section title="Configuration">
 °Ê²¼¤Ïmod_chxj¤¬/usr/lib/apache2/modules¥Ç¥£¥ì¥¯¥È¥êÇÛ²¼¤ËÀßÃÖ¤µ¤ì¤¿¤â¤Î¤È¤·¤Æ¤¤¤Þ¤¹
@@ -1532,9 +1558,10 @@ Cookie
     ChxjCookieDir /var/abc
   </program>
 
-DBM¤ÎÂå¤ï¤ê¤ËMySQL¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤½¤ÎºÝ¤Ï¡¢ChxjCookieDir¤Ï»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
+DBM¤ÎÂå¤ï¤ê¤ËMySQL¤ämemcached¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤½¤ÎºÝ¤Ï¡¢ChxjCookieDir¤Ï»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
 MySQL¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢configure»þ¤ËMySQL COOKIEµ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ¡¢¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£<note>Build¤Î¹à»²¾È</note>
-¤Þ¤¿°Ê²¼¤Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ò»ØÄꤹ¤ëɬÍפ⤢¤ê¤Þ¤¹¡£
+memcached¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢configure»þ¤ËMEMCACHE COOKIEµ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ¡¢¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£<note>Build¤Î¹à»²¾È</note>
+¤Þ¤¿MySQL¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ë¤Ï°Ê²¼¤Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ò»ØÄꤹ¤ëɬÍפ⤢¤ê¤Þ¤¹¡£
 <ol>
   <li>ChxjCookieMysqlHost<br />
       MySQL¥µ¡¼¥Ð¤ÎÆ°ºî¤¹¤ë¥Û¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£
@@ -1586,6 +1613,22 @@ MySQL
       ¾åµ­¤Î¤è¤¦¤Ë"chxj_cookie"¤È»ØÄꤹ¤ë¤È¡¢¼ÂºÝ¤ËºîÀ®¤µ¤ì¤ë¥Æ¡¼¥Ö¥ë¤Ï¡¢chxj_cookie¤Èchxj_cookie_expire¥Æ¡¼¥Ö¥ë¤Î2¤Ä¤Ë¤Ê¤ê¤Þ¤¹¡£
   </li>
 </ol>
+
+memcached¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ë¤Ï°Ê²¼¤Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ò»ØÄꤹ¤ëɬÍפ⤢¤ê¤Þ¤¹¡£
+<ol>
+  <li>ChxjCookieMemcacheHost<br />
+      memcached¤ÎÆ°ºî¤¹¤ë¥Û¥¹¥È¤ò»ØÄꤷ¤Þ¤¹¡£
+      <program title="ChxjCookieMemcacheHost¤ÎÎã">
+         ChxjCookieMemcacheHost "localhost"
+      </program>
+  </li>
+  <li>ChxjCookieMemcachePort<br />
+      memcached¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ò»ØÄꤷ¤Þ¤¹¡£
+      <program title="ChxjCookieMemcachePort¤ÎÎã">
+         ChxjCookieMemcachePort 11211
+      </program>
+  </li>
+</ol>
 </subsection>
 <subsection title="Cookie¤ÎÊÝ»ý´ü´Ö">
 ChxjCookieTimeout¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ÇÊÝ»ý´ü´Ö¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï1800Éäǥµ¡¼¥Ð¤ËÊݸ¤µ¤ì¤Æ¤¤¤ëCookie¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£
diff --git a/include/chxj_memcache.h b/include/chxj_memcache.h
new file mode 100644 (file)
index 0000000..8557ac2
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2005-2008 Atsushi Konno All rights reserved.
+ * Copyright (C) 2005 QSDN,Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifdef USE_MEMCACHE_COOKIE
+#ifndef __CHXJ_MEMCACHE_H__
+#define __CHXJ_MEMCACHE_H__
+
+#include "mod_chxj.h"
+#include "apr.h"
+#include "apr_memcache.h"
+
+#define DEFAULT_MEMCACHE_HOST "localhost"
+
+typedef struct {
+  char *host;
+  apr_port_t port;
+} memcache_t;
+
+
+extern int chxj_memcache_init(request_rec *r, mod_chxj_config *m);
+extern int chxj_memcache_and_memcache_server_create(request_rec *r, mod_chxj_config *m, apr_memcache_server_t **memcache_server, apr_memcache_t **memcache);
+extern int chxj_memcache_set_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id, const char *store_string);
+extern char *chxj_memcache_get_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id);
+extern int chxj_memcache_delete_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id);
+extern int chxj_memcache_reset_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id);
+
+#endif
+#endif
index 36de614..d56efd8 100644 (file)
@@ -25,6 +25,9 @@
   fclose(fp);                                   \
 } while(0)
 
+#define CHXJ_TRUE    (1)
+#define CHXJ_FALSE   (0)
+
 #ifdef UNUSED
 #elif defined(__GNUC__)
 # define UNUSED(x) UNUSED_ ## x __attribute__((unused))
@@ -297,8 +300,10 @@ typedef enum {
 typedef struct mod_chxj_config mod_chxj_config;
 
 #include "chxj_emoji.h"
-#ifdef USE_MYSQL_COOKIE
-#include "chxj_mysql.h"
+#if defined(USE_MYSQL_COOKIE)
+#  include "chxj_mysql.h"
+#elif defined(USE_MEMCACHE_COOKIE)
+#  include "chxj_memcache.h"
 #endif
 
 struct mod_chxj_config {
@@ -339,8 +344,10 @@ struct mod_chxj_config {
   softbank2imode_t      *emoji_softbank2imode_utf8[EMOJI_SOFTBANK2IMODE_COUNT];
 
 
-#ifdef USE_MYSQL_COOKIE
+#if defined(USE_MYSQL_COOKIE)
   mysql_t               mysql;
+#elif defined(USE_MEMCACHE_COOKIE)
+  memcache_t            memcache;
 #endif
 };
 
index f268170..8e7daaa 100644 (file)
@@ -32,7 +32,8 @@ libmod_chxj_la_SOURCES = mod_chxj.c \
     chxj_preg_replace.c \
     chxj_emoji.c \
     chxj_jreserved_tag.c \
-    chxj_mysql.c
+    chxj_mysql.c \
+    chxj_memcache.c
 
 
 libmod_chxj_la_CFLAGS = $(AM_CFLAGS) -O2 -prefer-pic @QDEFS@ @DDEFS@ -I. -I../include 
index e23e41d..3071c80 100644 (file)
@@ -76,7 +76,7 @@ am_libmod_chxj_la_OBJECTS = libmod_chxj_la-mod_chxj.lo \
        libmod_chxj_la-chxj_preg_replace.lo \
        libmod_chxj_la-chxj_emoji.lo \
        libmod_chxj_la-chxj_jreserved_tag.lo \
-       libmod_chxj_la-chxj_mysql.lo
+       libmod_chxj_la-chxj_mysql.lo libmod_chxj_la-chxj_memcache.lo
 libmod_chxj_la_OBJECTS = $(am_libmod_chxj_la_OBJECTS)
 libmod_chxj_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libmod_chxj_la_CFLAGS) \
@@ -252,7 +252,8 @@ libmod_chxj_la_SOURCES = mod_chxj.c \
     chxj_preg_replace.c \
     chxj_emoji.c \
     chxj_jreserved_tag.c \
-    chxj_mysql.c
+    chxj_mysql.c \
+    chxj_memcache.c
 
 libmod_chxj_la_CFLAGS = $(AM_CFLAGS) -O2 -prefer-pic @QDEFS@ @DDEFS@ -I. -I../include 
 AM_CFLAGS = @CFLAGS@ -O2 -prefer-pic @QDEFS@ @DDEFS@ -I. -I../include 
@@ -342,6 +343,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_jreserved_tag.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_load_device_data.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_load_emoji_data.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_memcache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_mysql.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_node_convert.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmod_chxj_la-chxj_preg_replace.Plo@am__quote@
@@ -612,6 +614,13 @@ libmod_chxj_la-chxj_mysql.lo: chxj_mysql.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_chxj_la_CFLAGS) $(CFLAGS) -c -o libmod_chxj_la-chxj_mysql.lo `test -f 'chxj_mysql.c' || echo '$(srcdir)/'`chxj_mysql.c
 
+libmod_chxj_la-chxj_memcache.lo: chxj_memcache.c
+@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_chxj_la_CFLAGS) $(CFLAGS) -MT libmod_chxj_la-chxj_memcache.lo -MD -MP -MF $(DEPDIR)/libmod_chxj_la-chxj_memcache.Tpo -c -o libmod_chxj_la-chxj_memcache.lo `test -f 'chxj_memcache.c' || echo '$(srcdir)/'`chxj_memcache.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libmod_chxj_la-chxj_memcache.Tpo $(DEPDIR)/libmod_chxj_la-chxj_memcache.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='chxj_memcache.c' object='libmod_chxj_la-chxj_memcache.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_chxj_la_CFLAGS) $(CFLAGS) -c -o libmod_chxj_la-chxj_memcache.lo `test -f 'chxj_memcache.c' || echo '$(srcdir)/'`chxj_memcache.c
+
 mostlyclean-libtool:
        -rm -f *.lo
 
index a2d3a30..48bf342 100644 (file)
 #include "apr_base64.h"
 #include "apr_uri.h"
 
-#ifdef USE_MYSQL_COOKIE
-#include "chxj_mysql.h"
+#if defined(USE_MYSQL_COOKIE)
+#  include "chxj_mysql.h"
+#elif defined(USE_MEMCACHE_COOKIE)
+#  include "chxj_memcache.h"
 #endif
 
 static char *s_get_hostname_from_url(request_rec *r, char *value);
@@ -243,7 +245,7 @@ chxj_save_cookie(request_rec *r)
     }
   }
   if (! chxj_mysql_insert_or_update_cookie(r, dconf, cookie->cookie_id, store_string)) {
-    ERR(r, "cannot create cookie table:[%s]", dconf->mysql.tablename);
+    ERR(r, "cannot store to cookie table:[%s]", dconf->mysql.tablename);
     goto on_error;
   }
 
@@ -252,6 +254,17 @@ chxj_save_cookie(request_rec *r)
 
 #elif defined(USE_MEMCACHE_COOKIE)
 
+  if (! chxj_memcache_init(r, dconf)) {
+    ERR(r, "Cannot create memcache server");
+    goto on_error;
+  }
+
+  if (! chxj_memcache_set_cookie(r, dconf, cookie->cookie_id, store_string)) {
+    ERR(r, "cannot store to memcache host:[%s] port:[%d]", dconf->memcache.host, dconf->memcache.port);
+    goto on_error;
+  }
+  DBG(r, "stored DATA:[%s]", chxj_memcache_get_cookie(r, dconf, cookie->cookie_id));
+
 #else
   file = chxj_cookie_db_lock(r);
   if (! file) {
@@ -405,6 +418,17 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
   /* *NEED NOT* close database. */
   /* chxj_close_mysql_handle(); */
 #elif defined(USE_MEMCACHE_COOKIE)
+
+  if (! chxj_memcache_init(r, dconf)) {
+    ERR(r, "Cannot create memcache server");
+    goto on_error;
+  }
+
+  if (! chxj_memcache_set_cookie(r, dconf, cookie->cookie_id, store_string)) {
+    ERR(r, "cannot store to memcache host:[%s] port:[%d]", dconf->memcache.host, dconf->memcache.port);
+    goto on_error;
+  }
+
 #else
   file = chxj_cookie_db_lock(r);
   if (! file) {
@@ -538,6 +562,17 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
   /* chxj_close_mysql_handle(); */
 
 #elif defined(USE_MEMCACHE_COOKIE)
+
+  if (! chxj_memcache_init(r, dconf)) {
+    ERR(r, "Cannot create memcache server");
+    goto on_error0;
+  }
+
+  if (! (load_string = chxj_memcache_get_cookie(r, dconf, cookie->cookie_id))) {
+    ERR(r, "cannot store to memcache host:[%s] port:[%d]", dconf->memcache.host, dconf->memcache.port);
+    goto on_error0;
+  }
+
 #else 
   file = chxj_cookie_db_lock(r);
   if (! file) {
@@ -820,6 +855,17 @@ chxj_delete_cookie(request_rec *r, char *cookie_id)
   }
 
 #elif defined(USE_MEMCACHE_COOKIE)
+
+  if (! chxj_memcache_init(r, dconf)) {
+    ERR(r, "Cannot create memcache server");
+    goto on_error0;
+  }
+
+  if (! chxj_memcache_delete_cookie(r, dconf, cookie_id)) {
+    ERR(r, "cannot store to memcache host:[%s] port:[%d]", dconf->memcache.host, dconf->memcache.port);
+    goto on_error0;
+  }
+
 #else
   file = chxj_cookie_db_lock(r);
   if (! file) {
@@ -974,6 +1020,17 @@ chxj_save_cookie_expire(request_rec *r, cookie_t *cookie)
   /* *NEED NOT* close database. */
   /* chxj_close_mysql_handle(); */
 #elif defined(USE_MEMCACHE_COOKIE)
+
+  if (! chxj_memcache_init(r, dconf)) {
+    ERR(r, "Cannot create memcache server");
+    return;
+  }
+
+  if (! chxj_memcache_reset_cookie(r, dconf, cookie->cookie_id)) {
+    ERR(r, "cannot store to memcache host:[%s] port:[%d]", dconf->memcache.host, dconf->memcache.port);
+    return;
+  }
+
 #else
   file = chxj_cookie_expire_db_lock(r);
   if (! file) {
@@ -1144,6 +1201,10 @@ chxj_delete_cookie_expire(request_rec *r, char *cookie_id)
     goto on_error0;
   }
 #elif defined(USE_MEMCACHE_COOKIE)
+
+  /* nothing */
+  DBG(r, "nothing: cookie_id:[%s]", cookie_id);
+
 #else
   file = chxj_cookie_expire_db_lock(r);
   if (! file) {
@@ -1186,7 +1247,9 @@ on_error1:
   chxj_cookie_expire_db_unlock(r, file);
 #endif
 
+#if !defined(USE_MEMCACHE_COOKIE)
 on_error0:
+#endif
   return;
 
 }
@@ -1215,6 +1278,10 @@ chxj_cookie_expire_gc(request_rec *r)
   }
 
 #elif defined(USE_MEMCACHE_COOKIE)
+
+  /* nothing */
+  DBG(r, "nothing:");
+
 #else
   file = chxj_cookie_expire_db_lock(r);
   if (! file) {
diff --git a/src/chxj_memcache.c b/src/chxj_memcache.c
new file mode 100644 (file)
index 0000000..003ec89
--- /dev/null
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2005-2008 Atsushi Konno All rights reserved.
+ * Copyright (C) 2005 QSDN,Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifdef USE_MEMCACHE_COOKIE
+#include "mod_chxj.h"
+#include "chxj_cookie.h"
+#include "chxj_url_encode.h"
+#include "chxj_apply_convrule.h"
+#include "chxj_str_util.h"
+
+#include "ap_release.h"
+
+#include "apu.h"
+#include "apr_uuid.h"
+#include "apr_md5.h"
+#include "apr_base64.h"
+#include "apr_uri.h"
+
+#include <unistd.h>
+
+/* for apr-memcache */
+#include "apr_memcache.h"
+
+#define MEMCACHE_MIN_CONNECTION (0)
+#define MEMCACHE_SMAX_CONNECTION (1)
+#define MEMCACHE_MAX_CONNECTION (1)
+#define MEMCACHE_TTL_CONNECTION (60)
+
+
+#define MEMCACHE_MAX_SERVER (10)
+#define MEMCACHE_FLAGS (0)
+
+#define DEFAULT_MEMCACHE_TIMEOUT (1000)
+#define DEFAULT_DELETE_TIMEOUT (0)
+
+#define DEFAULT_COOKIE_DB_NAME "chxj_cookie"
+#define DEFAULT_COOKIE_EXPIRE_DB_NAME "chxj_cookie_expire"
+
+/* The underlying apr_memcache system is thread safe. */
+static apr_memcache_t* mc = NULL;
+
+static apr_status_t
+_memcache_cleanup(void *UNUSED(notused))
+{
+  mc = NULL;
+  return APR_SUCCESS;
+}
+
+int
+chxj_memcache_init(request_rec *r, mod_chxj_config *m)
+{
+  apr_memcache_server_t* st;
+  DBG(r, "start chxj_memcache_init()");
+  if (! mc) {
+    if (!chxj_memcache_and_memcache_server_create(r, m, &st, &mc)) {
+      ERR(r, "failed: chxj_memcache_and_memcache_server_create()");
+      return CHXJ_FALSE;
+    }
+    apr_pool_cleanup_register(r->pool, (void *)NULL, _memcache_cleanup, _memcache_cleanup);
+  }
+  DBG(r, "end chxj_memcache_init()");
+  return CHXJ_TRUE;
+}
+
+int
+chxj_memcache_and_memcache_server_create(request_rec *r, mod_chxj_config *m, apr_memcache_server_t **memcache_server, apr_memcache_t **memcache)
+{
+  DBG(r, "start chxj_memcache_server_create()");
+  if (apr_memcache_server_create(r->pool, 
+                                 m->memcache.host,
+                                 m->memcache.port,
+                                 MEMCACHE_MIN_CONNECTION, 
+                                 MEMCACHE_SMAX_CONNECTION,
+                                 MEMCACHE_MAX_CONNECTION,
+                                 MEMCACHE_TTL_CONNECTION,
+                                 memcache_server) != APR_SUCCESS) {
+    ERR(r, "failed apr_memcache_server_create() host:[%s] port:[%d]", m->memcache.host, m->memcache.port);
+    return CHXJ_FALSE;
+  }
+  DBG(r, "done create_server");
+  if (apr_memcache_create(r->pool, MEMCACHE_MAX_SERVER, MEMCACHE_FLAGS, memcache) != APR_SUCCESS) {
+    ERR(r, "failed apr_memcache_create()");
+    return CHXJ_FALSE;
+  }
+  DBG(r, "done create memcache");
+  if (apr_memcache_add_server(*memcache, *memcache_server) != APR_SUCCESS) {
+    ERR(r, "failed apr_memcache_add_server()");
+    return CHXJ_FALSE;
+  }
+  DBG(r, "end chxj_memcache_server_create()");
+
+  return CHXJ_TRUE;
+}
+
+
+int
+chxj_memcache_set_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id, const char *store_string)
+{
+  apr_uint32_t timeout = (apr_uint32_t) ((m->cookie_timeout) ? m->cookie_timeout : DEFAULT_COOKIE_TIMEOUT);
+  DBG(r, "start chxj_memcache_set_cookie()");
+
+  if (apr_memcache_set(mc, cookie_id, (char *)store_string, strlen(store_string), timeout, 0) != APR_SUCCESS) {
+    ERR(r, "failed: apr_memcache_set()");
+    return CHXJ_FALSE;
+  }
+
+  DBG(r, "end chxj_memcache_set_cookie()");
+  return CHXJ_TRUE;
+}
+
+
+int
+chxj_memcache_reset_cookie(request_rec *r, mod_chxj_config *m, const char *cookie_id)
+{
+  apr_uint32_t timeout = (apr_uint32_t) ((m->cookie_timeout) ? m->cookie_timeout : DEFAULT_COOKIE_TIMEOUT);
+  char *store_string;
+  DBG(r, "start chxj_memcache_reset_cookie()");
+
+
+  if (! (store_string = chxj_memcache_get_cookie(r, m, cookie_id))) {
+    ERR(r, "failed: chxj_memcache_get_cookie() cookie_id:[%s]", cookie_id);
+    return CHXJ_FALSE;
+  }
+
+  if (apr_memcache_set(mc, cookie_id, (char *)store_string, strlen(store_string), timeout, 0) != APR_SUCCESS) {
+    ERR(r, "failed: apr_memcache_set()");
+    return CHXJ_FALSE;
+  }
+
+  DBG(r, "end chxj_memcache_reset_cookie()");
+  return CHXJ_TRUE;
+}
+
+
+char *
+chxj_memcache_get_cookie(request_rec *r, mod_chxj_config *UNUSED(m), const char *cookie_id)
+{
+  char *load_string;
+  char *ret_value;
+  apr_size_t len;
+  apr_status_t ret;
+  DBG(r, "start chxj_memcache_get_cookie()");
+
+  if ((ret = apr_memcache_getp(mc, r->pool, cookie_id, &load_string, &len, 0)) != APR_SUCCESS) {
+    ERR(r, "failed: apr_memcache_get() cookie_id:[%s] ret:[%d]", cookie_id, ret);
+    return NULL;
+  }
+  
+  ret_value = apr_palloc(r->pool, len+1);
+  memset(ret_value, 0, len+1);
+  memcpy(ret_value, load_string, len);
+
+  DBG(r, "end chxj_memcache_get_cookie()");
+  return ret_value;
+}
+
+
+int
+chxj_memcache_delete_cookie(request_rec *r, mod_chxj_config *UNUSED(m),  const char *cookie_id)
+{
+  DBG(r, "start chxj_memcache_delete_cookie()");
+
+  if (apr_memcache_delete(mc, cookie_id, 0) != APR_SUCCESS) {
+    ERR(r, "failed: apr_memcache_delete() cookie_id:[%s]", cookie_id);
+    return CHXJ_FALSE;
+  }
+
+  DBG(r, "end chxj_memcache_delete_cookie()");
+  return CHXJ_TRUE;
+}
+
+
+
+#endif
+/*
+ * vim:ts=2 et
+ */
index afccbeb..5d763db 100644 (file)
@@ -1413,10 +1413,14 @@ chxj_create_per_dir_config(apr_pool_t *p, char *arg)
   conf->server_side_encoding = NULL;
   conf->cookie_db_dir    = NULL;
   conf->cookie_timeout   = 0;
-#ifdef USE_MYSQL_COOKIE
+#if defined(USE_MYSQL_COOKIE)
   memset((void*)&conf->mysql, 0, sizeof(mysql_t));
   conf->mysql.port       = MYSQL_PORT;
   conf->mysql.host       = NULL;
+#elif defined(USE_MEMCACHE_COOKIE)
+  memset((void*)&conf->memcache, 0, sizeof(memcache_t));
+  conf->memcache.host    = NULL;
+  conf->memcache.port    = 0;
 #endif
 
   if (arg == NULL) {
@@ -1554,7 +1558,7 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
     mrg->cookie_timeout   = 0;
   }
 
-#ifdef USE_MYSQL_COOKIE
+#if defined(USE_MYSQL_COOKIE)
   if (add->mysql.host) {
     mrg->mysql.host = apr_pstrdup(p, add->mysql.host);
   }
@@ -1634,6 +1638,26 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
     mrg->mysql.charset = NULL;
   }
   
+#elif defined(USE_MEMCACHE_COOKIE)
+  if (add->memcache.host) {
+    mrg->memcache.host = apr_pstrdup(p, add->memcache.host);
+  }
+  else if (base->memcache.host) {
+    mrg->memcache.host = apr_pstrdup(p, base->memcache.host);
+  }
+  else {
+    mrg->memcache.host = NULL;
+  }
+  if (add->memcache.port) {
+    mrg->memcache.port = add->memcache.port;
+  }
+  else if (base->memcache.port) {
+    mrg->memcache.port = base->memcache.port;
+  }
+  else {
+    mrg->memcache.port = 0;
+  }
+
 #endif
   return mrg;
 }
@@ -2080,7 +2104,7 @@ cmd_set_cookie_timeout(
 }
 
 
-#ifdef USE_MYSQL_COOKIE
+#if defined(USE_MYSQL_COOKIE)
 static const char *
 cmd_set_cookie_mysql_database(
   cmd_parms   *cmd, 
@@ -2194,7 +2218,6 @@ cmd_set_cookie_mysql_host(
   dconf = (mod_chxj_config *)mconfig;
 
   dconf->mysql.host = apr_pstrdup(cmd->pool, arg);
-fprintf(stderr, "mysql.host=[%s]\n", dconf->mysql.host);
 
   return NULL;
 }
@@ -2236,6 +2259,48 @@ cmd_set_cookie_mysql_charset(
 
   return NULL;
 }
+#elif defined(USE_MEMCACHE_COOKIE)
+static const char *
+cmd_set_cookie_memcache_port(
+  cmd_parms   *UNUSED(cmd), 
+  void        *mconfig, 
+  const char  *arg)
+{
+  mod_chxj_config *dconf;
+
+  if (strlen(arg) > 255) 
+    return "mod_chxj: ChxjCookieMemcachePort is too long.";
+
+  dconf = (mod_chxj_config *)mconfig;
+
+  if (chxj_chk_numeric(arg) != 0)
+    return "mod_chxj: ChxjCookieMemcachePort is not numeric.";
+
+  dconf = (mod_chxj_config *)mconfig;
+
+  dconf->memcache.port = (apr_port_t)chxj_atoi(arg);
+
+  return NULL;
+}
+
+
+static const char *
+cmd_set_cookie_memcache_host(
+  cmd_parms   *cmd, 
+  void        *mconfig, 
+  const char  *arg)
+{
+  mod_chxj_config  *dconf;
+
+  if (strlen(arg) > 255) 
+    return "mod_chxj: ChxjCookieMemcacheHost is too long.";
+
+  dconf = (mod_chxj_config *)mconfig;
+
+  dconf->memcache.host = apr_pstrdup(cmd->pool, arg);
+
+  return NULL;
+}
 #endif
 
 
@@ -2294,7 +2359,7 @@ static const command_rec cmds[] = {
     NULL,
     OR_ALL,
     "The compulsion time-out time of the cookie is specified. "),
-#ifdef USE_MYSQL_COOKIE
+#if defined(USE_MYSQL_COOKIE)
   AP_INIT_TAKE1(
     "ChxjCookieMysqlHost",
     cmd_set_cookie_mysql_host,
@@ -2343,6 +2408,19 @@ static const command_rec cmds[] = {
     NULL,
     OR_ALL,
     "The MySQL charset used by saving Cookie"),
+#elif defined(USE_MEMCACHE_COOKIE)
+  AP_INIT_TAKE1(
+    "ChxjCookieMemcacheHost",
+    cmd_set_cookie_memcache_host,
+    NULL,
+    OR_ALL,
+    "The Memcached host used by saving Cookie"),
+  AP_INIT_TAKE1(
+    "ChxjCookieMemcachePort",
+    cmd_set_cookie_memcache_port,
+    NULL,
+    OR_ALL,
+    "The Memcached port used by saving Cookie"),
 #endif
   {NULL}
 };