<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/cafemilk/">
    <title>cafemilk @ ウィキ</title>
    <link>http://w.atwiki.jp/cafemilk/</link>
    <atom:link href="https://w.atwiki.jp/cafemilk/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>cafemilk @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2009-11-02T18:10:02+09:00</dc:date>
    <utime>1257153002</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/32.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/30.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/29.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/28.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/27.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/25.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/24.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/cafemilk/pages/23.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/32.html">
    <title>データベース ログデータベース</title>
    <link>https://w.atwiki.jp/cafemilk/pages/32.html</link>
    <description>
      *ログデータベース
-CAFEMILK SHOPIING CART V5 ではカンマ区切りCSV形式のデータベースを用います。
--文字コードは UTF-8N となります。
--エクセルの書式に対応しています。
-データベース運用の方法は用途に合わせて基本データベースとログデータベースの二種類があります。
-データベース関連の処理はフレームワークとなっていますので、カスタマイズ時の実装作業が楽です。
--レコードの各項目は SQL のようにカラム名をつけて操作することができ、効率的です。
-独自仕様であるため、SQL に常態化しているようなデータベースインジェクション脆弱性の危険がありません。

**ログデータベースの概要
-ログデータベースは、レコードを収めた10のファイルとそのカラム名を収めたファイルの11ファイルからなるデータベースを運用する形態となります。
--レコードは古くなると消えます。(ログローテンションします。)
--Flock を用いてロックすることはしません。
--ログデータベースでは書き込みは追記しかできません。
-ログデータベースを扱うモジュールのファイル名は以下の通りです。
&gt;&amp;tt(){cafemilk_database_log.pl}
-cafemilk_database_log.pl のあるディレクトリは以下の通りです。
&gt;&amp;tt(){[Apache_server]}
&gt;&amp;tt(){　└　[cgi-bin]}
&gt;&amp;tt(){　 　　└　[pl]}
-ログデータベースの扱うデータベースのファイルは例えば以下の通りです。
&gt;&amp;tt(){item_news.0.log.csv.cgi : 新着商品のレコード0}
&gt;&amp;tt(){item_news.1.log.csv.cgi : 新着商品のレコード1}
&gt;&amp;tt(){item_news.2.log.csv.cgi : 新着商品のレコード2}
&gt;&amp;tt(){item_news.3.log.csv.cgi : 新着商品のレコード3}
&gt;&amp;tt(){item_news.4.log.csv.cgi : 新着商品のレコード4}
&gt;&amp;tt(){item_news.5.log.csv.cgi : 新着商品のレコード5}
&gt;&amp;tt(){item_news.    </description>
    <dc:date>2009-11-02T18:10:02+09:00</dc:date>
    <utime>1257153002</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/31.html">
    <title>データベース 基本データベース</title>
    <link>https://w.atwiki.jp/cafemilk/pages/31.html</link>
    <description>
      *基本データベース
-CAFEMILK SHOPIING CART V5 ではカンマ区切りCSV形式のデータベースを用います。
--文字コードは UTF-8N となります。
--エクセルの書式に対応しています。
-データベース運用の方法は用途に合わせて基本データベースとログデータベースの二種類があります。
-データベース関連の処理はフレームワークとなっていますので、カスタマイズ時の実装作業が楽です。
--レコードの各項目は SQL のようにカラム名をつけて操作することができ、効率的です。
-独自仕様であるため、SQL に常態化しているようなデータベースインジェクション脆弱性の危険がありません。

**基本データベースの概要
-基本データベースは、レコードを収めた1つのファイルとそのカラム名を収めたファイルの2ファイルからなるデータベースを運用する形態となります。
--レコードは古くなっても消えません。(ログローテンションしません。)
--Flock を用いてロックすることができます。
-基本データベースを扱うモジュールのファイル名は以下の通りです。
&gt;&amp;tt(){cafemilk_database_basic.pl}
-cafemilk_database_basic.pl のあるディレクトリは以下の通りです。
&gt;&amp;tt(){[Apache_server]}
&gt;&amp;tt(){　└　[cgi-bin]}
&gt;&amp;tt(){　 　　└　[pl]}
-基本データベースの扱うデータベースのファイルは例えば以下の通りです。
&gt;&amp;tt(){item.csv.cgi........ : 商品データベースのレコード}
&gt;&amp;tt(){item_column_list.csv : 商品データベースのカラム名}
-データベースは標準にてセーフモードで運用されます。
--パーミッションファイルのないディレクトにあるデータベースの読み書きはできません。
-標準のセーフモードは以下のように指定されています。
&gt;$config-&gt;{database}{safety} = &#039;1&#039;;
-$config-&gt;{database}{safety} を設定しているファイルは以下の通りです。
&gt;&amp;tt(){[Apache_server]}
&gt;&amp;tt(){　└　[    </description>
    <dc:date>2009-10-20T23:10:14+09:00</dc:date>
    <utime>1256047814</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/30.html">
    <title>スキン テンプレートエンジン</title>
    <link>https://w.atwiki.jp/cafemilk/pages/30.html</link>
    <description>
      *テンプレートエンジン
-CAFEMILK SHOPPING CART V5 製品には独自のテンプレートエンジンが搭載されており、通常の HTML ソースに独自タグによる表記を加え、それをテンプレートエンジンに通すことによってウエブ表示等のテキスト出力が完成するという仕組みになっています。

**タグ
-タグには以下の表記と種類があります。
&gt;&amp;tt(){&lt;#key#&gt;.......... : 低層テンプレートタグ}
&gt;&amp;tt(){&lt;##key##&gt;........ : 中層テンプレートタグ}
&gt;&amp;tt(){&lt;###key###&gt;...... : 高層テンプレートタグ}
&gt;&amp;tt(){&lt;####key####&gt;.... : 低層プラグインタグ}
&gt;&amp;tt(){&lt;#####key#####&gt;.. : 中層プラグインタグ}
&gt;&amp;tt(){&lt;######key######&gt; : 高層プラグインタグ}
-テンプレートタグは主に文字列の出力に用います。
-プラグインタグは plugin 型プラグイン (用語に注意) を呼び出すタグで、プログラムの実行とスキン部品の出力を行います。
--テンプレートタグが簡易、プラグインタグが高度、という位置づけになります。
-# 記号の多さは実行の優先度を表します。つまり、# 記号が多いタグほど優先して実行されます。
-どのタグにも必要に応じてオプションをつけることができます。
--オプションは : (コロン) 区切りで複数を指定できます。
-以下はオプションの付いたタグの一例です。
&gt;&lt;#####mail_cart_record:package#####&gt;

**構成
-テンプレートエンジンは、ウェブ処理用とメール処理用の 2 種類あります。
-基本的な振る舞いはどちらも同じとなります。
-ウェブ用テンプレートエンジンのファイル名は以下の通りとなります。
&gt;&amp;tt(){cafemilk_skin_html.pl}
-cafemilk_skin_html.pl は以下のファイルを参照します。
&gt;&amp;tt(){cafemilk_tag_html.pl}
-これらのファイルのあるディレクトリは以下の通りです。
&gt;&amp;tt(){[Apache_server]}
&gt;&amp;tt(){　└　[cgi-bi    </description>
    <dc:date>2009-10-12T15:02:28+09:00</dc:date>
    <utime>1255327348</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/29.html">
    <title>スキン 概要</title>
    <link>https://w.atwiki.jp/cafemilk/pages/29.html</link>
    <description>
      *概要
**スキンの型
-スキンには種類とか型とか呼ばれる種別があります。
-その内容は以下の通りです。
-HTML スキン
--もしくはウェブ用スキン。
--ウェブ出力用のスキンで、execute 用と plugin 用とがあります。
-MAIL スキン
--もしくはメール用スキン。
--メール出力用のスキンです。
-WORDLIST 型スキン
--これは補助的なスキンです。
--条件に合わせて選択したうえで他のスキンに挿入する必要のある様々な文字列を扱います。
--たとえば曜日のリストといったものになります。
-スタイルシート
--HTML スキンが必要とする外部スタイルシートです。
**アドバイス
-製品を導入するショップのほとんどが、スキンを自作することを考えておられると思います。
-その際は以下の点にぜひご留意ください。
--標準スキンを改造するより、HP作成ソフトなどを使って新規にデザインを起こしてそれを移植する方がはるかに楽です。
--標準は全ページ3ペインとなっていますが、ページによっては2ペインとなるようにするとよさそうです。
---各ページにあるヘルプはくどいので省いたほうがいいかもしれません。
--2ペインにする場合でも3ペインにする場合でもメインの部分はブラウザの幅に合わせて表示幅が可変になるようにするのがスマートです。
-公式に[[スキン製作例&gt;http://cafemilk.milkcafe.to/v5skin.html]]がありますのでよく読みましょう。
**独自タグについての予備知識
-CAFEMILK SHOPPING CART V5 製品には独自のテンプレートエンジンが搭載されており、通常の HTML ソースに独自タグによる表記を加え、それをテンプレートエンジンに通すことによってウエブ表示等のテキスト出力が完成するという仕組みになっています。
-タグには以下の表記と種類があります。
&gt;&amp;tt(){&lt;#key#&gt;.......... : 低層テンプレートタグ}
&gt;&amp;tt(){&lt;##key##&gt;........ : 中層テンプレートタグ}
&gt;&amp;tt(){&lt;###key###&gt;...... : 高層テンプレートタグ}
&gt;&amp;tt(){&lt;####key####&gt;.... : 低層プ    </description>
    <dc:date>2009-10-02T17:43:11+09:00</dc:date>
    <utime>1254472991</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/28.html">
    <title>プラグイン その他</title>
    <link>https://w.atwiki.jp/cafemilk/pages/28.html</link>
    <description>
      *その他
-カスタマイズの利便が要求される幾つかの機能は、execute 型や plugin 型とは別にプラグイン化されています。
**決済プラグイン
-決済処理用のプラグインです。
--決済処理がプラグイン化されていることにより、決済の追加が容易になります。
-使用する決済の ID は以下の設定に記載されなければなりません。
&gt;$config-&gt;{payment}{id_list}
-$config-&gt;{payment}{id_list} を設定しているファイルは以下の通りです。
&gt;&amp;tt(){[Apache_server]}
&gt;&amp;tt(){　└　[cgi-bin]}
&gt;&amp;tt(){　 　　└　[config]}
&gt;&amp;tt(){　 　　 　　└　[common]}
&gt;&amp;tt(){　 　　 　　 　　└　config_common.pl}
-以下は設定の例です。
&gt;# 有効にする決済のID
&gt;　　　# 決済処理はモジュールによって実施されます。そのIDを指定してください。
&gt;　　　# 新規に決済を追加するにはモジュールの作成が必要です。
&gt;　　　# [代引決済を有効にする場合]
&gt;　　　# $config-&gt;{payment}{id_list} = [&#039;delivery_collect&#039;];
&gt;　　　# [ZEUS決済を追加する場合]
&gt;　　　# $config-&gt;{payment}{id_list} = [&#039;delivery_collect&#039;,&#039;zeus&#039;];
&gt;　　　# 利用できるIDは以下の通りです。
&gt;　　　# delivery_collect : 代金引換
&gt;　　　# bank_transfer    : 銀行振込
&gt;　　　# postal_transfer  : ゆうちょ銀行払込
&gt;　　　# zeus             : ZEUS決済 Link Point 方式
&gt;　　　# ※ ZEUS決済の他の方式について導入されるショップは開発元までご相談
&gt;　　　# ください。
&gt;　　　$config-&gt;{payment}{id_list} = [&#039;delivery_collect&#039;,&#039;bank_transfer&#039;,&#039;postal_transfer&#039;,&#039;zeus&#039;];
-上の設定の場合、以下の決済プ    </description>
    <dc:date>2009-09-25T13:40:31+09:00</dc:date>
    <utime>1253853631</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/27.html">
    <title>プラグイン plugin 型</title>
    <link>https://w.atwiki.jp/cafemilk/pages/27.html</link>
    <description>
      *plugin 型
**用語に注意
-まずは用語に注意することを覚えてください。
--プラグインには exeute 型と plugin 型があります。
--単に plugin と書く場合、それは plugin 型プラグインを意味しています。
--plugin とプラグインは、発音は同じですが意味は同じではありません。
--plugin 型プラグインはスキン内のプラグインタグによって呼び出されます。
**plugin の役割 1
-わかりやすく言うと、ブラウザに示される各ページのスキン部品が plugin です。
-execute 型プラグインはページ特有の処理 (execute) を行い、必要に応じて plugin 型プラグインの実行を行います。
-plugin 型プラグインが担う補助的な役割は主にスキン部品部分の作成です。
-plugin 型プラグインは execute と同様、処理を実行することができます。
--個々の execute においては execute 型プラグインが主体となって重要な処理を行い、plugin 型プラグインはその補助的な処理を行います。
-plugin 型プラグインはそれ自身が plugin 型プラグインの実行を行うことができます。
--plugin は入れ子状もしくはツリー状に実行可能です。
--これは、スキンやスキン部品の中にスキン部品の多様な挿入が可能であるということを意味します。
-plugin 型プラグインはスキンを要求します。
--execute 型プラグインはウェブ表示全体のレイアウトを指定するスキンを要求します。
--それに対し、plugin 型プラグインは部品となるスキンを要求します。
--plugin 型プラグインにより取得されたスキンは、呼び出し元が execute 型プラグインである場合は execute 型プラグインにより取得されたスキンに挿入される形になります。
--plugin 型プラグインにより取得されたスキンは、呼び出し元が plugin 型プラグインである場合は plugin型プラグインにより取得されたスキンに挿入される形になります。
**plugin の役割 2
-製品はメール書式もテンプレートとなっており、メール書面のスキン部品も plugin です。    </description>
    <dc:date>2009-09-24T23:30:48+09:00</dc:date>
    <utime>1253802648</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/26.html">
    <title>プラグイン exeute 型</title>
    <link>https://w.atwiki.jp/cafemilk/pages/26.html</link>
    <description>
      *execute 型
**用語に注意
-まずは用語に注意することを覚えてください。
--プラグインには exeute 型と plugin 型があります。
--プログラム実行の基本単位は execute 型プラグインで、これを execute と呼びます。
--ウェブの各ページは execute の結果出力されます。
--execute 型プラグインは execute 名で呼ばれる一連の処理を扱います。
--execute 型プラグインは、自己診断処理, execute 処理, 後処理を実施します。
**execute の役割
-わかりやすく言うと、ブラウザに示される各ページが execute です。
-execute 型プラグインはページ特有の処理 (execute) を行い、必要に応じて plugin 型プラグインの実行を行います。
--個々の execute においては execute 型プラグインが主体となって重要な処理を行い、plugin 型プラグインはその補助的な処理を行います。
--plugin 型プラグインが担う補助的な役割は主にスキン部品部分の作成です。
-execute 型プラグインも plugin 型プラグインも共にスキンを要求します。
--execute 型プラグインはウェブ表示全体のレイアウトを指定するスキンを要求します。
--それに対し、plugin 型プラグインは部品となるスキンを要求します。
---plugin 型プラグインにより取得されたスキンは execute 型プラグインにより取得されたスキンに挿入される形になります。
**処理の準備
-処理の準備は基本エンジン (コントローラ) が行います。
-コントローラはリクエストによって実行すべき execute 名を受け取ります。
-受け取るリクエストは例えば以下のようになります。
&gt;&amp;tt(){main.cgi?execute=admin_gate}
-リクエストによって execute が指示されなかった場合、規定値が適用されます。
-規定値は以下に設定されています。
&gt;$config-&gt;{default}{execute_type}
-$config-&gt;{default}{execute_type} を設定しているファイルは以下の通    </description>
    <dc:date>2009-09-21T19:49:09+09:00</dc:date>
    <utime>1253530149</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/25.html">
    <title>仕様 基本エンジン</title>
    <link>https://w.atwiki.jp/cafemilk/pages/25.html</link>
    <description>
      *基本エンジン
-もしくはコントローラ
--製品は MVC モデルに基づいて製作されています。
**基本エンジンの概要
-CAFEMILK SHOPPING CARAT V5 におけるコントローラの役割は以下のファイルが担います。
&gt;&amp;tt(){main.cgi}
-コントローラのファイル名は変更が可能です。
--変更した場合は変更にあわせて設定も変更する必要があります。
-コントローラはユーザーからのリクエストを受け付けます。
-コントローラはクッキーの取得と検査と発行を行います。
-コントローラはセッションを発行し、ログイン処理を行います。
-コントローラはリクエストに応じてプラグインの一種である execute 型プラグインの実行処理を行います。
-コントローラはテンプレートエンジンの発行する WEB ソースを出力します。
**基本エンジンのソース
-ソースの引用と解説
&gt;#!c:/user/local/bin/perl510/bin/perl.exe
&gt;&gt;書き換えの例
&gt;&gt;#!/user/local/bin/perl
&gt;################################################################################
&gt;#                                                                              #
&gt;#                          CAFEMILK SHOPPING CART  V5                          #
&gt;#                       SOHO WORKSHOP CAFEMILK  全権留保                       #
&gt;#                                                                              #
&gt;################################################################################
&gt;# 本プログラムは UTF-8 で    </description>
    <dc:date>2009-09-19T15:25:19+09:00</dc:date>
    <utime>1253341519</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/24.html">
    <title>インストール バージョンアップ</title>
    <link>https://w.atwiki.jp/cafemilk/pages/24.html</link>
    <description>
      *バージョンアップ
-バージョンアップの告知は管理画面のトップにて行われます。
-セキュリティ関連の更新があった場合は差し替えを行いましょう。
**注意点
-新しいバージョンを単に上書きするようなことはしないでください。
--特にディレクトリ 統合ファイルにあるものを上書きすると、設定がクリアされ、そのうえ、商品情報等のデータベースが消失することになります。
**その 1
-次のバージョンへ差し替える場合。
-バージョンアップの詳細は製品に添付されている以下のファイルに記されています。
&gt;02バージョン情報.txt
-通常はこのファイルの内容にしたがって差し替えを行います。
-設定やデータベースといったファイルに更新があった場合は差分を調べたうえで慎重に差し替えを行わなければなりません。
**その 2
-2 つ以上進んだバージョンへ差し替える場合。
-面倒ですが差分を調べて差し替えを行います。
**差分の抽出
-差分の抽出にあたってソフトウェアを用意します。
-必要なソフトウェアは以下の通りです。
&gt;AikoWin
&gt;WinMerge
-AikoWin
--[[ダウンロードページ&gt;http://nomal.que.ne.jp/kohi/freesoft.shtml]]
-WinMerge
--公式版 [[ダウンロードページ&gt;http://winmerge.org/]]
--日本語版 [[ダウンロードページ&gt;http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html]]
-比較用にディレクトリを 3 つ作成します。
-ディレクトリの役割はこのようになります。
&gt;&amp;tt(){A [古いバージョンのアーカイブのファイル群]}
&gt;&amp;tt(){B [新しいバージョンのアーカイブのファイル群]}
&gt;&amp;tt(){C [現在運用しているもののファイル群]}
-AikoWin を用い A と B を比較して B にある同一のファイルを削除します。
-AikoWin を用い A と C を比較して C にある同一のファイルを削除します。
-WinMerge の 3 ペインモードにて B と C に残ったファイルについて A と B と C を比較し    </description>
    <dc:date>2009-09-13T21:52:29+09:00</dc:date>
    <utime>1252846349</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/cafemilk/pages/23.html">
    <title>インストール その他</title>
    <link>https://w.atwiki.jp/cafemilk/pages/23.html</link>
    <description>
      *その他
-手っ取り早く本運用に進めるための情報です。
**ドメイントップを main.cgi にしたい
-通常ドメインのトップは index.html と相場が決まっていますが、サーバによってはアクセスコントロールファイル (.haccess) を用いるとドメイントップのファイル名を変更することができます。
-.haccess に記述する内容は以下の通りです。
&gt;DirectoryIndex main.cgi

**CGI であることを隠蔽したい 1
-サーバによってはアクセスコントロールファイル (.haccess) を用いると、完全に隠蔽とはいきませんが、拡張子.cgiをなくした状態での運用が可能です。
-.haccess に記述する内容は以下の通りです。
&gt;&lt;Files &quot;main&quot;&gt;
&gt;ForceType cgi-script
&gt;&lt;/Files&gt;
-これにあわせて設定を変更します。
-設定ファイルの位置は以下のようになります。
&gt;&amp;tt(){[Apache_server]}
&gt;&amp;tt(){　└　[cgi-bin]}
&gt;&amp;tt(){　 　　└　[config]}
&gt;&amp;tt(){　 　　 　　└　[common]}
&gt;&amp;tt(){　 　　 　　 　　└　config_common.pl}
-以下のように設定します。
&gt;　　# CGI名
&gt;　　　# [通常]
&gt;　　　# $config-&gt;{path}{cgi} = &#039;main.cgi&#039;;
&gt;　　　# [拡張子を省略できる場合]
&gt;　　　# $config-&gt;{path}{cgi} = &#039;main&#039;;
&gt;　　　$config-&gt;{path}{cgi} = &#039;main&#039;;
-さらに main.cgi のファイル名を変更して拡張子を削除します。
--拡張子のつかないファイルの FTP 転送にはご注意ください。
--たいていの場合、手動にてテキスト転送を行う必要があります。
&gt;&amp;tt(){main}

**CGI であることを隠蔽したい 2
-さらに、PATH_INFO という仕組みを用いると、商品ページなど一部の URL から ? 表記をなくすことができます。
--PATH_INFO を用いた URL は例えば以下のように変化します。
&gt;&amp;tt()    </description>
    <dc:date>2010-10-23T20:16:17+09:00</dc:date>
    <utime>1287832577</utime>
  </item>
  </rdf:RDF>
