☆ショッピングカートのCGIを作りたい!Perlで☆
知り合いにWEBショップ作ってくれと頼まれたのは良いけど、 フリーのショッピングカートCGIは設置は簡単でも、商品の登録 とかが手作業だったりで使い勝手が悪いです。 で、短絡的に「自分で作ってみようか」と思っているのですが・・・・ Perlも、いやプログラミングさえ未経験。「必ずわかるCGI」と その他の入門書で何とか「掲示板」の仕組みがようやく理解できました。 やっぱ、無謀ですかねぇ・・・・・・ >>311 確かにそれは思ったんですけど、一応pass入れたあとの管理者用画面だから 大丈夫かな・・・と考えてたんですが・・・・・ hiddenで入れてもソース見ればそのままpassが見えちゃうわけですし・・・・ >>312 postで(formから)passが入ってこないときadmin.cgiがエラーメッセージ吐いて 終了するようにすりゃいいんだよ。したら、URIがバレても簡単にはアクセスでき ないだろ? #!/usr/bin/perl require 'cgi-lib.pl'; my $method=$ENV{REQUEST_METHOD}; $pass='123'; &ReadParse(*form); if ($form{'pass'} ne $pass or $method ne 'post'){ #passミスマッチとGET拒否 print "Content-type: text/plain\n\nForbidden."; exit; } #──以下処理。formを吐く場合は必ず #<input type=hidden name=pass value=$pass>を仕込む GET全拒否しちまってるけど、たとえば、こうよ。 >hiddenで入れてもソース見ればそのままpassが見えちゃうわけですし・・・・ 上みたいな処置しときゃadmin.cgiにマトモにソースを吐かせるのに絶対にpostで pass渡さなきゃいけねーから、過信は禁物だがpassを知らない限りソースも見れん ワケよ。admin.htmにはpass書くわけじゃねーんだしさ。 #漏れはCGI.pm詳しくないんだが、CGI.pmでpostとgetの読み分けは出来んのかなあ。 #詳しい奴フォロータノム 後、>>311 でも書いたがrefererとって ttp://cgitest.s7.xrea.com/cgi-bin/admin.cgi ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm 以外からのアクセスは弾いちまえばいいんだよ。 ちょっと機能追加 登録済み商品の修正が出来るようになりました。 >商品登録テストしてくれて人 今のところ、文字置換やエラー処理全然いれて無いので、コメントのところで 改行入れるたり、新規ページ作成時に、ファイル名入れないと、データボロボロになります(汗 明日(今日か・・)必要フォーム項目未記入時のエラー処理と、改行その他、文字列の 置換処理を出来るようにします。 >>311 =313 なるほど・・・・と入っても、いまいち管理用画面でのその辺のセキュリティの必要性が 理解できて無いんですが・・・・・ どっちにrefererとって弾く事だけはやっておいた方がよさそうですね。 ところで、今回、新規データ入力時に @data=($no,$hoge,$mona,$gik) $line=join("\t",@data); open(FH,$file); @logdata=<FH>; close(FH); open(WRITE,">$file"); print WRITE $line; print WRITE @logdata; close(WRITE); として、新しいものが上に来るようにしました。 で商品修正時にココの前で教えてもらった方法2の応用で @newdata=($no,$hoge,$mona,$gik); $line=join("\t",@data); open(IN,"$file"); open(TMP,">$temp"); print TMP "$line; while(<IN>){ my @cell = split/\t/; if($cell[0] ne "$no"){ print TMP; } } rename($temp,$file) ってやってるんですが、この方法だと、修正したファイルがデータの一番上(一行目)に 来ちゃうんですよね(そういう風にしてるんですが) これって、たとえば4行目のデータだったら、また同じ所にかき戻す方法ってどうやれば良いんですか? if($cell[0] ne "$no"){ print TMP; の後に if($cell[0] eq "$no"){ printTMP $line; でうまくいかなかったです。書く位置がまずかったんでしょうか? $noは数値だよね? なら、 while(<IN>){ my @cell = split/\t/; $_ = $line if $cell[0] == $no; print TMP; } で数値評価したらどうかな? なんとなくだけど、$cell[0]か$noに空白とか含まれてそうだったんで。 >>316 うまくいきました。ありがとうございます<IN> で変数が$_に入ってるってのがすっかり頭から飛んでました・・ ところで、正規表現なんですが、たとえば$priceに半角数字以外(「,」とか)が入ってた場合に エラーを表示させるのって if ($price eq ~/\D/){ print "価格はカンマ無しの半角数字で入力してください"; } で良いんですよね? >>317 全然違う。検索は $scalor =~ /$hoge/; だぞ。 if ($price =~ /\D/) { print "価格はカンマ無しの半角数字で入力してください"; } まあがんばれ。 ↑の通りに書いてみたら,半角数字も弾かれちゃいました・・・・・ そうだと思うんですが・・・・ だから $price=~/\D/; だと「$priceに数字以外のものが含まれていれば」 って事になりますよね? のはずなんですが・・・・弾かれちゃうんですよ・・・ もう一度ソース見直してみます。 ってかさ、数字以外は取り除けばいいんでない? そっちの方がユーザーライクだと思うが。 $price =~ tr/0-9//cd; それも考えたんですが、全角数字入れられた時の対応も一緒に やっちゃおうと思ったので。 >325 そう思って [\D\s\t]とかもやってみたんですが・・・ダメ 適当なファイルに書き出して見てみたら? CGI::Carpとかでハンドルしてるなら warnや dieで見てもいいけど。 そうか、上手く逝ったか。漏れこのスレ、検証してないやつばっか(297とか^^;) 書いてるから、ちょっと心配してるんだな。 > で変数が$_に入ってるってのがすっかり頭から飛んでました・・ 慣れると便利なんだよ、デフォルト変数$_。 はまると怖いけどね。 で、正規表現検索は相手が文字列でも if ($price =~ /\D/)・・・ だよ。 えっと、上記の処理より前に if ($price eq ""){ print"error" } ・ ・ #その他変数の未記入チェック ・ ・ ってやってから上の処理やってるんですけど、その辺は関係あります? 一応、未記入のエラーはちゃんと表示されます。 で、上記の検索を書くと、数値だろうがなんだろうが弾かれちゃう・・・ うわ、 if ($price =~ /\D/){ print "$price"; } ってやったら、入力したのと違う数字が出てきた・・・・・ この数字どっから来たんだろ??? 198000って入力したのに429467294って・・・たかどんな数字入れても おんなじ数字が吐き出されてる????何でだ? ちなみに置換処理を無くして実行すると、ファイルにはちゃんと入力した 数字が書き込まれてます。 >>330 うわ、とっくに話題が過ぎ去ってやがる。リフレ忘れた。鬱打 &jcode::tr(\$price, '0-9', '0-9'); #全角数字を半角に変換 if ($price !~ /0-9/){ print "価格はカンマ無しの半角数字で入力してください"; } あたりではどうかな? >>332 という事は、その処理以前にどこかで$priceに値が代入されてるんだよ。 探しなさい。 え〜〜〜〜 解決したっぽいです・・・ どうやら、使ってるエディタにバグがあるらしく、上書き保存するとなぜか s-jisで保存されてたっぽい、のが原因みたいです。(設定はEUCにしてるのですが) お騒がせして本当に申し訳ありませんでした・・・・m(__)m エディタ変えようかな・・・・・ >>335 俺はいまだにメモ帳使ってるぞ。メモ帳最強。 あと、 >&jcode::tr(\$price, '0-9', '0-9'); #全角数字を半角に変換 jcodeでこんな事も出来るんですね。フォームデータ受け取り時に h2zでカタカナは全部置換させてるんですが、そこで数値にしなければならない 変数も全部変換掛けといた方がよさそうですね。 とりあえずご迷惑したお詫びに町内10周走ってきます。 皆様の暖かいご支援のおかげで、 新規ページの追加、商品の登録、編集、削除 までできるようになりました。また 「簡易商品ページメニュー」を作り、そこから商品ページにアクセス 出来るようにしました。(管理画面の中) ココに表示されるURLをコピペすれば、使う人は、メニューページを 自由に作れるのでは無いかと・・・・ ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm パスワードは123です。 ある程度のエラー処理と文字列置換は入れたつもりなのですが・・・・ >>338 適当に弄ってれば誰でも使えそうなカンジですね。 って、弄ってみました。 感想: どのページからでも管理画面に戻れると良いかなあ。 (ページ作る時に何回も戻ったので…) >>314 >いまいち管理用画面でのその辺のセキュリティの必要性が理解できて無いんですが・・・・・ だーかーらー、http:// うんちゃらかんちゃら/admin.cgi?mode=login&pass=xxxって URIがばれちまったらイッパツで商品ページ改ざんされちゃうだろっていってんの。 PasswordをGETに含めるのはヤバいんだって。直リンオッケーだしな。 知り合いとはいえ金絡んでやってんだろ?しっかりしろよ。 商品価格書き換えられたところに注文とか去れちまったら大損害だろ? URIバレた瞬間にPasswordもってかれちまうんだから、ほんとはPOSTがいいんだけどな、 せめてリファラチェック(GETメソッドはCGI自身からのアクセスみ許可)と、 本稼動のときは変な名前のディレクトリ作って、cgi本体の名前からは予想も出来ねー よーな名前でrobotよけのMETAつけた認証ページ設置するぐらいの対策はぐらいはしとけよ。 >340 robotよけのメタは、誰も見ていないです。きっと。 >340 詳しい説明ありがとうございます。リフレッシュを止めて、フォームボタンで hiddenを渡し、リファラチェックも入れるようにします。 ところで、一つのサブミットボタンで二つ以上のアクションを指定する事って 出来るんでしょうか?たとえば <form method=post action=hoge.cgi> <form method=post action=hage.cgi> <input ... <input.... <input type=submit value=OK> </form> </form> とかやっておけば、submit押した時に、両方にフォームの内容が送られるんでしょうか? むり(やったことないけど)。 仮に出来たとして、ブラウザはどっちに応答すればいいのさ。 >>342 二つ以上アクションさせたい場合はhiddenでvalueを送ってスクリプト のなかのifで受ける。 例: <form method=post action=hage.cgi> <input type=hidden name=action value=hoge> <input type=hidden name=action value=hage> <input type=submit value=OK> </form> 〜hage.cgi〜 if ($DATA{'action'} eq 'hoge') { ******************* } if ($DATA{'action'} eq 'hage') { ******************* } >>343-344 ありがとうございました。 今、注文受けたら在庫数を減らすってところを作ってるんですが これが結構大変そうです・・・・・ う〜ん、注文が確定した時(メールを送信する直前)にカートに入ってる 各商品の注文数を、商品ごとに各商品ファイルと照合して、注文数>在庫数 又は在庫数=0ならエラー、もし注文数<在庫数なら、「在庫数ー注文数」して 商品ファイル内の該当商品の在庫数を修正・・・・・ それぞれの処理は、今まで教えていただいた事でかけそうなんですが、データの抽出、条件分岐が非常に複雑になりそうです。 >>346 それって全然簡単じゃない?例としては if ($ORDER{'mona'} > $ZAIKO{'mona'}) { print "申し訳ありません。只今$ORDER{'mona'}は在庫を切らしております。\n"; } else { $ZAIKO{'mona'} -= $ORDER{'mona'} } こんな場合こそ、パール独特の変数、ハッシュが力を発揮する時だよ。 ハッシュを上手く使ってね。 >347 えっと、カートの中身が複数だった場合商品によって、格納されているファイルがそれぞれ違うので まずforeachとかで順にカートの中身を取り出しながら商品の格納されているファイルを、検索(hidenでファイル名を渡してある)して、見つかったファイル名をまたforeachなりwhileなりで 検索して、商品名がマッチしたら在庫数と注文数を比較、それで0か足りない場合は エラー、もし大丈夫なら、在庫数から注文数を引いて、ファイルに書き直し・・・・ みたいな事をやらなければダメな気がするんですが・・・ @files=glob "$dir/*.dat"; # $dirはディレクトリ名。*.datのlistを得る foreach $file(@files){ open FILE,$file or &error; while(<FILE>){ my($no, $hinmei, $zaiko・・・) = split /\t/; #左辺のmyのリストは適当に $zaiko{"$file::$hinmei"} = $zaiko; } close FILE; } とかやって%zaiko{"ファイル名::品名"}(%zaiko{"ファイル名::商品番号"}?)に 代入して、%zaikoに対しデクリメント。 >>347 さんの言うとおりhashならサーチ用にループしなくてイイからね。 で、 foreach $file(@files){ open FILE,$file or &error; open TMP,">$temp" or &error; while(<FILE>){ my(@dummy) = split /\t/; @dummy[2] = $zaiko{"$file::$hinmei"} if exists $zaiko{"$file::$hinmei"}; #$dummy[2]は適宜変更 print TMP @dummy; } close FILE; close TMP; rename $temp,$file; } とかやって戻してやるってのはどうかな? あ、ここまでやって思いついたが、カートの中身を %cart{ファイル名::商品名}=注文数 ってハッシュにして、後者の書き戻しループで在庫チェックさせればイッパツだ。 そのほうがイイや。速いし。 えーと、ちょっとヒマがあったんで上の追記を。 カートの中身を $cart{ファイル名::商品名}=注文数 (注文がない場合は0でなくハッシュを生成しない) ってハッシュにしてあるとして、 @files=glob "$dir/*.dat"; foreach $file(@files){ open FILE,$file or &error; open TMP,">$temp" or &error; while(<FILE>){ my(@data) = split /\t/; my $key = "$file::$data[2]"; # $data[2]は商品名ね if (exists $cart{$key}){ if ($data[1] < $cart{$key}){ #$dummy[1]は在庫 print "$data[2]は在庫が不足しています"; }else{ $data[1] -= $cart{$key}; } } print TMP @data; } close FILE; close TMP; rename $temp,$file; } で、読み出し→在庫チェック→在庫デクリメント→書き戻し が1回で終わると思うんだな。 まあ例によって書きなぐりだから、globでファイルリストを取り出し、 cartをexistsで調べて在庫チェックとデクリメント処理する、 という流れだけ理解してもらえれば。 >>350 =297さん いつもありがとうございます。 せっかく、頂いたんですが、違う方法で実装できました。 次は「在庫がありません」だけではちょっと不親切なので「在庫が無いので買物カゴから削除しました」 と「在庫が足りないので$cyumon個を$zeiko個に変更しました」と表示して カートの中身を書き換える機能を作成中です。一度に商品ファイルとカートファイルを の二つをハンドルするので、ループ中の何処で、書き込んで、何処でテンポラリーファイルを リネームするのかが、書いててわからなくなる・・・・(苦笑 スクリプト一行書くごとに、print"処理結果" and exit;で出力内容を確認しながら 進めてます 買物を途中で止められた場合、datファイルが残ってしまっているので、それを 定期的に消したいんですが、たとえば最終更新時間から$time以上経過したら 削除させるのって @files=glob("./cart/*.dat"); foreach(@files){ @info=stat $_; $deltime=time-60*60*$time if ($info[9] >$deltime){ unlink $_; } } で、大丈夫ですか? これを、買物終了時かなんかに実行されれば、誰かが買物を完了してくれたら自動的に 入らないファイルが消える、というふうにしようと思うんですが・・・・ statで得られる時間って time関数と同じで方式(1700年からの秒数?)ですか? なんか誤字だらけ・・・ ×入らないファイルが消える ○要らないファイルが消える おお、自力で実装できたか。ガンガン腕を上げていますね。 あとは欲張って機能拡張しすぎてスパゲッティにならんようにね。 statで得られるのはtimeとおなじ*1970年からの*通算秒だよ。 最終更新からの経過だけ調べるだけなら、ファイルテスト演算子-Mで 最終更新からの*経過日数*が得られるよ。 foreach(glob("./cart/*.dat")){ unlink if -M $_ > $time; # $timeは日数、0.5なら12時間 } とか。 大人のCGI(書籍) ttp://www.byakuya-shobo.co.jp/hj21/otona/main.html あたり読んで、パクれ。 今のお前ならもうこの本のスクリプトを解析、応用できるはずだ。 持ってたりします・・・>大人のCGI 実は他でソースパクってUpload.cgi作ったら動いた事は動いたんですが それを、admin.cgiにサブルーチンとして埋め込むと動かなくなります。 そのソースは、CGI.pm使ってたんですが、enctype="multipart/form-data" で受け取ったデータを ReadParseかけちゃってるのが問題なのかな?とか思ってたりするんですが、関係あります? そこだ。ファイルデータは生で扱え。 その動いたっちゅうUpload.cgiで、どこをパースしてどこを生で扱っているか 解析してみるのだ。この件に関して間違いのない文書はRFC1867。 ちょっと、頭の中がテンパって来たので、気分転換で、管理画面のUIを整理しました。 ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm 各画面から必要なページに戻れるようにボタンをつけました。 あと、新規ページ作成時と、デザイン変更時に作成結果(変更結果)が確認できるようにしました。 うぷろだでわかんないってどの辺?よかったら書いてみ なんか、今日xreaが調子悪くないですが? 私のPCのせいだろうか・・・・ しかし、1/10に > Perlも、いやプログラミングさえ未経験。「必ずわかるCGI」と > その他の入門書で何とか「掲示板」の仕組みがようやく理解できました。 んな事書いてた>>1 が一ヶ月でここまで来るとは正直予想できなかった。 俺モジュール使え無い。つまり1にいつの間にか越された。ウツウツウツウツウツウツ。。 >356 そんなクソ本を紹介すんな。 誤字脱字だらけ&ヘタレすぎ。立ち読みしてて叩きつけたくなった。 >>365 マジっすか?? 近くの書店で注文しましたが・・・・ >>365 あれがクソ本だと言うのは構わないから、具体的にどのあたりのコードがヤバいとか、 他にいい本や資料、URIがあったら教えてやってくれ。 実践的で単機能のコードの量、カバーするCGIの範囲では間違いなく現在トップ クラスの良書だ。 O'REILLYが出してる本ならまず間違いない・・・・・・高い&重いけど。 久々にレスが沢山ついててちょっとビクーリ さて、アプロダの件なんですが、今まではスクリプトの頭で ReadParseかけちゃってて、multipart/form-data使うには それがまずそう、というヒントを頂いたんですが、いまさら ReadPaeseの前に use CGI; $query = new CGI; $images=$query->param('gazou'); if ($images ne ""){ #処理 } &ReadParse; #今まで通り で大丈夫なんですかね?要はReadparseはそのままでmultipart/form-dataで 受け取った特定の物だけCGI.pmで処理するというかんじになるかと思うんですが また、日本語がおかしい・・・ ×というヒントを頂いたんですが、いまさら ○というヒントを頂いたんですが、いまさらReadParse止められないので。 それだと後ろの&ReadPaeseがコケる。POSTデータをCGI.pmが先に拾って まうんやないかな。そんな妙なコード組んだことないから、いざやったら 出来てしまうんかも知れへんけど。 もうこの際CGI.pmで逝きゃええやんと思ふ(書き直しも大した手間じゃない) けど、まぁ何にせよcgi-lib.plで逝くと決めたんやから、動くコードが落ちて たからといって場当たりで手を広げるもんやない。 cgi-lib.plを用いたファイルアップロードのサンプル ttp://cgi-lib.berkeley.edu/ex/perl5/fup.html と、そのソースや。 ttp://cgi-lib.berkeley.edu/ex/perl5/fup.cgi.txt 読め。ほどけ。取り入れろ。 >>1 ここにCGI.pmのサンプルあり。 http://www.harukaze.net/ ~mishima/perl/module/upload_by_CGI_pm.html あぷろだはいまだ研究中で未実装ですが、今までずっと気になっていた 「同じ商品を買い足した場合」の処理を変更しました。 これで、あとはアプロダさえ実装できればほぼ完成かと・・・ ようやくアプロダ実装完了しました・・・ 商品画像、ページ背景画像、ページバナー、それぞれあぷろど可能です。 但し、実サイズで表示されますので、あまり大きい画像は・・・・・ というわけで久々にageさせていただきます。 ページメニュー ttp://cgitest.s7.xrea.com/cgi-bin/menu.cgi 管理ログイン画面 pass=123 ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm いいかんじかな? 買い物かごの中をみる、を選択したときに、中身がある場合は常に 「精算する」というか、買い物フェーズに行くボタンが必要かなと思うけど。 reply-to:ツ蟆・ この度はご注文ありがとうございます。このメールはご注文いただいた方に自動的に送信 される 確認メールです。追って店主よりご連絡致しますので、ご注文の内容をご確認の上、今し ばらく お待ちください ・・・メールが文字化けしているかな? menu.cgiが吐くMETA <meta http-equiv=content-type content=text/html; chaset=EUC-JP> になってるけど、 <meta http-equiv="Content-Type" CONTENT="text/html; charset=EUC-JP"> とクオートせんとばけちゃうよ。スペース入ってるから・・・ あと、「買い物を続ける」のリンク色が背景に溶けこんでて見にくいな。 ま、いずれも小さなことだ。よくやったね! ほんとよく頑張ったよね。 見習わなきゃと思いました。 ページ作成時に既存の画像ファイルを使えるようにアプロダ以外にファイル名指定 を可能にしました。また、商品やページを書き換える際に画像を削除できなかったので (てかそうしちゃうと弊害もありそうなので)画像管理用のメニューを用意して 必要無い画像ファイルを削除するプログラムを追加しました。 ひとまずこれで「完成」という事にさせていただこうかと思います。(V1.00) ファイル名を変えたのでアクセス用URL変更になりました ttp://cgitest.s7.xrea.com/cgi-bin/login.cgi パスワードは123です。 さて調子に乗ってCGIZooあたりにシェアで登録してみようか・・とか思ってるのですが・・・・ 顧客情報のファイルって、パーミッションを適切に設定しても覗けるんですか? テキストじゃダメなんでしょうか。 頑張ってるとは思うがシェアで登録するほどのものではないだろ。 まだね。 perlで、画像貼り付け可能な掲示板を作ろうと思ってます。 ユーザに、画像のURLを入力させて、遠隔地にある画像を 表示するわけです。このような場合に、その遠隔地にある画像の サイズ(ピクセルサイズ)を取得することはできますか? 小さいサイズの画像に制限したいのです。画像ファイル(GIF)の ヘッダ数バイトを取得できればいいのですが、もし可能ならば、 方法を教えてください! >>383 7〜8バイト目にwidthが、9〜10バイト目にheightが入ってる。 位置が固定だから楽。(JPEGは可変。) 画像はローカルじゃなくて別サーバーか。 一般的なサーバーにLWPは入ってないだろうから 単純にSocket開いてreadすればいいのでは。力技だけど。 あ、でもSocket自体普通のプロバイダじゃ使えなかったりするな・・・ そういえばPNGもサイズの位置は固定だね。 「フリー」ウェアの精神は最近廃れているのだろうか。 自分を育ててくれたネットに対しての貢献というか恩返しというか、 後塵のために自分も・・・・・・まあいいや。 設計から実装まで、果てはβテストからデバッグまでここで聞いてたのになぁ。 「フリーで配布しているものはない」「知人に頼まれて急いでいるがPerlは未経験」 というから、ちょっと調べればすぐ解るようなことも教えてきたのにな。 無謀者が苦労に相応した報酬を受け取ることに異論はないよ。 教わろうがなんだろうが今回のCGIは無謀者が作ったんだからさ。 だけどさ、なんか寂しいよな、こういうのって。>^(無謀者) このスレにいた人には無料で配ると、不満がでなくなる上テスターまで確保できるんだぜ(笑) そういう腹芸をこなさないとだめだな。 ここまで作ったんだからシェアにしたいと思うのも人情でしょうけど、これまで 一から無償で教えてきて下さった人たちが、寂しい思いをするのも分かるような 気がします Perl初心者なのに、ご友人のためにショッピングカートを作ろうと、頑張られて いるのは偉いなぁ、と影ながら応援していましたが、ここに来て、突然にお金に 対する色気を出してくるのも、うーん、と思ってしまいます シェアにするのが悪いとかでなく、無謀者さんが一生懸命作られたcgiを無償で 欲しかったからというわけでもなく、なんだか、うーん、なのです(^^;) うーん、と思う他に、少し悲しいのは、これからこの板で質問する人たちが 「お前も、完成が近づいたらシェアにするとか言いだすんじゃないの? なんで、他人の金儲けに俺らがタダで協力しないといけないのよ?」 と思われることでしょうか まあ、簡単なことも自分で調べない教えて君が減って、むしろ良かったりする のかも知れませんが(^^;) ただ、私なら、自分で作ったcgiなんて信用できないので、私用に使うのなら ともかく、他人に使ってもらおうなんて、恐くてとても考えられないのですが、 無謀者さんはその点、勇気があるなぁ、と純粋に感心しました ところで、自分は、欲しいcgiがあったら海外の物を探して、適当に日本語化して 使うのが主なので、よく知らないのですが、シェアのcgiって、そんなに需要の あるものなのでしょうか? 無謀者さんのおっしゃってたcgizooを見ると、結構な数のシェアcgiがあるよう ですが・・・ >391 実際あるよ。 というかね、個人に対する需要はともかく、やっぱCGIていうのは、Webデザインとか 設計の問題とかがあって「オーダーメイド」なものなんだよな。 んで、CGIとか出しておくと、オーダーが入る。 お金払うからこういうもの作ってくれ、とかね。 儲けというか、良い小遣い稼ぎにはなる。 115 :参加するカモさん :01/12/21 19:46 http://gotonext.cool.ne.jp/gazou/hiroyuki02.jpg ひろゆき、歯まっ黄色!! 歯糞だらけ!!びっくり!!(・∀・)キタナイ!!ビークリ!! ひろゆきへ 歯みがきしましょうね・・・・ 156 :参加するカモさん :02/01/08 14:08 >>115 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 157 :参加するカモさん :02/01/08 14:11 >>115 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 卒業研究でショッピングシステムとか作るってのは今更というカンジかなぁ。 >このスレにいた人には無料で〜 素人が作ったものなんかいらんよ シェアで配布でもいいんでない? その後いろいろな問題にぶちあたりまたこの板を利用して質問してくることだろう。 何度かそれを繰り返して一人前になったらここで同じような疑問をもった人間に教 える立場に変わってくれればいいんでない? 俺はオーダーメイドのものしか作らないけど、配布に耐えれるだけのものをつくる にはかなり大変だからねぇ、まぁがんばれよってことだ。 ども。やはりシェアに関しては予想通りお叱りを受けてしまいましたね。 自分でもまだ迷っています。まシェアにしたからって必ず売れるというもんでも ないでしょうし、何人かの方がおっしゃるとおり実用にどこまで耐えられるものなのか まだ未知数ですし・・・ とりあえず、開発するきっかけとなった友人の所では取り合えず設置しておいた フリーの奴で「使い方なれてきたからとりあえずこのままで」っていわれて 行き場がなくなってしまいました(w 現在は、デバッグしながら細かい機能実装してます。捕らえずサーバーパス以外の ほとんどすべてをWEB上で設定できるようにしました。 「調子に乗るなボケ」って意見がひとつも出ないのは、素人が作ったこの程度のスクリプトでも シェアとして成り立ってしまう可能性があるからなんだろうな。 実際ZOO見てみてもカートってカテゴリだと登録数少ないしな。 値段によっては結構売れるかも知れんぞ 金をとるなら、取れるなりのものを作ってからにしてほしいと思う。 フリーのモノのより落ちるんじゃあダメじゃないかと。 機能の数ということではなく、ね。 オープンプラットフォームということで、 アップローダーは最低でもサイズ制限、MacBinaryぐらいは対応していないと、 シェアのWebアプリとはいえないと、「個人的には」思います。 WEBショップを開店しようと思ってるので 無謀者さんのカートCGIに興味あります。 でもどこまで実用に耐えられるものなのか不安があるので シェアだと手が出ないです。 問題なく運用できて売り上げがあがったら 幾らか払っても良いですが。 >403 試用していただけるなら喜んでお出しします。もちろん無料で。 >402 マックバイナリーは一応対処してるつもりです。まだMACでの最終確認してないですが。 サイズ制限に関しては表示部の表示の自動縮小を含め研究中です。 KENT氏の&JpegSizeあたりを改造(ぱくり?)しようと思ってます >>404 ここだけ無料で配っておいて、他で値段つけたりすると何かと問題になるような・・・ 配るというか、モニターしていただけると助かるな・・・という感じでして。 ここの方々には何もない常態からおんぶに抱っこでお世話になっていますので。 万が一、間違って「使ってみたい」って人がいらっしゃれば是非試用していただいて ご感想をいただきたいのです。その結果「ダメだ使い物にならん」と思ったら 破棄していただければ良いですし。少しでも使えそうなら不満点を指摘していただき 改良の参考にさせていただければと。 なるほど、そこまで考えて改良を続けていくならシェアでも いいと個人的には思う。シェアCGIなんてほとんどサポート代 みたいなもんだろうし。まあがんばりや。 送料について、「北海道/東北/関東/…」ていう地域のくくりは 固定にしていいの? 宅配業者の価格体系よく知らないからわからんけど、 もし「同じ関東でも東京・神奈川・千葉はxxx円、それ以外はyyy円」とか いう体系がありうるなら、sub_soryo()関数内で固定で持ってる県名も ユーザが指定できるようにするのがいいのではないかと思ふ。 (上のような細かい地域指定機能はサポートしないという仕様にする or カスタマイズ別料金 つーのももちろんアリだとおもうが) 行き場がなくなったのは気の毒だね。 「使い方なれてきたからとりあえずこのままで」ってそれ、あるんだ。 「オレは何のために開発したんだよと小一時間‥‥」てヤツだよな。 ま、そーゆー事情ならいっちょシェアにでもして見るか、という気持ちもわかるわ。 そーゆーコトは先に言えよ、な。 >>380 は明らかにチョーシぶっこいてるようにしか聞こえなかったんで一言 言いたくなったのさ。 まぁせっかく作ったんだから、全く儲けちゃイカンとは言わないが…… 公共に還元って事でさ、売り上げの一定比率で2ch運営に寄付って のはどうかね? イヤ、実際受け付けてくれるのかどうかは知らんのだが…… read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる