過去ログ NO.1099898418
□ 初心者君95号 [2004年10月30日14時21分] アンケートテーマの順番を日にちが新しいのを上にしたい場合はどうしたらいいんですか?
□あなたの○○は? 2004年10月 24 日 無期限 □君の○○は? 2004年10月 26 日 無期限 □あなたは○○ですか? 2004年10月 28 日 無期限
これを↓
□あなたは○○ですか? 2004年10月 28 日 無期限 □君の○○は? 2004年10月 26 日 無期限 □あなたの○○は? 2004年10月 24 日 無期限
こういうふうにしたいです。教えてください。
□ NXer [2004年10月30日19時23分]はじめまして。NXerです。
>日にちが新しいのを上
あんQのデータは、anqディレクトリ内tempディレクトリに 保存されています。20041030153748のようにファイル名に 年月日の8桁が左詰になっています。ファイルに保存された データは、そのファイルを開けてみると次のようになってい ます。 --------------------------------データ season,20041030153748,36PeRwkZjx0Mk,0,0,1,name,mail@aa,, 対応する変数群です。---------------変数 $subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url
このデータ構成から、$lastmodがキーとなれば、ご希望のように 並べ替えることができると思います。
さて、今回の投稿者が「初心者君95号」さんですから、 1)あんQは初心である、と考えます。 2)しかし、cgiの変更や、perlの文法は理解できるものと 想定します。仮に、この点も初心であったとしても、変更は 難しいことはありません。ぜひ取り組んでみてください。
以下は、ご要望の >日にちが新しい順 の変更の愚案です。 (当方でその動作検証はしていません。そちらで試してください。 なお、このようにcgiを本格的に試めされる場合は、ローカルサーバー を構築して、動作確認をするなどして、サーバーに思わぬ負荷を 掛けないようにご注意ください。)
変更は、すべて挿入です。コメントは見出し程度に付け加えました。 テキストモードでコピー、ペースト、後は行番号の削除作業で動作すると 思います。すでに何らかの変更を加えられている場合は、変数や配列名の 重なりに注意してください。 --------------------------行番号はその付近です。158、175は既存 158 else { print "<table class=plain>\n<tr><th class=plain>アンケートテーマ</th><th class=plain>開始日</th><th class=plain>終了日</th></tr>\n"; } # ●newly inserted lines to sort files in the limit-date order新規挿入スクリプト 161 foreach (@dir) { if (open(FILE,"$tmp$_")) { @lines = <FILE>; close (FILE); $subject = shift (@lines); ($subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,) = split(/\,/,$subject); $key{$_} = $lastmod; #●sortkey setting sort by $lastmod } } 171 @sortdir=(); #●initialization of sortdir array
# ● sorting by lastmod-key foreach (sort { $key{$a} <=> $key{$b} } keys %key) { unshift (@sortdir,$_); }
175 foreach (@sortdir) { #既存スクリプト --------------------------------------------------------- p.s.========================== 1)の初心ということですが、いずれ運用中に、次の段階に進みます。 そのころは、無期限の設定と短期で終了するテーマが混在することに なります。この場合は、終了日順($limit)のソートをすることによって、 常に新しいテーマが表の上位にくるという利点が発生します。 アンケートをどのように運用するのか、これも、当ラウンジのこれから の課題と思います。この点については、すでにすえぽんさんの電光サポー トサイト(homepage by xxxx匿名性保持のためxです)のanqページに詳細 がアップロードされていますので、ご照会します。
□ 初心者君95号 [2004年10月31日13時11分]> 変更は、すべて挿入です。コメントは見出し程度に付け加えました。 > テキストモードでコピー、ペースト、後は行番号の削除作業で動作すると > 思います。すでに何らかの変更を加えられている場合は、変数や配列名の > 重なりに注意してください。 これはanq.cgiに付け加えるのですか? 行番号の削除作業はどのような物でしょうか?わかりません。
本当にお手数かけてしまいすみません。混乱中ですのでもう少し詳細に教えてくださると嬉しいのですが。
これをきっかけに少しCGIをがんばってみたいと思います。
□ NXer [2004年10月31日19時02分]>混乱 させてごめんなさい。NXerです。 >少しCGI ということですから、書き直してみました。
行番号を削除したものです。コピーペースト部分は==〜==の 範囲です。 ----------------------- 158 else { print "<table class=plain>\n<tr><th class=plain>アンケートテーマ</th><th class=plain>開始日</th><th class=plain>終了日</th></tr>\n"; } ==================↓からコピー開始 # ●新規挿入スクリプ(無期限の設定で、日にち順 for 「95号」さん) foreach (@dir) { if (open(FILE,"$tmp$_")) { @lines = <FILE>; close (FILE); $subject = shift (@lines); ($subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,) = split(/\,/,$subject); $key{$_} = $lastmod; #●並べ替えのキーは、$lastmodです } } @sortdir=(); #●並べ替えの配列(箱のようなもの)を一度空にします # ● ↓の行で並べ替えます foreach (sort { $key{$a} <=> $key{$b} } keys %key) { unshift (@sortdir,$_); } =====================↑ここまでコピーする 175 foreach (@sortdir) { #既存スクリプト ------158と175は場所を確定するため、メモとして残しました。 (それから、見やすいようにインデントを入れてみてください。)
==もう一つのメモ== perl(スクリプト言語)には、本来、行番号はありません。 スクリプトを編集する機能を持つソフト(例『秀丸』)には、 行番号表示機能があります。作業を効率よく進めるためです。 当方は、「その付近」と書いていますが、それは、編集過程で スクリプト文やコメント文(例 # ● sorting by lastmod-key) を編集した結果、多少行番号が追加、削除されてずれることを 読み手に知らせるためです。
95号さんが使われている、エディタは当方には不明です。 行番号表示がない場合、スクリプトを目で見ればどのあたりか 分ると思います。ワードパッドなどの場合でも、「アンケート テーマ」をキーワードにして検索すればその位置にカーソルが 移動します。後は、コピー、ペースト、実行あるのみですね。 ご希望どおりの結果になりますように。
□ 初心者君95号 [2004年10月31日20時18分]???できないです。
コピーして張るだけなんですよね。おかしいです。。。
□ NXer [2004年11月01日20時01分]>できない
当方のローカルサーバーで書き換えてみたところ、 動作しました。NXerです。
これで試してください。 --------------------------- foreach (@dir) { if (open(FILE,"$tmp$_")) { @lines = <FILE>; close (FILE); $subject = shift (@lines); ($subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,)=split(/\,/,$subject); $key{$_} = $lastmod; } } @sortdir=(); foreach (sort { $key{$a} <=> $key{$b} } keys %key) { unshift (@sortdir,$_); } ------------------------------------
見かけは同じですが、改行のためのコードが前回と違います ので、サーバーは、認識してくれると思います。
>コピーして張るだけなんですよね。おかしいです、、、
と報告いただき、当方の前回の書き込みのステップを 見直してみました。スクリプトは7ヶ月まえ動作して います。不具合の理由は、この変更に関するウェブページを HP作成ソフトで読みとりそれをコピーしたことが原因のよう に思います。見かけは同じ数行の文字列ですが、おそらく、 html文(の改行コード)は、cgi用の文(のそれ)と異なる ために、サーバーが認識しなかったものと思います。
ほんのわずかな環境の違いで、cgiがうごかない、おかしい、 ということは日常茶飯事です。どうぞ、変だと思ったら ラウンジに書き込んでください。
それから、↓が今回変更したanqの結果です。 ----------------------------------- アンケートテーマ 開始日 終了日 □服装 2004年11月01日 無期限 □スポーツ 2004年11月01日 2004年12月01日 □季節 2004年10月30日 無期限 ------------------------------ 01日は、時間差の順位です。それから、テーマは少なくとも 三つ程度は作成してからためして下さい。
□ 初心者君95号 [2004年11月02日17時12分]できないです。 ここですけど、上の改造をすると
■新しいアンケートテーマを設定する ----------------------------------------- あんQ v.2.01
の所が消えます。 URL書きこんだ方がいいでしょうか? まだ怖くて何も改造してませんが、
□ NXer [2004年11月02日23時00分]早速、お試しいただきありがとうございます。NXerです。
>消えます 次の行で表示する部分が失われているようですね。 ------------------------------------------- 191 if ($open_mode) { print "■<a href='$script?mode=new_open'>新しいアンケートテーマを設定する</a>\n"; } print "</blockquote>\n"; 194 © print "</body></html>\n"; exit; } 194行目の内容は↓のサブ(sub)ルーチンのことです。 969 sub copy { --------------------------------------- ==作業メモ==
>怖くて
現在anq.cgiが保存されていますね。このファイルをオープン してanqv1.cgiのように、異なる名前で保存してください。 このファイル名を元に戻せばいつでも現状に復帰できます。 ご安心ください。
ついでに、このanq.cgiをさらに異なる名前で保存します。 例 anq95test.cgi テストは、この名前でしてみます。この時 17 $script = "anq.cgi"; を 17 $script = "anq95test.cgi"; と直しておきます。
anq.cgi ・・・・運用ファイル名 anqv1.cgi ・・・・万一の保存用ファイル名 anq95test.cgi ・・test用ファイル名。 テストして問題が無ければ、そのま運用するか、必要ならファイル名 を本来のanq.cgiにする、$scriptも書き換えます。
通常は、ローカルサーバーでテストされることをお勧めしますが、 当方で試してありますから、大丈夫と思います。
==perlでお手つきしやすいこと、その1== perlでは、行末に「;」をつけます。適当に消すと不具合が 発生します。 その2 {(( (・・ )・・ ) ・・・・ )} や { } 括弧の対応が複雑になったり、複数行にまたがって離れると、 付け忘れやすく、その時は、100%エラーになります。 このあたりに注意されれば、次は成功するものと確信しています。
==どうしてもダメ== cgiに慣れているつもりですが、よくあることです。 95号さんのウェブプログラミングのご経験などは、「初心者」という 以外当方に不明です。必要なら、すえぽんさんのリソースをお借り して、今回の変更に関係する行とその前後数行をコピーしてみてくだ さい。不具合の理由を発見するために、より多くの人に見ていただけ るかもしれませんから。 その前に、自己解決されますように。
□ 初心者君95号 [2004年11月02日23時45分] > 191 if ($open_mode) { print "■<a href='$script?mode=new_open'>新しいアンケートテーマを設定する</a>\n"; } > print "</blockquote>\n"; > 194 © > print "</body></html>\n"; > exit; > }
この部分はありました。 なのに映りません。
具体的に言いますと
□好きな本は? 2004年11月2日 □好きな雑誌は?2004年11月2日 □好きな文庫は?2004年11月2日 □ェ・9
・・・とアンケートテーマの下に 「□ェ・9」と変な文字が出て、リンクすると「anq/anq.cgi?data=.」ここへ飛びます。
その下は何も出てきません。
> 必要なら、すえぽんさんのリソースをお借りして、
すみません。リソースって何ですか? まだ3週間ぐらいしかやった事無くて。。。 迷惑かけてしまってすみません
□ NXer [2004年11月03日20時29分]>まだ3週間
にもかかわらず、cgiの変更に興味を持ち、実際にテスト されたことが、とてもうれしいです。
そのうえに、具体的な結果が、もし時間順に最新をトップ として並べ替っていたら、当方の目的は完了です。NXerです。
******以下は、おそらく、プログラム開発に使うソフト の組み合わせで、発生する問題かもしれません。************
95号さんが偶然引用いただいた194行目に、「文字化け」 による、異なる表示に気づかれると思います。 ------------------------------------------------ > 194 © (当方の元の書き込みも文字化け) > 194 c (←当方で一度保存した時、コードの違いで保存されず、 著作権マークがcに変化、多分こんな風に不具合が でるのでしょうか。) ↓元のスクリプト > &copy (文字化けするため、&は全角にしました。) -----------------------------
□ェ・9 も同じことなのでしょうか。
当方の例---------------------------------- □服装 2004年11月01日 無期限 の服装のリンク表示(リンクの上で右クリック、そのプロ-パティ)は http://127.0.0.1/~user/anq/anqsortorder.cgi?data=20041101191740 95号さんの例 □ェ・9 >と変な文字が出て、リンクすると anq/anq.cgi?data=. ------------------------------- この原因は、当方にはよく分りません。
一般的には、cgiを設置、運用、開発するとき、文字コードの 選択(例、shift-jis, eucなど)が、ソフトやOS(ウィンドウ ズXPなど)で異なる時、文字にならず各種記号などが表示され ることがあると思います。 参考までに、当方のコンピュータ環境です。 1.1 コンピュータのOSは当方はwindowsme (window系なら当方と同じ結果になります。) 1.2 エディターは、秀丸、保存の時の文字コードは 自動(shift-jis)です。
>リソースをお借 りして、とは、このようにラウンジに書き込み、記録媒体を 多少占有することです。 もともと、すえぽんさん(主宰者)のラウンジの趣旨は、 掲示板の設置経験とその知識を前提としており、「cgiとは何」レ ベルは対象外でした。 現在では、あまりにインターネットが普及して、かえって初心 レベルの壁が厚くなっているような気がします。そこですえぽ んさんの設置趣旨を越えると当方(NXer)が考えて、勝手に、 趣旨以外の愚論を展開する時「お借り」することになります。
□ 初心者君95号 [2004年11月03日23時11分]> 194 © (当方の元の書き込みも文字化け) > 194 c (←当方で一度保存した時、コードの違いで保存されず、 > 著作権マークがcに変化、多分こんな風に不具合が > でるのでしょうか。) これがでました。
□ 初心者君95号 [2004年11月06日23時30分]・・・・やっぱり出来ません。さっぱりわかりません
URL載せときます。http://p42.aaacafe.ne.jp/~tosi/anq/anq.cgiここです。
わからないでしょうか?
NXerさんのメールアドレスを教えてくれないでしょうか? 甘い考えかもしれませんがユーザーとパスワードをメールで送り やってもらえたら幸せなのですが。 やっぱりこういうのはいけないでしょうか。
□ NXer [2004年11月07日10時19分]>さっぱりわかり ↓で100%わかりましたから、お知らせします。NXerです。
>URL載せ http://p42.aaacafe.ne.jp/~tosi/anq/anq.cgi から、95号さんのプロバイダが分りました。aaacafeですね。
すこし説明をします。 インターネット接続には、プロバイダあるいはそれに代わる 無料HPサービスが必要です。 さて、ここでキーワードは「無料」ということです。 現在、世界は市場経済活動で動いています。それは、「利潤」 を生む経済活動です。有料とは料金収入で業務をまかないます。 無料は、広告料金と得て、営業をします。そのため、見かけ上は ユーザーには無料ですが、少なからぬ制約がともないます。 では、どのような制約でしょうか。それは、ウェブサイトで 広告スペースを強制的(義務的)に占有されるということです。
具体的に、その占有方法を検証することができます。 anqを起動してください。ブラウザーの表示をクリックすると プルダウンメニューがでます。その中にソースがあります。 クリックすると、↓が表示されます。 ------------------------引用、はじめの数行 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS "> <title>あんQ</title> <style type="text/css"> body,td,th { font-size:10pt; } -------------------------------------------- これは、anq.cgiが実行されている様子です。 この中で、<body>タグ付近を見てみましょう。 -----------------------aaacafeの例 </head> <body text='#004080' bgcolor='#ffffff'><!-- VC active --> <SCRIPT LANGUAGE="JavaScript">・・・・・ここから広告 <!-- // ValueParameters ValueHost = "hs0068897"; ----------------------------------下は、広告無しの当方の例 </head> <body text='#004080' bgcolor='#ffffff'> <div style="font-size:20pt;font-weight:bold;">■現在のアンケート一覧</div><p> <blockquote> ----------------------------------
まとめると、無料HPサービースのサーバーには、 <body>タグを探索して、あれば、その直後に広告を自動(強制)的に 挿入するプログラムが登載されています。
結論です。 インターネットでcgiを設置する時、プロバイダー選びが 重要です。今後の参考までに、どのような選択があるか をメモ書きします。 ========================= 1 cgiを許可する(有料)プロバイダー、nifty,biglobeなど。 意外と少ないのは、cgiがサーバーには厄介な存在だからです。
2 cgiを許可する無料HPサービスやレンタルサービス。 infoseekはよく知られるものです。広告挿入があり チャットなどは実用にならないかもしれません。
2.1 aaacafeの場合は、通常の設置では、広告のために 電光!が崩れるなどします。 なお、広告を拒否するなどのプログラム改変は 契約違反になりますのでご注意ください。
2.2 無料でも広告をポップアップ方式で表示するなど のサービスがあれば、cgiによっては問題を解消できます。
文中の特定の名称は、例ですから、それらを当方が推奨する ものではありません。ラウンジの過去記事にて触れたものです。
初心とは、何がわからないかがわからない、ということですが、 ここで、プロバイダー選択という原点が確定しました。脱初心 です。
95号さんのこれまでのご努力とその結果についてですが、 95号さんの知らない世界で、このような不具合が発生 していました。その意味では、当方の愚案を含めて これまでの経験は、ウェブプログラム的には、100% 正しく実行されていた(不具合に思われる現象を引 き起こしていた)ものです。
あらたなウェブサイト構築の構想にむけて再出発ですね。 設計図を書き、html文書とcgi(掲示板、anqなど)とを どのように配置するか、また、それらに対応できる サーバー仕様を持つプロバイダーはどこか、など慎重に ご検討ください。ご健闘をお祈りいたします。
□ 初心者君95号 [2004年11月07日13時58分]> 100%わかりましたから、お知らせします。NXerです。 > aaacafeですね。 > 結論です。 > インターネットでcgiを設置する時、プロバイダー選びが重要です。
aaacafeだとできないって事ですね。
具体的にどこのプロバイダーがいいのでしょうか。 aaacafeしか知りません
infoseekで一応やってみますが 広告無し。又は広告が小さい所はありますでしょうか。(無料で)
□ NXer [2004年11月07日19時51分]探索方法を書きます。NXerです。
検索エンジンで「無料ホームページ」「cgi」「掲示板」 「プロバイダーの選び方」などの検索語を使えば、他にいくつか 候補が出ると思います。 このラウンジの過去ログでも、「infoseek」と検索すると どのような設置上の問題があるのか、がよく分るはずです。 「ロリポップ」も検索できると思います。(ラウンジトップ を見てください。)
それぞれの規約やサーバーの仕様などを読みます。 次にFAQのページを探し、過去の質問をお読みください。 おおよそのcgi設置の問題点が把握できます。 なお、説明中、「自作cgi」とは、無料HPサービスや、レンタル 業者が提供するcgi以外のcgiです。すえぽんさんのcgiも 「自作」になります。基本的には、設置支援は期待できません。
広告の表示については、 1 バナー式(画面横断型広告) 2 ポップアップ式(画面に次々表示されるのが欠点) 3 無料にもかかわらず広告の表示無しが選択できるか など、あらかじめ予備知識があれば、選択に迷うことは ないと思います。
95号さんのウェブサイトの目的が当方には不明です。 大原則は、目的が優先します。従って、上記の説明に関 わらず、目的によっては有料の方が、よりよい選択とい うこともあります。
(件名から内容が離れていくためこれで当方は終結させて いただきます。必要なら新たな件名でラウンジに、書き 込んでください。 なお、googleの検索では、ラウンジの質問、回答も 検索可ですから、同じ疑問をもつ人々に役に立つ ことがあるかもしれません。)
|
|