【V5計画】CAFEMILK SHOPPING CART V5 (113レス)
【V5計画】CAFEMILK SHOPPING CART V5 http://medaka.5ch.net/test/read.cgi/php/1246680239/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
36: nobodyさん [sage] 2009/07/27(月) 12:43:16 ID:??? ■ サブルーチン(など)のルール サブルーチンの呼び出しは以下のようにして行うとルール化されている [呼び出す側] パッケージ名::サブルーチン名 ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, そのたの情報 }); [呼び出される側] sub サブルーチン名 { my $argument = shift; my $config = $argument->{config}; my $userdata = $argument->{userdata}; my $log_error = $argument->{log_error}; my $log_alert = $argument->{log_alert}; my $status = $argument->{status}; 上記のルールを守ることにより、設定や各種の重要な情報を常に保持することができる http://medaka.5ch.net/test/read.cgi/php/1246680239/36
37: nobodyさん [sage] 2009/07/27(月) 12:45:24 ID:??? オブジェクト方式についてもだいたい同様 [例] my $database = Cafemilk_database_log->connect ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', column_separator => ',', database_filename => 'database/item_news', database_separator => ',', record_stack => $config->{database}{session_stack}{item}{news}, }); $database->postscript(\%record); undef $database; マニュアルにもうすこし詳しい情報があるので参照。 http://medaka.5ch.net/test/read.cgi/php/1246680239/37
38: nobodyさん [sage] 2009/07/27(月) 12:47:23 ID:??? ルールの意味をわかりやすく説明するサンプルコード my $userdata = {}; $userdata->{test} = 1; ← ? 格納した情報を require 'test.pl' Test::testsub ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, }); print $userdata->{test}; ← 出力は 2 ? サブルーチン内で書き換えた内容がちゃんと保持されている exit; sub test { my $argument = shift; my $config = $argument->{config}; my $userdata = $argument->{userdata}; ← ? サブルーチン内のローカル変数に格納して my $log_error = $argument->{log_error}; my $log_alert = $argument->{log_alert}; my $status = $argument->{status}; $userdata->{test} = 2; ← ? 書き換えているが } http://medaka.5ch.net/test/read.cgi/php/1246680239/38
39: nobodyさん [sage] 2009/07/27(月) 12:57:27 ID:??? ■ CGIモジュール モジュールCGI.pmは以下のようにして呼び出される $userdata->{cgi_query} = CGI->new(); こうすることでCGIオブジェクトはdieしなくなるので、どこからでも呼び出して利用できる (CGI.pmはフォーム関連の環境変数を消してしまうので2度のuseができない) [例] my @param_list = $userdata->{cgi_query}->param(); http://medaka.5ch.net/test/read.cgi/php/1246680239/39
40: nobodyさん [sage] 2009/07/27(月) 13:01:32 ID:??? >>38の訂正 ちょっとだけ require 'test.pl' > require 'test.pl'; sub test > sub testsub http://medaka.5ch.net/test/read.cgi/php/1246680239/40
41: nobodyさん [sage] 2009/07/27(月) 13:04:51 ID:??? >>39 ちょっとだけ 2度のuse > 2度のnew http://medaka.5ch.net/test/read.cgi/php/1246680239/41
42: nobodyさん [sage] 2009/07/27(月) 20:55:02 ID:??? このスレの書き込み、なにがしたいんだ? http://medaka.5ch.net/test/read.cgi/php/1246680239/42
43: nobodyさん [sage] 2009/07/28(火) 00:49:04 ID:??? 誰かがプログラム解析して情報載せてるんだろ どこかwikiでも紹介したらそちらに行くんじゃ? http://medaka.5ch.net/test/read.cgi/php/1246680239/43
44: nobodyさん [sage] 2009/07/28(火) 01:10:47 ID:??? ここはWEBプログラミング板だったよな http://medaka.5ch.net/test/read.cgi/php/1246680239/44
45: nobodyさん [sage] 2009/07/28(火) 18:06:54 ID:??? ■ データベース 独自のモジュールを使う CSV形式 エクセルに対応してるらしい カラム名を指定して操作する 2種類 通常 商品や会員などを扱う ログ レコードの操作があまりできない 読込と追記専門 ローテーションする → 古いレコードは消えていく データベース操作の方法が特殊で、SQLインジェクションのような脆弱性は考えにくい http://medaka.5ch.net/test/read.cgi/php/1246680239/45
46: nobodyさん [sage] 2009/07/28(火) 18:08:15 ID:??? 基本的な使い方 my $database = Cafemilk_database_basic->connect ← オブジェクト方式connectで呼び出す ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', ← カラム名の情報 column_separator => ',', database_filename => 'database/item.csv.cgi', ← データベース本体 database_separator => ',', database_mode => '+<', database_flock => $flock, ← ファイルロックはFLOCK }); $database->get_record_all(); ← データベースの情報をすべて取得(予約) my @lines = $database->get_extract_database(); ← 取得(予約)した情報を取り出し このへんにいろいろと処理 undef $database; ← 終了 http://medaka.5ch.net/test/read.cgi/php/1246680239/46
47: nobodyさん [sage] 2009/07/28(火) 18:15:04 ID:??? レコードのマッチングをしたいとき $database->get_record_all(); $database->match_database ({ column_name => 'カラム名', match_word => '値', }); my @lines = $database->get_extract_database(); レコードのサーチをしたいとき $database->get_record_all(); my @columns = ( "サーチしたいカラム1", "サーチしたいカラム2", "サーチしたいカラム3", ); $database->search_database ({ search_column => \@columns, ← 複数のカラムをまたがって検索できる search_words => $words, ← 半角スペースで区切って複数語検索が可能 character_mode => '1', ← 大文字小文字の区別をしない場合 }); my @lines = $database->get_extract_database(); http://medaka.5ch.net/test/read.cgi/php/1246680239/47
48: nobodyさん [sage] 2009/07/28(火) 18:24:32 ID:??? レコードのソートをしたいとき $database->get_record_all(); $database->sort_database ({ column_name => 'カラム名', reverse_mode => '0', ← reverseしない sort_mode => 'number_quick', ← number_quickかcharacter_quick }); my @lines = $database->get_extract_database(); 特定のレコードを差し替えたいとき $database->replace_record ({ extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定 extract_column_value => '値', ← ターゲットのレコードを特定するために指定 records => \%record, ← 特定されたレコードに\%recordが書き込まれる }); → 差し替えは予約になるのでこのあとoverwriteが必要 http://medaka.5ch.net/test/read.cgi/php/1246680239/48
49: nobodyさん [sage] 2009/07/28(火) 18:28:03 ID:??? 特定のレコードを削除したいとき $database->delete_record ({ extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定 extract_column_value => '値', ← ターゲットのレコードを特定するために指定 }); → 削除は予約になるのでこのあとoverwriteが必要 操作したデータベースを格納(予約) $database->set_extract_database ({ extract_database => \@lines, }); 格納(予約)したものを上書き $database->overwrite(); → 格納(予約)しなければmatch search sort replaceされたものを上書き 追記したいとき $database->postscript(\%record); → 予約せずに、また予約があってもそれを無視して追記を行う http://medaka.5ch.net/test/read.cgi/php/1246680239/49
50: nobodyさん [sage] 2009/07/29(水) 13:10:49 ID:??? 特定のレコード(1件)の抽出 my $extract_database = $database->extract_last_record ({ extract_column_name => 'カラム名', extract_column_value => '値', }); → 通常では最初の該当レコードが、ログでは最後の該当レコードが帰ってくる レコードの内容の取得 →レコードの内容をいろいろ操作するために必要 my @lines = $database->get_extract_database(); foreach my $line (@lines) { my %target_values = $database->get_values_argument ({ database_values => $line, }); いろいろ処理 # print $target_values{hoge}; ← カラム名で値を参照できる # レコードの内容を変えたい場合 # $target_values{hoge} += 1000; ← 値を変更 # $database->replace_record ← 差し替え ← あとでoverwriteが必要なので注意 # ({ # extract_column_name => 'カラム名', # extract_column_value => '値', # records => \%target_values, # }); } http://medaka.5ch.net/test/read.cgi/php/1246680239/50
51: nobodyさん [sage] 2009/07/29(水) 13:14:27 ID:??? その他 get_stack ← レコードの数を返す double_sort_database ← ダブルソート set_write_forbid ← (何か問題があったときなど)書込禁止命令 merge_database ← 重複のあるログの統合 (ry http://medaka.5ch.net/test/read.cgi/php/1246680239/51
52: nobodyさん [] 2009/07/30(木) 12:02:02 ID:9vO1Ag/1 DUMMY接続 データベースの待ち時間の低減や多重なアクセスによるロックを防ぐための DUMMY接続ができる my @lines = $database->get_extract_database(); undef $database; ← いったんデータベースへの接続を閉じて my $database = Cafemilk_database_basic->dummy ← ダミー接続を開始する ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', column_separator => ',', database_separator => ',', }); $database->set_extract_database ({ extract_database => \@lines, }); http://medaka.5ch.net/test/read.cgi/php/1246680239/52
53: nobodyさん [sage] 2009/07/30(木) 16:03:06 ID:??? ■ データベースの動作速度と商品点数 CSVでデータベースを運用しているのでソートが遅い つまり運用可能な商品点数はソートの性能で決まる → ソートをまともに使用するなら商品点数は1000点くらいが限度のよう そこで商品のソートは設定で制限されている $config->{item_category}{item_sort}{limit} = '100'; ← デフォルトは100点 → これで5000点くらいまで大丈夫のようだ http://medaka.5ch.net/test/read.cgi/php/1246680239/53
54: nobodyさん [sage] 2009/08/01(土) 00:36:22 ID:??? 2009.07.31 スキン製作例を掲載しました。 http://medaka.5ch.net/test/read.cgi/php/1246680239/54
55: nobodyさん [] 2009/08/04(火) 16:09:04 ID:8qC9FCVp ■ 携帯に対応するには 標準では未対応となっているのですが、実は超簡単です。 1. main.cgiの以下のコメントをはずす # 端末を判定します。ケータイ端末かPC端末かということを判定します。 # 判定には川崎有亮(かわさきゆうすけ)氏の phone.pl を使用します。 # phone.pl はなるべく最新版を使用するように心がけてください。 # phone.pl 配布元 : http://www.kawa.net/works/perl/phone/pnews.html # require './pl/kawasaki/phone.pl'; # $userdata->{agent_type} = &phone_info(); 2. あとはスキンを作るだけ スキンは以下のディレクトリに作成 [cgi-bin/shop/]skin/user/cgi/default/mobile/japanese/yen/default/ http://medaka.5ch.net/test/read.cgi/php/1246680239/55
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 58 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s