CGIだけど、なんか質問ある?part4
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
01/09/18 18:17ID:plR9HC2Eprint<<HTML_END;
<a href="http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833" target="_blank">旧スレ</a>
HTML_END
0877名無しさん@お腹いっぱい。
01/12/17 00:47ID:P4Cb9Kj6すいません。改造スレありました。
どうもすみませんでした
0878広義のCDIっつー事で
01/12/17 06:36ID:L0oYxvRINetscapeで、Content-Disposition: inline; filename=のファイル名に日本語ファイル名を記述して、
ダイヤログボックスのファイル名のところに反映させるには、どんなヘッダを送ればいいのでしょう?
0879名無しさん@お腹いっぱい。
01/12/17 06:50ID:???ネスケって勝手にasciiにしちゃうんだっけ
charset=hogehogeちゃんと吐いてる?
0880ウマナミです(笑)
01/12/17 06:58ID:L0oYxvRIresp.setContentType("application/octet-stream; charset=Shift_JIS");
となるけど、これでいいんだよね? 少なくとも、ダイヤログにapplication/octet-streamまでは通知されてます。
……トラフィック監視するしかないのかなぁ? とりあえずTelnetでリクエスト見ようとする試みは失敗した(^^;
ちなみに、クライアントはWin2000+NN6.2で、サーバはRedhat 7.1+Apache+Tomcat3.2でございます。
0881名無しさん@お腹いっぱい。
01/12/17 07:27ID:???ネスケは色々大変ですね、Shift_JISで良いと思います。
僕が昔嵌ったのは↓なんだけど、参考まで(お役にたてそうになひ (-o-; )
http://www.asahi-net.or.jp/~AE5T-KSN/apache/charset-problem.html
0882ウマナミナノネー
01/12/17 08:45ID:L0oYxvRI>>881
アドバイスありがとうございます。
うーん、困った……。この二日、これにはまりっぱなし。IEで×っつー話はよく聞いて、そのチェックはしたんだけど……
0883882
01/12/17 12:33ID:L0oYxvRI………NN6.2のバグかぁ?(^^;
0884名無しさん@お腹いっぱい。
01/12/17 14:40ID:???需要あるかな、、、
0885名無しさん@お腹いっぱい。
01/12/17 14:47ID:???http://pc.2ch.net/test/read.cgi/php/1001950501/
ここで十分な気もするけど。
そもそも何でこのスレでそんな話を?
0886884
01/12/17 15:01ID:???もっと一般ユーザ向けの宣伝すれがあってもいいかなと思ったんだが、
やっぱり下る一方ですよね、、、
>そもそも何でこのスレでそんな話を?
いや、なんとなく、、、
0887名無しさん@お腹いっぱい。
01/12/17 15:55ID:???0888607
01/12/18 09:01ID:???たとえば、「ここをクリックすると、ワードパッドが起動します」
っての。教えて!
0889名無しさん@お腹いっぱい。
01/12/18 09:51ID:???0890名無しさん@お腹いっぱい。
01/12/18 10:38ID:jEzvkCvwBさん,150,いいい
Cさん,120,ううう
というテキストファイルがあって、それを
Bさん,150,いいい
Cさん,120,ううう
Aさん,100,あああ
というふうに真ん中の数値が大きい順に並べ替えたいのです。
ハッシュとかを感がえましたがうまくいきません。
どうか教えて下さい。
0891名無しさん@お腹いっぱい。
01/12/18 10:50ID:0067Pw+W@ordered = map { $_->[0] }
sort { $b->[1] cmp $a->[1] }
map { [$_ => (split /<>/)[6]] } <>;
0892名無しさん@お腹いっぱい。
01/12/18 13:27ID:6sf+qjXn更新ボタンを押すと直前の書き込みが
再び書き込まれてしまいます^^;
どのような原因が考えられますか?
またその解決方法を教えてくれるとありがたいです。
0893名無しさん@お腹いっぱい。
01/12/18 13:32ID:Kyyu/mpvttp://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/199909/mgp00039.html
0894名無しさん@お腹いっぱい。
01/12/18 15:30ID:???そんなPC初心者板で聞いても100人中150人位が知ってそうな
事を態々マルチポストするとは、相当人を馬鹿にしてるか
信じられない位アホなんですね (藁
0895デフォルトの名無しさん
01/12/18 16:19ID:???つーか俺もマルチと思ったw
>>892
あっちにMethodが〜〜と書いてるがPOSTでもGETでも投稿したセッションは
一回のセッションとしてブラウザにキャッシュされている(勿論投稿内容もね)
だから、書き込み後にクッション画面を作るとかHTMLのMETAタグなんかで
有難うページ→トップにバウンドって感じでセッションを分けてやればよい訳
ちょうど今の2chに書き込んだ後みたいにね。
0896あっちの人
01/12/18 16:52ID:???うわっ、恥ずかしいな、俺。
いくらなんでも、そんなことプログラムの板で聞いてくるとは思わなかったんで、
自分で作る更新ボタンのことかと思ったのよ。あーあ。
0897名無しさん@お腹いっぱい。
01/12/18 17:55ID:yRecfJkP比較して前回の投稿と同じ文なら蹴れば?荒らし対策にもなるし。
0898名無しさん@お腹いっぱい。
01/12/18 21:38ID:/iqeHLWFマホ丸出し
0899名無しさん@お腹いっぱい。
01/12/18 21:43ID:???なんで正規表現で比較をするんだ?
eqを使わないのか?
0900名無しさん@お腹いっぱい。
01/12/18 21:51ID:???0901名無しさん@お腹いっぱい。
01/12/18 21:56ID:???荒らし対策は「ついで」でしょ?
>897は「全く同じ文を連続で投稿するような荒らしへの対策になる」って程度じゃないの?
更新ボタンによる連続投稿を防ぐ為ならeqでいいと思うけど。
0902名無しさん@お腹いっぱい。
01/12/18 21:58ID:???>900
いかにもBBS荒らされそうな頭と文体ですね、良い勉強になります。
0903名無しさん@お腹いっぱい。
01/12/18 22:00ID:???0904名無しさん@お腹いっぱい。
01/12/18 23:05ID:???0905名無しさん@お腹いっぱい。
01/12/19 01:38ID:CXBaLQQl>>211の真ん中あたりにある、HTMLの差分DLって
やっぱり無理なんでしょうか?
ちょうど同じようなことをやっているもので・・・。
0906あ
01/12/19 13:20ID:Pin70vo6問題です。↑はCRYPTです。当ててみてください。
0907名無しさん@お腹いっぱい。
01/12/19 13:39ID:m6kTuYTk問題です。↑は度し難いアフォです。諭してやってください。
0908あ
01/12/19 14:33ID:Pin70vo6解けないくせに。ひがんじゃってもーいやん♪
0909名無しさん@お腹いっぱい。
01/12/19 14:36ID:???お願い♥
0911名無しさん@お腹いっぱい。
01/12/19 15:11ID:???それともタイプミスなのか、それも聞きたい。
0912名無しさん@お腹いっぱい。
01/12/19 16:08ID:ysls8V+7http://choco.2ch.net/test/read.cgi/news/1008739542/
0913名無しさん@お腹いっぱい。
01/12/19 16:19ID:yulg3qde掲示板システムを作ってまして、
一度読みにきたら、その後10秒間は
304 Not Modified
を返すようにしたのですが、
IEだと何の問題もないのですが、
ネスケ4.75だと、
「ドキュメントにデータが含まれていません」
とエラーが出るのですが、どうしたらいいのでしょうか?
0914 ◆JAPUTeX.
01/12/19 18:48ID:wM5++m8M# 嘘かも。
Not Modified 返したいなら、Last-Modidied: を吐き出せばよきに計らってく
れますが、それではダメですか。少なくとも apache ならその情報を利用して
200 or 304 を決めてくれます。
#! /bin/sh
echo "Content-Type: text/html"
echo "Last-Modified: Wed, 19 Dec 2001 09:25:42 GMT"
echo ""
echo "moe"
たとえば、こんなCGIプログラムだと、
最初のアクセスは 200 (OK) が返りますが、
18:27:26.437068 2001:2c8:35::2.80 > 2001:2c8:35::3.3044: P 1:243(242) ack 535 win 65535 [flowlabel 0x610cf]
<snip>
0x0030 6ce5 d55d 5018 ffff 7dca 0000 4854 5450 l..]P...}...HTTP
0x0040 2f31 2e31 2032 3030 204f 4b0d 0a44 6174 /1.1.200.OK..Dat
<snip>
次からは 304 (Not modified) が返ってきます。
18:27:28.719320 2001:2c8:35::2.80 > 2001:2c8:35::3.3044: P 259:411(152) ack 1069 win 65535 [flowlabel 0x610cf]
<snip>
0x0030 6ce5 d773 5018 ffff 0498 0000 4854 5450 l..sP.......HTTP
0x0040 2f31 2e31 2033 3034 204e 6f74 204d 6f64 /1.1.304.Not.Mod
0x0050 6966 6965 640d 0a44 6174 653a 2057 6564 ified..Date:.Wed
<snip>
負荷を下げるために頻繁に読み込んで欲しくないというのであれば、Expires:
を使うと吉かも。
0915名無しさん@お腹いっぱい。
01/12/19 22:12ID:FzZSVld0windows 98のヴァージョン違いは異常にたくさんあるのですが。
Windows 98; Win 9x 4.90
というのがやけに多いのだけれどこれでしょうか?
0916913
01/12/20 01:55ID:U8Brc/IOありがとうございます。Expires:ですか。
調べてみます。
それと、ふと思ったのですが、CGIで動的にWebページを生成する形態で
apacheはどうやって更新されたかどうかが分かるのでしょうか?
すいません、ひょっとしてモノ凄くドキュソなことを
聞いてるのかも知れませんね・・・
0917名無しさん@お腹いっぱい。
01/12/20 02:47ID:???> それと、ふと思ったのですが、CGIで動的にWebページを生成する形態で
> apacheはどうやって更新されたかどうかが分かるのでしょうか?
普通のCGIではCGIスクリプト自体は常に呼び出される。
で、CGIスクリプトが"Last-Modified:"をつけて返事を返し、
クライアントからのリクエストに"If-Modified-Since:"があれば、
それらを比較してLast-Modifiedの方が古い場合はクライアントに
"304 Not Modified"を返してCGIスクリプトからの出力は転送しない。
nphスクリプトの場合は、ApacheはCGIスクリプトの出力をそのまま
クライアントに返すだけなので、CGIスクリプトが自前でHTTP_IF_MODIFIED_SINCE
を処理して"200 OK"か"304 Not Modified"を返す必要がある。
通常のCGIでもHTTP_IF_MODIFIED_SINCEで処理を変えた方が、転送量には
関係ないけどサーバの負荷軽減には効果があるよ。
0918913
01/12/20 03:17ID:iiNlv5yLあ、いえ、それはわかるんです。
でも、>>914の方のを読むと、
CGIでもLast-Modified:をつけておけば
apacheが自動的にやってくれる、と言う感じに読めますので。
0919ルータス
01/12/20 03:21ID:???0920名無しさん@お腹いっぱい。
01/12/20 03:43ID:???0921917
01/12/20 04:31ID:???> CGIでもLast-Modified:をつけておけば
> apacheが自動的にやってくれる、と言う感じに読めますので。
自動的って、まさかCGIを動かすかどうかを自動的に決定するってこと?
CGIは常に実行しないとLast-Modified:ヘッダが取れないじゃん。
自動的に行われるのは、
・HTTPステータスを200にするか304にするか
・304の場合にはCGIの出力したボディ部分を捨てる
という動作。914さんも同じこと言ってると思う。
0922913
01/12/20 04:58ID:iiNlv5yLあぁ、なるほど、理解しました。
すいません。アフォでした。
あと、>>913に書いたネスケ4.75ですが
CGIで304を送ると、「ドキュメントにデータが含まれていません」なのに
そのCGIで出力したHTMLに埋め込んである画像には
apacheが304を送って何の問題もなく動作してるようなのですが、
これはどうなってるんでしょうか・・・・。
0923名無しさん@お腹いっぱい。
01/12/20 05:54ID:???> CGIで304を送ると、「ドキュメントにデータが含まれていません」なのに
access.log を見て、apacheが本当に304で返してるかどうか確認してみれ。
0924家からです。
01/12/20 06:11ID:???http://www.he.net/cgi-bin/error404 Keep-Alive: timeout=10, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html d6
Found
The document has moved here.(http://www.he.net/cgi-bin/error404)
ダメだ。SJISで書けの後は、これかよ。いいじゃん。スクリプトで書いたってぇ。
0925家からです。
01/12/20 06:14ID:???0926名無しさん@お腹いっぱい。
01/12/20 08:06ID:???0927名無しさん@お腹いっぱい。
01/12/20 08:15ID:???19日は水曜ですか?違いますか?
ハッキリさせてくださいませ。
0928名無しさん@お腹いっぱい。
01/12/20 08:43ID:???見ろ。
0929913
01/12/20 15:12ID:7Dj+HM68Perlで
print "Content-type: text/html\n";
print "Status: 304 Not Modified\n\n";
を返しています。
access_log見ましたが、
CGIで304を送った時は送信バイト数が"0"ですが
画像の要求に対してapacheが直接304を送った時は"-"となっています。
どう違うのでしょうか・・・・・。
0930913
01/12/20 16:28ID:7Dj+HM68原因はCGI側からLast-Modified:を送っていなかったことです。
ネスケ4だけ
「If-Modified-Since:を送ってねえのに
304とはどういうことだ!!説明しる!!ゴルァ!!」
とゴネてたようです。
ご迷惑をおかけしました。
0931名無しさん@お腹いっぱい。
01/12/20 22:06ID:???RFC2616には、304 Not Modifiedについて、If-Modified-Since:等が付いていない
GETの動作については書いてないので、どんな動作をするかは実装依存。
0932名無しさん@お腹いっぱい。
01/12/21 10:18ID:???suidしてみたんですが何故か動くスクリプトと駄目なのが有ります。
自分では何処で引っ掛かっているかが分からないんですが・・・
0933名無しさん@お腹いっぱい。
01/12/21 11:05ID:???setuid/gid下ではtaintedなスクリプトは動かないです。
perldoc perlsec 参照のこと。
0934名無しさん@お腹いっぱい。
01/12/21 15:30ID:voEY9WIwPOSTで書き込んだあとに、Location:で飛ばすと
IEだとそのURLに対するIf-Modified-Since:を吐かずにリクエストを出し、
ネスケだと、そもそもリクエストすら出さずに勝手にキャッシュを使いやがります。
これ、どうしてでしょう。。。。?
Locationで飛ばしても、ブラウザでURLを指定して飛んだのと
同じようにするにはどうしたらいいのでしょうか?
誰か助けて。。。
0935会社からです。
01/12/21 18:56ID:s31HoiR80936934
01/12/21 19:08ID:voEY9WIwありがとうございます。
メタタグで飛ばすことによって、IEでは解決しました。
しかし、ネスケでは
明示的にリロードされるまでは、
キャッシュにあるものはキャッシュを使うようになっているみたいです。
0937名無しさん@お腹いっぱい。
01/12/21 19:16ID:???0938名無しさん@お腹いっぱい。
01/12/21 19:37ID:voEY9WIw今回作っている掲示板システムですが、
多少毛色の違うモノでして、
更新されたら更新された差分だけ転送し、
現在のものが最新であれば、304でキャッシュを表示する
というモノです。
なので、キャッシュ無効はできないんです。。。。
実はこういうシステム自体が無理なのかなぁ。。。。
0939名無しさん@お腹いっぱい。
01/12/22 03:42ID:???飛ばした先のページにmetaタグ書けばキャッシュ読まないと思うけど。
こんな感じで。
<meta http-equiv="expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
とりあえず現時点でIEでキャッシュ読まない状態なら、ネスケの場合は
<meta http-equiv="Pragma" content="no-cache">
でキャッシュを無効化できると思う(確認はしてないが)。
HTTP/1.1ならサーバレスポンスヘッダを以下のように出力しても良い。
print "Content-Type: text/html\n";
print "Cache-Control: no-cache\n\n";
ただ、なんかIE4.5(Mac)だと駄目らしい。
0940名無しさん@お腹いっぱい。
01/12/22 06:03ID:???をくっつけて読むスクリプトを呼び出すようにすればいいんじゃないの?
Location: http://$host/$path/read.cgi?force_reload=yes とかそんな感じで。
0941934
01/12/22 14:56ID:Zp3FJg9Rおおお、すごい。全然思いつかなかった。。。
アフォですいません。。。
でも、
http://..../read.cgi?a=100&force_reload=yesと
http://..../read.cgi?a=100は
違うURLなので、下のURLに対して、Last-Modified:を送っていても、
上のURLではIf-Modified-Since:は送ってくれないですよね?
キャッシュ無効にすると、そもそもIf-Modified-Since:どころじゃ
ないだろうし。。。。
Metaタグでrefreshしても、サーバに問い合わせすらせずに
キャッシュを表示するネスケの仕様もすごいですが。。。。
Last-Modified:を送らなければ、
ちゃんと読みに行ってくれるみたいなんですけどね
0942名無しさん@お腹いっぱい。
01/12/22 23:07ID:jSeqz4dA0943名無しさん@お腹いっぱい。
01/12/23 01:12ID:???0944名無しさん@お腹いっぱい。
01/12/23 09:14ID:IT07ia6Aパフォーマンスの良い実装方法を検討しています。
その一つとして、HTMLファイル内に<IMG src="〜.cgi">タグを
使用して(content-type=image/gif指定で、表面上は透過GIFを
表示させるようにして、内部でログを生成する)実装する方法も
検討項目の一つとしています。
この場合、アクセスログのリクエスト処理が終わってなくても、
コンテンツはブラウザ上に表示されるのでしょうか?
もしそうなら、負荷のかかる処理を積極的にバックグランドで
処理し、ユーザはそれにストレスを感じずにページを閲覧でき、
効果的だと考えたのですが。
よろしくお願いします。
0945名無しさん@お腹いっぱい。
01/12/23 09:20ID:???っていうか、全然普通にやられてる方法だし・・・
Referer取るのにめんどくさいので俺は嫌い。
0946デフォルトの名無しさん
01/12/23 09:31ID:???↓#凄い重い処理
カウンタ表示
って事かな?、でカウンタをストレスレス?に表示したいと。
1:単純にforkしてプロセスを分割する、ただ負荷自体は大きくなる。
2:カウンタを静的な画像にする、つまり100番目にアクセスした人は
100じゃ無くて099を見る訳、で、HTMLの下の方でCGIをキックして
こっそり次の(100)画像を生成する。
つーかカウンタ程度なら現状で問題無いと思うけど、がんばってね。
0947944
01/12/23 10:02ID:SzYzoLzHありがとうございます。検討の材料として活用させていただきます。
0948名無しさん@お腹いっぱい。
01/12/23 11:03ID:DNt3H0XeRuby、perl,PHPのいいところ悪いところ教えてください
0949名無しさん@お腹いっぱい。
01/12/23 11:46ID:???PERL 完璧に厨房臭い
Ruby え?何それ
0950名無しさん@お腹いっぱい。
01/12/23 11:49ID:DNt3H0Xeじゃあ何がいいわけよ?
0951名無しさん@お腹いっぱい。
01/12/23 11:52ID:???0952名無しさん@お腹いっぱい。
01/12/23 11:53ID:???0953デフォルトの名無しさん
01/12/23 11:59ID:???Perlで良いんじゃない?>950
0954名無しさん@お腹いっぱい。
01/12/23 12:03ID:???0955名無しさん@お腹いっぱい。
01/12/23 12:15ID:DNt3H0XeperlだったらRubyの方がキレイに見えて覚えやすそう
だったんですが、何でperlがいいんでしょうか?
Rubyの悪いとこも教えてください。
0956名無しさん@お腹いっぱい。
01/12/23 12:24ID:???キレイってのも良く分からんし
0957名無しさん@お腹いっぱい。
01/12/23 12:27ID:???$とか多用する事じゃないの?
0958953
01/12/23 12:34ID:???>955 それぞれのページに誇張も含めて特徴が書かれてるよ。
基本的にRubyはPERLより難しいかわり柔軟
(後出しじゃんけんな上に、OOにしちゃったので)
んで、ドキュメントとかは多分少ないしょうね。
どっちにしても、何かポインタ示してもらわないと答えられない(多様性とか習得の難易度とか)
覚え易いのが良ければPythonとかお勧め
>>957
$多用すると汚いの?
0959名無しさん@お腹いっぱい。
01/12/23 12:44ID:???0960名無しさん@お腹いっぱい。
01/12/23 13:29ID:???0961名無しさん@お腹いっぱい。
01/12/23 13:30ID:???> $多用すると汚いの?
かなり見づらい。特にCをやっているとね。
0962名無しさん@お腹いっぱい。
01/12/23 13:58ID:???perlはCとか前科が無ければ習得が容易
RubyはCやってた人向きでC勉強できるぐらいの知能あるならRuby
やれって事?そしてRubyの方が融通がきくんだね
0963名無しさん@お腹いっぱい。
01/12/23 14:10ID:???Cって難しいか?
Perlよりも遙かに仕様が小さくて簡単だと思うけど。
文字列処理は面倒だけどね>C
0964963
01/12/23 14:12ID:???0965C勉強中
01/12/23 15:10ID:???プログラミングが初めてならPerlの方が楽だと思う。
Cだと初期化が面倒くさい。
Perlの$が汚いという人もいるけど、初心者には変数の目印として逆にわかりやすいと思うよ。
0966名無しさん@お腹いっぱい。
01/12/23 15:54ID:???そうか・・・・
漏れは時々書き忘れてエラーを起こす。更にVBではセミコロンをつけてしまってエラーを起こす w
0967名無しさん@お腹いっぱい。
01/12/23 17:15ID:yPva/HA4HTMLで書き出すようにするのって、大変なんでしょうか?
CGI超初心者ですが、できるようなら改造してみたいと思ってます。
ご意見お聞かせください
0968名無しさん@お腹いっぱい。
01/12/23 17:48ID:???CGI以外のプログラミングの経験は?
0969名無しさん@お腹いっぱい。
01/12/23 23:30ID:???0970967
01/12/24 11:30ID:nb0Ra4Jqはっきり言って、ないようなものです>プログラミングの経験
改造するなら勉強したいと思っています。
ただ、今使っている掲示板のログをそのまま使いたいので、
できれば全部書き直すのではなく、
あくまで改造して、HTMLで書き出すようにしたいです。
ログを変換してHTMLで書き出す掲示板を使うのと
どっちができそうかなと思いまして・・・
0971名無しさん@お腹いっぱい。
01/12/24 12:11ID:???その辺のDQNweb解説サイツを適当に読むだけで十分でしょう。
ただそう言うことすると脳みそがスポンジ状になる可能性がとても高いので
まともな本を買うかドキュメントを読む事をお勧めします
0972名無しさん@お腹いっぱい。
01/12/24 13:00ID:???勉強したいんですが
これよいですか?
コレ以外になにかおすすめあったら教えてください
0973972
01/12/24 14:40ID:???0974名無しさん@お腹いっぱい。
01/12/24 15:25ID:???http://pc.2ch.net/test/read.cgi/php/988809842/l50
お勧めはやっぱオライリー各書
でもプログラム自体初めてなら結城さんの本とかもヨサゲ
0975967
01/12/25 09:04ID:c3oW+NDSがんばってみます・・・
0976名無しさん@お腹いっぱい。
01/12/25 21:28ID:YEFyEeiBhttp://www.raiji.net/bbs/kaku.cgi
レス数が950を超えています。1000を超えると書き込みができなくなります。