C/C++ CGIスレッド
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/02/26 08:58ID:GDAQuNNShttp://pc2.2ch.net/test/read.cgi/php/988918264/
C/C++ CGI 専門のスレッドです。
スクリプトを検索できるサイトです。
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/
http://www.cgifiles.com/scripts/cc++/index.shtml
前スレ
http://pc2.2ch.net/test/read.cgi/php/988918264/
0033nobodyさん
04/03/11 10:27ID:???0034nobodyさん
04/03/11 14:15ID:???試してみた?
>>32
したっかぶりっこ?
MIMEがついてるんだからこそブラウザ側で判断してくれてちゃんと画像として表示されるよん
0035nobodyさん
04/03/11 14:22ID:???0036nobodyさん
04/03/11 14:33ID:???http://pc2.2ch.net/ba.gif
>34
>32は晒し上げしているのではないかと。
003828
04/03/11 19:49ID:???あ、ダイレクトに、ってのは、ブラウザからって意味ですか・・・。
すみません、思い切り勘違いしてました。
(imgタグでない、他の方法で HTMLに記述しろ、という意味かと思ってました・・・ formとか)
試してませんが、たぶん出来ると思います。>>33、>>34、>>36さんの言ってる通りではないかと。
お騒がせしたです・・・。
0039sage
04/03/12 01:21ID:vGYEPhj30040nobodyさん
04/03/12 01:22ID:???0041nobodyさん
04/03/12 02:23ID:???C++コンパイラってありますか?
0042nobodyさん
04/03/12 08:35ID:???答えにはならないけど、LiveCD使うといいのでは?
漏れはLinuxユーザだけど、FreeBSDのサーバで動かすために
FreeBSDのLiveCDを使ったらうまくいった
0044nobodyさん
04/03/12 11:36ID:???http://livecd.sourceforge.net/
http://www.freesbie.org/
http://www.netboz.net/
漏れはひとつめのLiveCDというのを使った
aaacafeで動いてる
libc(?)以外のライブラリは静的リンクにしてある
% ldd hoge.cgi
hoge.cgi:
libm.so.2 => /usr/lib/libm.so.2 (0x28091000)
libc.so.4 => /usr/lib/libc.so.4 (0x280ad000)
linuxだとgccやglibcのバージョンに気をつけて選ぶといいかもしれない
0046nobodyさん
04/03/14 14:00ID:???0047nobodyさん
04/03/14 14:37ID:???個々のdistroの詳細は板違いなので
Linux板のdistro比較のスレなどを見たほうがいいかも
とりあえずこのへんをチェック
http://www.distrowatch.com/
http://www.distrowatch.com/table.php?distribution=lindows
0048nobodyさん
04/03/14 22:45ID:???0049nobodyさん
04/03/14 23:13ID:???0050nobodyさん
04/03/15 08:03ID:???あのキモヲタがゴリゴリCでCGIを書く時のライブラリを作っているらしい。
0051http:// FLA1Aah099.kyt.mesh.ad.jp.2ch.net/
04/03/15 09:04ID:???0052nobodyさん
04/03/16 00:14ID:???mkdir
0053nobodyさん
04/03/16 13:40ID:???0054nobodyさん
04/03/16 23:46ID:???flock(2)
lockf(3)
0055nobodyさん
04/03/18 02:03ID:???ここ検索すれとか、何か情報キボン。
いちおうググってみたいけど、ロクなのが見つからない・・・ OTL
0056nobody55
04/03/18 02:04ID:???↓
みたけど
0057nobodyさん
04/03/18 17:25ID:???0058nobodyさん
04/03/21 00:25ID:NzuooVWxご冥福をお祈り申し上げますです。
0059nobodyさん
04/03/21 00:45ID:???なぜこのスレに書き込んだのかが、大きな問題だ。
0060nobodyさん
04/03/21 00:47ID:h03qa3k8> すばらしい笑いと、円熟の演技を与えてくれたいかりや長介さ
> んが亡くなりました。
> ご冥福をお祈りします。
>
> なお、現在news系のサーバはアクセス過剰で繋がりにくくなっ
> ています。
> いかりやさんを偲ぶのには以下の板をご利用ください
> http://live8.2ch.net/livesaturn/
> http://live10.2ch.net/livevenus/
0061nobodyさん
04/04/01 03:11ID:???こんなの見つけた
0064nobodyさん
04/04/12 09:09ID:/q6VLnQf0065nobodyさん
04/04/14 20:29ID:???if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
return 0;
}
// 特殊記号を変換する
void form::Escape( char* src )
{
if(src){
char *dst;
for(dst = src; *src; src++ ){
if( *src == '%' )
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
else if( *src == '+' ) *dst++ = ' ';
else *dst++ = *src;
}
*dst++ = '\0';
}
}
URLエンコード文字列をデコードする関数なんですが、
これがVC2003でうまく動かないんです(VC6ではできたのに)。
原因がわかる人がいらしたら教えてください。
VC2003はほとんど初期設定です。
0066nobodyさん
04/04/14 20:34ID:???006765
04/04/15 18:39ID:???お騒がせスマソ…
0068nobodyさん
04/04/17 18:21ID:???0069nobodyさん
04/04/21 16:53ID:???http://cgi-spec.golux.com/cgi-120-00a.html
章8.2 のLocationに関する項目を読むと、絶対URIがスクリプトによって返されると、
サーバは'302 redirect' HTTP応答メッセージを発生させるだろう、とあります。
しかし、302はMoved Temporarilyで、307 がTemporary Redirectになります。
これは誤植と解してよいのでしょうか?
0071nobodyさん
04/04/21 21:54ID:???了解しました。サンクス。
http://www.itmedia.co.jp/dict/internet/www/server/03011.html
つーか、ドラフトのまんまでなぜ決定しないんでしょうかね。
0072nobodyさん
04/05/01 20:42ID:???0073nobodyさん
04/05/02 15:38ID:???0074nobodyさん
04/05/04 00:34ID:???0075nobodyさん
04/05/05 01:01ID:???0076nobodyさん
04/05/05 03:48ID:???0077nobodyさん
04/05/05 21:54ID:???0078nobodyさん
04/05/06 02:53ID:???0079nobodyさん
04/05/06 07:13ID:???http://acpp.sourceforge.jp/
どうもプリプロセッサっぽい感じなんだが、こういう言語仕様に踏み込むもんより、
便利関数ライブラリの方が喜ばれると思うんだがなぁ。
とは言うものの、今困ってるのはサムネ画像生成だけなんで、他はいらんけど・・・。
関係ないが
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
return 0;
}
↓
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
if('a'<=c)&&(c<='f')) return c-'a'+10;
return 0;
}
EzWeb機が%ffみたいに送ってくるから、後々のためにもこの方が。
>>77
if(atoi(getenv("CONTENT_LENGTH"))>=1024000) return 0;
char *buf = new char[atoi(getenv("CONTENT_LENGTH"))+1];
//あとは好きにしる
delete [] buf;
008265
04/05/06 18:38ID:???あるんだそういうの
サンクス
ちなみに
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
↓
*dst = AtoH(*++src) << 4;
*dst = AtoH(*++src);
dst++;
にしたらうまくいったんすよ
なんかやっぱMSだなと思た
dstの位置変わってないから
*dst = AtoH(*++src) << 4;
の意味がなくなってる気もするんだが。
*dst = AtoH(*++src) << 4;
*++dst = AtoH(*++src);
dst++;
とでもしないと、dstに下位4ビットだけを突っ込んでる気がしてならないんだが。
0084nobodyさん
04/05/06 20:02ID:???だた
0085 ◆Ad8rdfdZgs
04/05/06 21:54ID:mtQhCRigあ、漏れの書いたのが間違ってた・・
こっちのほうがまずいw
納得
0086nobodyさん
04/05/06 23:36ID:???エラートラップ。
>>82
> *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
二箇所の*++srcのどちらが先に処理されるかは未定義。
0087nobodyさん
04/05/07 02:51ID:???>>86も言ってるが、今はコンパイラが働き者だから、1行で済ます必要は無いと思うぜ・・・。
恥を忍んで言うが、漏れが *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src ); こんなの書こうとしたら、
数行になってしまう。でも間違いにくいから良いんだと思ってる。勝手に。
副作用とかいちいち憶えてらんないし・・・マクロ書く時に苦しむのもやだし。
0089nobodyさん
04/05/09 14:01ID:???>なんかやっぱMSだなと思た
自分のバグを他人のせいにするな。
009065
04/05/09 16:10ID:???0091nobodyさん
04/05/23 22:40ID:Mos9rAOMというのは、
たとえば Perl の CGI で
test.cgi?a=5
とすれば、$ENV{'QUERY_STRING'} の中身は "a=5" になるのに、
C で作った CGI (printfするだけのモノ) だと
test.cgi?a=5
としても、main(int argc,char *argv[]) の argc が 1 で引数が受け取れてないのです。
test.cgi?a5
とすれば、argc は 2 になって、argv[1] の中身が "a5" になるのですが。
そういうわけで引数に「=」を使えない理由と対処をキボン願います。
009291
04/05/23 22:43ID:???Apache HTTP Server 2.0.49
を使ってます。Apacheの設定に問題があるのかな…
0093nobodyさん
04/05/23 22:58ID:???Perlの$ENV{QUERY_STRING}に相当するものはstdlib.getenv("QUERY_STRING")なわけだが。
0094nobodyさん
04/05/23 23:31ID:???hoge.cgi?-hoge+true+-fuga+false
などとすれば
./hoge.cgi -hoge true -fuga false
こうなる
あとはgetopt(3)でも使えばオプションの処理ができるかな
まあ一般的ではないな
0095nobodyさん
04/05/24 15:40ID:???Cで作る CGI プログラムは、普通のコンソールアプリと基本的には同じだが、
main関数でもらえる「引数」と、CGI で渡される「引数」は、全くの別物だ。
main関数の「引数」は、コマンドラインで与えられるものだが、CGI の方は
サーバから環境変数を経由して与えられる。なので>>93が言ってる事を試してみそ。
>>93
釣りにしてはあまりにあまりな・・・・なので、さすがに釣りではないと思うよ。
0098nobodyさん
04/05/25 09:45ID:???ってゆうかそのあたりも含めて楽になるperlのCGIモジュールみたいなのとかあるんでしょうか?
0099nobodyさん
04/05/25 13:14ID:???aprとか使えば少しは楽になるかも
http://apr.apache.org/
0100nobodyさん
04/05/25 17:05ID:???POSTの場合は、環境変数 CONTENT_LENGTHに、POSTされた文字列長が入っているので、
そのぶんだけ stdinから読み込む。簡単に書くとこんな感じ。
int i;
char * env_p;
env_p = getenv( "CONTENT_LENGTH" );
if( NULL == env_p ) {
/* 何もないです */
}
else {
for( i = 0 ; i < atoi( env_p ) ; i ++ ) {
/* ここで getchar とかする */
}
}
こういう定型処理をラクにするライブラリとかは、いろいろ出回ってるから探すが吉。
0101nobodyさん
04/05/28 21:45ID:???挑戦してみようと思います。
/*ただスクリプトの時にはあまり気にしなかったメモリ管理とか不安もあります。
何かしら”C/C++ゆえに気をつけるべき事”とかあるんでしょうか?*/
0102nobodyさん
04/05/29 10:51ID:???漏れが言えるのはこれくらい。レベル的にバラバラの事書いててスマソ。
・取得したメモリリソースは必ず解放せよ
・変数の型には気を付けすぎるくらい気を付けよ(ロジック調べても分からんバグの原因になる)
・ポインタは理解して使え
・コンパイルするので、変数名は長くてもいい、分かりやすいものを!
・同じ理由で、コメントもしつこく書け
・同じ理由で、短く書こうとするな(バグの原因になる事がある)
・1つの関数を長くしすぎるな
・==演算子で定数と変数を比較する時は、定数を左辺に書け(間違って=にしてもすぐ分かる)
・プログラムテストは慎重に細心に、完璧を目指せ
0103nobodyさん
04/05/30 01:08ID:???小さいし
0104nobodyさん
04/05/30 05:37ID:???Cなら文字列操作とメモリ管理のライブラリをどこかから調達するか、
自作してから取り掛かった方がいいよ。
バッファオーバーフロー対策が一番面倒だから。
0105nobodyさん
04/05/31 18:03ID:???0106nobodyさん
04/05/31 19:24ID:???ありがとうございます。
C/C++以外でも使えそうなTIPSが多くて参考になります。
慎重さは勿論のこと、ちょっとした工夫も大事と再認識しました。
>>104
こちらもありがとうございます。
まずはそういうライブラリを読むところから始めてみますね。
0107nobodyさん
04/06/01 00:28ID:???0108nobodyさん
04/06/06 21:23ID:NScYEbPc0109nobodyさん
04/06/06 21:48ID:???0110nobodyさん
04/06/07 01:33ID:H9Q5V/FE関数、クラスの単体テストエンジンとかついたようなヤツで。
0111nobodyさん
04/06/11 01:06ID:???0112nobodyさん
04/06/26 15:46ID:???mod_perlにスピードで負ける事もあるし。
mod_cobolとかあるのかしら
0113nobodyさん
04/06/26 15:49ID:???0114nobodyさん
04/06/27 18:25ID:EhMRIfAG探しても探してもでてこないんだが・・・
0115nobodyさん
04/06/27 20:07ID:???0116nobodyさん
04/06/27 20:10ID:EhMRIfAGここはひどいインターネットですね!
0117nobodyさん
04/06/27 20:21ID:???0118nobodyさん
04/06/27 20:25ID:???0119nobodyさん
04/06/27 20:43ID:EhMRIfAG探してもやっぱり見つからんです。
0120nobodyさん
04/06/27 20:56ID:???0121nobodyさん
04/06/27 21:56ID:???>探しても探してもでてこないんだが・・・
http://www.gnu.org/search/fsd-search.py?q=CGI
お好きなのをどうぞ。
0122nobodyさん
04/06/28 16:49ID:Mb32PIG40123nobodyさん
04/06/28 18:59ID:???所詮ラインプログラムだし
0125nobodyさん
04/06/29 15:43ID:???0126nobodyさん
04/06/29 18:42ID:iEl5sUlFこれに英文の問題を入れたい場合、Word.jsはどのようにいじれば?
0127大学の宿題だけど意味不明、おしえてけろ
04/07/02 22:30ID:rGD5/XCW2進数の乗算
シフト演算と加算と減算の繰り返しによって2進数の乗算を行う。
条件 一、乗算と被乗算は符号なしの16ビット整数
二、乗算と被乗算以外の変数は32ビット整数
三、シフトは論理シフト(表記方法:左シフトは<、右シフトは>)
例、 X=X<1 Y=Y>1
参考 一、左シフト⇒nビットシフトは(2のn乗)倍になる
二、右シフト⇒nビットシフトは{1/(2のn乗)}倍になる
一般法則 一、乗数の2の0乗ビットが1の時、被乗数をそのまま加算し、
0の時は何もしない。
二、乗数の2のn乗ビットが1の時、被乗数をnビット左シフト
して加算する。0の時は何もしない。
( 開 始 )
|
X = 被乗数
Y = 乗数
Z = 0 ←←乗算結果
|
0128nobodyさん
04/07/02 22:40ID:???0129大学の宿題だけど意味不明、おしえてけろ
04/07/02 22:45ID:rGD5/XCW図形の右90度回転
配列H[Y:1〜7][X:1〜7]は、図のような図形要素が
格納されてます。これを図2のように右に90度回転
した配列要素を配列I[Y:1〜7][X:1〜7]へ作成する。
図1
X軸
1 2 3 4 5 6 7
1■■■■■■■
2 ■
y 3 ■
軸 4 ■ ■■■
5 ■ ■
6 ■ ■
7■■■■■■■
図2
x軸
1 2 3 4 5 6 7
1■ ■
2■■■■ ■
3■ ■
4■■■■■■■
5■ ■ ■
6■ ■ ■
7■ ■
0131nobodyさん
04/07/03 11:52ID:???if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /gzip/ && $gzip ne ''){
print "Content-type: text/html;charset=Shift_JIS\n";
if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /x-gzip/){
print "Content-encoding: x-gzip\n\n";
}else{
print "Content-encoding: gzip\n\n";
}
open(STDOUT,"| $gzip -1 -c");
}else{
print "Content-type: text/html;charset=Shift_JIS\n\n";
}
これのC版はどうすればいいんですかね・・・?
0132nobodyさん
04/07/03 11:53ID:???■ このスレッドは過去ログ倉庫に格納されています