C/C++ CGIスレッド ..
[2ch|▼Menu]
2:nobodyさん
04/02/26 09:00 .net
あ、スレッドナンバー入れるの忘れた。part 3かな?

3:パックで前歯折りage!
04/02/26 09:33 .net
>>2
C/C++統合スレだからPart1でいいよ

4:nobodyさん
04/02/26 09:35 .net
Cで書かれたchat
URLリンク(www.asahi-net.or.jp)


5:nobodyさん
04/02/26 10:01 .net
スクリプトを検索

6:nobodyさん
04/02/26 13:43 .net
相変わらず CGIどまりですか?

apache module はやらないんですね…

7:nobodyさん
04/02/26 20:33 .net
次は
C/C++ Webアプリ全般スレッド
かな

8:nobodyさん
04/02/26 20:43 .net
>7
いつになることやら

9:nobodyさん
04/02/27 01:38 qZWWODH+.net
>>8
荒れればあっという間

10:nobodyさん
04/02/27 02:32 .net
#include <cgi>

11:nobodyさん
04/02/27 03:00 .net
#include <2c.h>

12:nobodyさん
04/02/27 10:27 .net
C/C++のネイティブ感がたまらん。

13:nobodyさん
04/02/27 16:32 .net
>>6
そこまで行くとこの板の範疇じゃ無いだろ。

14:nobodyさん
04/02/27 23:40 .net
C++っていいよね。

15:nobodyさん
04/02/27 23:58 .net
前スレからC++がいいと言う人が何人かいますが
そういう人はどんなコンパイラを使っているのでしょうか?

16:nobodyさん
04/02/28 01:47 .net
ふつうにgccじゃないの?

17:nobodyさん
04/02/28 19:52 .net
書くときは VC++ 2003。

18:nobodyさん
04/03/01 00:38 .net
CGI書くのにわざわざVC++使いますか?

19:nobodyさん
04/03/01 10:31 .net
MinGWのGCCは、std::wstring周りがうまくいかない希ガス

20:nobodyさん
04/03/02 18:04 .net
>>13
apache modle で blog とか 掲示板とか をつくったりするなら
web prog じゃないかなって思ったんだけどね

21:nobodyさん
04/03/02 23:32 .net
cのCGI動かす時、apacheの設定どうしてますか?

perlのスクリプトと混在してると
perlに送られてエラー500返されちゃうので困ってます。

22:nobodyさん
04/03/02 23:33 .net
( ゚д゚)ポカーン

23:nobodyさん
04/03/02 23:34 .net
>>21
(゚Д゚)ハァ?

24:nobodyさん
04/03/02 23:47 .net
尋ね方がおかしかったでしょうか。
それとも根本的な勘違いでしょうか。

後者なら出直して参ります。

25:nobodyさん
04/03/03 00:28 .net
スレ汚し申し訳ありません。
”とんでもない勘違い”をしていました。

無事動作致しました。

26:nobodyさん
04/03/09 16:32 .net
CGIに不正入力はつき物だが

その場合戻り値でmainまで報告するか、それともexitを使ってその場で終了か
どっちがいいかの。

27:nobodyさん
04/03/09 18:35 .net
C++なら例外投げるヨロシ

28:nobodyさん
04/03/10 07:03 .net
Cで書いた CGI で画像を表示したいと思ってるんだが、どうもうまく行かない。
鯖は Windows の Apache、C で書いたテキストベースの CGI は問題無く動作してるのだが・・・。

CGI 本体はこんな↓感じ。

infile = fopen( filename, "rb" ); /* もちろんファイルネームは入れてあるよ */
if( NULL != infile ) {
  i = fread( rbuf, 1, SIZE, infile ); /* SIZE は画像ファイルのサイズだよ */
  printf( "Content-Type: image/gif\n\n" );
  setmode( _fileno( stdout ), _O_BINARY ); /* Windows だからこうする(涙) */
  fwrite( rbuf, 1, SIZE, stdout );
  setmode( _fileno( stdout ), _O_TEXT ); /* そして元に戻しておく */
  fclose( infile );
}

で、MIME タイプを書き出す printf だけをやめて、鯖 PC でこの CGI を直に実行して
リダイレクトで画像ファイル作ると、ちゃんと出来てるんだな これが。

呼び出す時は何の変哲も無く img タグによる CGI 呼び出しなんだが、
バッテンしか表示されない・・・。

正直、行き詰まってます。どなたかお助けを・・・。

29:nobodyさん
04/03/10 13:08 .net
>>28
img じゃなくて ダイレクトにそのCGIを呼んだらどうなる?

30:28
04/03/11 09:03 .net
ごめんなさい呼び出す HTMLが間違ってました吊ってきます・・・

あ、ちなみに上記のよーなソースで、ちゃんと出来ましたですよ。これで Cでも画像出すのはオッケー。

31:28
04/03/11 09:05 .net
>>29
えとですね、MIMEタイプで imageにしちゃってるんで、imgタグでないと無理です、たぶん。
吐き出してる内容はバイナリなんで、MIMEタイプを textにするってワケにも行きませんし。

32:nobodyさん
04/03/11 09:46 .net
MIMEタイプで imageにしちゃってるんで、imgタグでないと無理

33:nobodyさん
04/03/11 10:27 .net
ブラウザのアドレス欄にそのCGIのURL入力でも表示できるだろ。

34:nobodyさん
04/03/11 14:15 .net
>>31
試してみた?

>>32
したっかぶりっこ?

MIMEがついてるんだからこそブラウザ側で判断してくれてちゃんと画像として表示されるよん

35:nobodyさん
04/03/11 14:22 .net
したっかぶりっこ?

36:nobodyさん
04/03/11 14:33 .net
つーか、ブラウザで.gifへのリンクが開けないとでも思っているのか、と。
URLリンク(pc2.2ch.net)

>34
>32は晒し上げしているのではないかと。

37:34
04/03/11 16:01 .net
>>36
ああ 本当だ すまそ >>33

38:28
04/03/11 19:49 .net
>>29
あ、ダイレクトに、ってのは、ブラウザからって意味ですか・・・。
すみません、思い切り勘違いしてました。
(imgタグでない、他の方法で HTMLに記述しろ、という意味かと思ってました・・・ formとか)

試してませんが、たぶん出来ると思います。>>33>>34>>36さんの言ってる通りではないかと。

お騒がせしたです・・・。

39:sage
04/03/12 01:21 vGYEPhj3.net
Web製作版から出直しな

40:nobodyさん
04/03/12 01:22 .net
書くとこ間違えた_| ̄|○

41:nobodyさん
04/03/12 02:23 .net
WindowsでLinux用バイナリを吐くことができる
C++コンパイラってありますか?

42:nobodyさん
04/03/12 08:35 .net
>>41
答えにはならないけど、LiveCD使うといいのでは?
漏れはLinuxユーザだけど、FreeBSDのサーバで動かすために
FreeBSDのLiveCDを使ったらうまくいった

43:nobodyさん
04/03/12 11:09 .net
>>42
FreeSBIEとかいうやつ?

44:nobodyさん
04/03/12 11:36 .net
>>43
URLリンク(livecd.sourceforge.net)
URLリンク(www.freesbie.org)
URLリンク(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のバージョンに気をつけて選ぶといいかもしれない

45:nobodyさん
04/03/12 17:02 .net
>>42-44
試してみます。ありがとうございました。

46:nobodyさん
04/03/14 14:00 .net
Lindowsじゃ無理?

47:nobodyさん
04/03/14 14:37 .net
>>46
個々のdistroの詳細は板違いなので
Linux板のdistro比較のスレなどを見たほうがいいかも

とりあえずこのへんをチェック
URLリンク(www.distrowatch.com)
URLリンク(www.distrowatch.com)

48:nobodyさん
04/03/14 22:45 .net
CでCGI書くとき、filelockはどうやってます?

49:nobodyさん
04/03/14 23:13 .net
fcntl

50:nobodyさん
04/03/15 08:03 .net
スレリンク(linux板:221番)
あのキモヲタがゴリゴリCでCGIを書く時のライブラリを作っているらしい。

51:http:// FLA1Aah099.kyt.mesh.ad.jp.2ch.net/
04/03/15 09:04 .net
guest guest/98

52:nobodyさん
04/03/16 00:14 .net
>48
mkdir

53:nobodyさん
04/03/16 13:40 .net
flock()

54:nobodyさん
04/03/16 23:46 .net
fcntl(2)
flock(2)
lockf(3)

55:nobodyさん
04/03/18 02:03 .net
resize.plの C版みたいなの知りませんか?
ここ検索すれとか、何か情報キボン。

いちおうググってみたいけど、ロクなのが見つからない・・・ OTL

56:nobody55
04/03/18 02:04 .net
みたいけど

みたけど

57:nobodyさん
04/03/18 17:25 .net
ロクなのが見つからない

58:nobodyさん
04/03/21 00:25 NzuooVWx.net
いかりや長介さん、亡くなっちゃいましたね。
ご冥福をお祈り申し上げますです。

59:nobodyさん
04/03/21 00:45 .net
それはいいが
なぜこのスレに書き込んだのかが、大きな問題だ。

60:nobodyさん
04/03/21 00:47 h03qa3k8.net
>   【訃報】いかりや長介さん逝去
> すばらしい笑いと、円熟の演技を与えてくれたいかりや長介さ
> んが亡くなりました。
> ご冥福をお祈りします。
>
> なお、現在news系のサーバはアクセス過剰で繋がりにくくなっ
> ています。
> いかりやさんを偲ぶのには以下の板をご利用ください
> URLリンク(live8.2ch.net)
> URLリンク(live10.2ch.net)

61:nobodyさん
04/04/01 03:11 .net
URLリンク(acpp.sourceforge.jp)
こんなの見つけた

62:nobodyさん
04/04/01 22:19 .net
>>61

説明ド下手糞な気がするんだが

63:61
04/04/01 23:23 .net
>>62
俺もそう思った

64:nobodyさん
04/04/12 09:09 /q6VLnQf.net
age

65:nobodyさん
04/04/14 20:29 .net
char AtoH( char c ){

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はほとんど初期設定です。

66:nobodyさん
04/04/14 20:34 .net
( ゚д゚)ポカーン

67:65
04/04/15 18:39 .net
自力解決しますた…
お騒がせスマソ…

68:nobodyさん
04/04/17 18:21 .net
なんて過疎

69:nobodyさん
04/04/21 16:53 .net
CGI/1.2ドラフトを訳していたのですが、質問です。
URLリンク(cgi-spec.golux.com)

章8.2 のLocationに関する項目を読むと、絶対URIがスクリプトによって返されると、
サーバは'302 redirect' HTTP応答メッセージを発生させるだろう、とあります。

しかし、302はMoved Temporarilyで、307 がTemporary Redirectになります。
これは誤植と解してよいのでしょうか?

70:nobodyさん
04/04/21 21:33 .net
>>69
スレ違いな気もするけど…。
307コードがHTTP/1.1以降だからでは。

71:nobodyさん
04/04/21 21:54 .net
ああ、このドラフトはHTTP/1.0策定時点のままということか。
了解しました。サンクス。
URLリンク(www.itmedia.co.jp)

つーか、ドラフトのまんまでなぜ決定しないんでしょうかね。

72:nobodyさん
04/05/01 20:42 .net
M$が不要と言うから

73:nobodyさん
04/05/02 15:38 .net
1月1日はドラフト記念日

74:nobodyさん
04/05/04 00:34 .net
このスレを活気付かせるにはどうしたらいいものか

75:nobodyさん
04/05/05 01:01 .net
>74 が C/C++ による CGI 用のフレームワークを作成してくださるそうです。

76:nobodyさん
04/05/05 03:48 .net
aprを積極的に利用してみるスレにしたら

77:nobodyさん
04/05/05 21:54 .net
巨大なクエリ来た時にどうするのが王道でしょうか

78:nobodyさん
04/05/06 02:53 .net
無視する

79:nobodyさん
04/05/06 07:13 .net
>>61情報thx。

URLリンク(acpp.sourceforge.jp)
どうもプリプロセッサっぽい感じなんだが、こういう言語仕様に踏み込むもんより、
便利関数ライブラリの方が喜ばれると思うんだがなぁ。

とは言うものの、今困ってるのはサムネ画像生成だけなんで、他はいらんけど・・・。

80:nobodyさん
04/05/06 07:24 .net
>>77

>>78が正解でしょ。
より詳しく書くなら、まず「大量とは、どれだけなのか」を規定し、規定以上のは無視。って事で。

81: ◆Ad8rdfdZgs
04/05/06 18:24 .net
>>65

関係ないが
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;

82:65
04/05/06 18:38 .net
>81
あるんだそういうの
サンクス


ちなみに
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );



*dst = AtoH(*++src) << 4;
*dst = AtoH(*++src);
dst++;

にしたらうまくいったんすよ
なんかやっぱMSだなと思た

83: ◆Ad8rdfdZgs
04/05/06 18:59 .net
>>82
dstの位置変わってないから
*dst = AtoH(*++src) << 4;
の意味がなくなってる気もするんだが。

*dst = AtoH(*++src) << 4;
*++dst = AtoH(*++src);
dst++;
とでもしないと、dstに下位4ビットだけを突っ込んでる気がしてならないんだが。

84:nobodyさん
04/05/06 20:02 .net
*dst += AtoH(*++src);
だた


85: ◆Ad8rdfdZgs
04/05/06 21:54 mtQhCRig.net
>>84
あ、漏れの書いたのが間違ってた・・
こっちのほうがまずいw

納得

86:nobodyさん
04/05/06 23:36 .net
>>77
エラートラップ。

>>82
> *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
二箇所の*++srcのどちらが先に処理されるかは未定義。

87:nobodyさん
04/05/07 02:51 .net
>>65>>82

>>86も言ってるが、今はコンパイラが働き者だから、1行で済ます必要は無いと思うぜ・・・。
恥を忍んで言うが、漏れが *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );  こんなの書こうとしたら、
数行になってしまう。でも間違いにくいから良いんだと思ってる。勝手に。

副作用とかいちいち憶えてらんないし・・・マクロ書く時に苦しむのもやだし。

88:nobodyさん
04/05/07 09:40 .net
>>87
いいこといった。

89:nobodyさん
04/05/09 14:01 .net
>65
>なんかやっぱMSだなと思た

自分のバグを他人のせいにするな。


90:65
04/05/09 16:10 .net
ごめn

91:nobodyさん
04/05/23 22:40 Mos9rAOM.net
なんだかどうも、プログラムの引数に「=」の文字を入れると動作がおかしいのです。

というのは、
たとえば 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" になるのですが。

そういうわけで引数に「=」を使えない理由と対処をキボン願います。


92:91
04/05/23 22:43 .net
ちなみに、自宅サーバで
Apache HTTP Server 2.0.49
を使ってます。Apacheの設定に問題があるのかな…


93:nobodyさん
04/05/23 22:58 .net
釣り…か?

Perlの$ENV{QUERY_STRING}に相当するものはstdlib.getenv("QUERY_STRING")なわけだが。

94:nobodyさん
04/05/23 23:31 .net
別にC言後とは関係ないけど引数で処理したかったら

hoge.cgi?-hoge+true+-fuga+false
などとすれば

./hoge.cgi -hoge true -fuga false
こうなる

あとはgetopt(3)でも使えばオプションの処理ができるかな
まあ一般的ではないな

95:nobodyさん
04/05/24 15:40 .net
>>91
Cで作る CGI プログラムは、普通のコンソールアプリと基本的には同じだが、
main関数でもらえる「引数」と、CGI で渡される「引数」は、全くの別物だ。

main関数の「引数」は、コマンドラインで与えられるものだが、CGI の方は
サーバから環境変数を経由して与えられる。なので>>93が言ってる事を試してみそ。

>>93
釣りにしてはあまりにあまりな・・・・なので、さすがに釣りではないと思うよ。

96:91
04/05/24 23:40 .net
>>93-95
なる。基本的なところを忘れてました。環境変数でしたね。
getenvでできましたです。ありがとうございました。


97:nobodyさん
04/05/24 23:58 .net
>>96
(・∀・) オメデトウ!コレカラモガンガッテイコウ!

98:nobodyさん
04/05/25 09:45 .net
POSTの場合は?
ってゆうかそのあたりも含めて楽になるperlのCGIモジュールみたいなのとかあるんでしょうか?


99:nobodyさん
04/05/25 13:14 .net
POSTはstdinから。
aprとか使えば少しは楽になるかも
URLリンク(apr.apache.org)

100:nobodyさん
04/05/25 17:05 .net
GETも POSTも、環境変数渡しという点ではほとんど同じ。POSTの方がちょっぴり手間が多いだけ。

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 とかする */
 }
}

こういう定型処理をラクにするライブラリとかは、いろいろ出回ってるから探すが吉。

101:nobodyさん
04/05/28 21:45 .net
自分もその辺気になりつつも資料見つけられず躊躇してたんですが
挑戦してみようと思います。

/*ただスクリプトの時にはあまり気にしなかったメモリ管理とか不安もあります。
何かしら”C/C++ゆえに気をつけるべき事”とかあるんでしょうか?*/

102:nobodyさん
04/05/29 10:51 .net
C++はあまり詳しくないが、Cについて気を付けるべき事はたくさんありすぎて、とてもここでは書ききれないがな。
漏れが言えるのはこれくらい。レベル的にバラバラの事書いててスマソ。

・取得したメモリリソースは必ず解放せよ
・変数の型には気を付けすぎるくらい気を付けよ(ロジック調べても分からんバグの原因になる)
・ポインタは理解して使え
・コンパイルするので、変数名は長くてもいい、分かりやすいものを!
・同じ理由で、コメントもしつこく書け
・同じ理由で、短く書こうとするな(バグの原因になる事がある)
・1つの関数を長くしすぎるな
・==演算子で定数と変数を比較する時は、定数を左辺に書け(間違って=にしてもすぐ分かる)
・プログラムテストは慎重に細心に、完璧を目指せ


103:nobodyさん
04/05/30 01:08 .net
C++でも入出力系はstdioのほうがやり易いと思う
小さいし

104:nobodyさん
04/05/30 05:37 .net
>>101
Cなら文字列操作とメモリ管理のライブラリをどこかから調達するか、
自作してから取り掛かった方がいいよ。
バッファオーバーフロー対策が一番面倒だから。

105:nobodyさん
04/05/31 18:03 .net
perlとかにあるsplit関数に当たるものがあると便利

106:nobodyさん
04/05/31 19:24 .net
>>102
ありがとうございます。
C/C++以外でも使えそうなTIPSが多くて参考になります。
慎重さは勿論のこと、ちょっとした工夫も大事と再認識しました。
>>104
こちらもありがとうございます。
まずはそういうライブラリを読むところから始めてみますね。

107:nobodyさん
04/06/01 00:28 .net
昔、Lispやっててperlのsplit関数自作したことあったな

108:nobodyさん
04/06/06 21:23 NScYEbPc.net
jcode.plのようなものってありませんか?

109:nobodyさん
04/06/06 21:48 .net
iconv

110:nobodyさん
04/06/07 01:33 H9Q5V/FE.net
C/C++/D用(ってかx86用)のアプリケーションサーバが出たら乗り換えますか?
関数、クラスの単体テストエンジンとかついたようなヤツで。

111:nobodyさん
04/06/11 01:06 .net
スタンドアローンて拡張性無いけど手軽なのよね

112:nobodyさん
04/06/26 15:46 .net
perlやphpに比べて生産性が低くて不利ですな。
mod_perlにスピードで負ける事もあるし。
mod_cobolとかあるのかしら

113:nobodyさん
04/06/26 15:49 .net
( ´_ゝ`)フーン

114:nobodyさん
04/06/27 18:25 EhMRIfAG.net
すまん、CでCGI作るときに便利なライブラリとかってないかな。
探しても探してもでてこないんだが・・・

115:nobodyさん
04/06/27 20:07 .net
( ´,_ゝ`)プッ

116:nobodyさん
04/06/27 20:10 EhMRIfAG.net
こんなに必死に頼んでいるのに教えてくれないなんて、
ここはひどいインターネットですね!

117:nobodyさん
04/06/27 20:21 .net
(・∀・)ニヤニヤ

118:nobodyさん
04/06/27 20:25 .net
2chだからある程度は割り切らないと

119:nobodyさん
04/06/27 20:43 EhMRIfAG.net
// ここはひどい(ry のネタ知らない人がいるっぽ
探してもやっぱり見つからんです。


120:nobodyさん
04/06/27 20:56 .net
いい加減なやつしかいないスレにはいい加減に書き込めばいいんだよ

121:nobodyさん
04/06/27 21:56 .net
>>114
>探しても探してもでてこないんだが・・・

URLリンク(www.gnu.org)
お好きなのをどうぞ。




122:nobodyさん
04/06/28 16:49 Mb32PIG4.net
webminなんかがどう関係あるんだろうと小一時間(ry

123:nobodyさん
04/06/28 18:59 .net
フォームのデコード&検索クラスがあればあとはどうでもいいけどね
所詮ラインプログラムだし

124:nobodyさん
04/06/28 19:14 .net
>>122
gnu.orgの人に聞いてくれたまえ。


125:nobodyさん
04/06/29 15:43 .net
gnu.orgの人も大変だな

126:nobodyさん
04/06/29 18:42 iEl5sUlF.net
URLリンク(www1.harenet.ne.jp)
これに英文の問題を入れたい場合、Word.jsはどのようにいじれば?

127:大学の宿題だけど意味不明、おしえてけろ
04/07/02 22:30 rGD5/XCW.net
下記のフォローチャート教えて!
2進数の乗算
シフト演算と加算と減算の繰り返しによって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    ←←乗算結果
                |

128:nobodyさん
04/07/02 22:40 .net
ローカルルールくらい読んでくれな

129:大学の宿題だけど意味不明、おしえてけろ
04/07/02 22:45 rGD5/XCW.net
下記のフォローチャート教えて!

図形の右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■     ■

130:nobodyさん
04/07/03 00:39 .net
>>129

(Start)
 ↓
[回転処理]
 ↓
(End)


131:nobodyさん
04/07/03 11:52 .net
$gzip = '/bin/gzip/';

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版はどうすればいいんですかね・・・?

132:nobodyさん
04/07/03 11:53 .net
( ゚д゚)ポカーン

133:nobodyさん
04/07/05 15:51 /46odsg/.net
Cで画像のアップロードCGI作ってるんだけど、
データの取得の方法が分からんのよ。

if ( strcmp(method, "POST") == 0 ) {

// コンテンツ長の取得
contentLength = getenv("CONTENT_LENGTH");

// バッファサイズの判定
if( atoi(contentLength) > LINE_BUFFER ) {

// バッファサイズエラー
exit(0);
}


fgets(Data, (int)contentLength, stdin);

}
これじゃDataには入らないの?

134:nobodyさん
04/07/05 16:25 .net
% man 3 fgets

135:nobodyさん
04/07/05 16:27 .net
>>133
>これじゃDataには入らないの?

URLリンク(www2k.biglobe.ne.jp)
参考になるかも。

アップロードの場合、
getenv("CONTENT_TYPE")がapplication/x-www-form-urlencoded
じゃなくて、multipart/form-data; boundary=----------hogehogeohogehoge
ってなってるはずだから読み込んだデータを分離する必要あるんじゃない?

136:nobodyさん
04/07/05 18:14 /46odsg/.net
>multipart/form-data; boundary=----------hogehogeohogehoge
>ってなってるはずだから読み込んだデータを分離する必要あるんじゃない?

色々と試した結果、データ分離前まではできました。
分離させんの大変そうだなぁ。

137:nobodyさん
04/07/05 18:16 .net
( ゚д゚)ポカーン

138:nobodyさん
04/07/05 18:49 .net
>>137

ageてまで何が言いたいのかわからん。
いいあるなら方法教えてよ。

139:nobodyさん
04/07/05 20:15 .net
教えて君ウザイ

140:いいあるなら
04/07/05 21:12 .net
いいあるなら

141:138
04/07/05 21:38 .net
>>139-140
   , -‐−-、  ヽ∧∧∧ //  |
.  /////_ハ ヽ< 釣れた!> ハ
  レ//j け ,fjlリ / ∨∨V ヽ  h. ゚l;
 ハイイト、"ヮノハ     //   |::: j  。
  /⌒ヽヾ'リ、     //     ヾ、≦ '
. {   j`ー' ハ      // ヽ∧∧∧∧∧∧∨/
  k〜'l   レヘ.   ,r'ス < 初めてなのに >
  | ヽ \ ト、 ヽ-kヾソ < 釣れちゃった!>
.  l  \ `ー‐ゝ-〈/´   / ∨∨∨∨∨∨ヽ
  l     `ー-、___ノ
  ハ   ´ ̄` 〈/‐-、

142:nobodyさん
04/07/05 22:36 .net
stdinから丸呑みしてファイルにでも保存してみろ。

143:138
04/07/05 23:42 .net
>>142
またまた釣れた。

144:nobodyさん
04/07/06 08:43 LzoVUw8w.net
CでCGIは既に古典的なんだから
知らない人の手助けでもせんと
このスレの意味ないじゃん

145:nobodyさん
04/07/06 09:27 .net
% man 2 read
% man 3 fread
% man 3 fgets

146:nobodyさん
04/07/06 10:28 .net
ここは、そんな餌で俺がクマーなインターネッツですね

147:nobodyさん
04/07/06 11:39 .net
プログラム板へ書き込んだのですが放置されました。。(涙)
マルチで申し訳ないですが再度書き込まさせていただきます。

この度RedHat7.3(@)からRedHat9(A)へ移行したのですが、
@で問題なく動作していたCGIがAの環境で一部動作しなくなりました。
//環境
@RedHat7.3
gcc-2.96-113
apache-1.3.27-2
ARedHat9
gcc-3.2-2-5
httpd-2.0.40-21.9

原因を調べていくとどうも日付計算部分がエラーを起こしているようです。
一般的な日付計算ですが何が問題なのか検討もつきません。
(ググッたのですが・・わかりませんでした。。gccが原因??)
どなたか教えていただけないでしょうか?よろしくお願いいたします!!
※apache1.3.31でも同様の現象がおきました。。。
/*-----ソース一部抜粋------*/
#include <stdio.h>
#include <time.h>

struct tm*ptr;
time_t lt;
intNowYY, NowMM, NowDD;

lt = time(NULL);
ptr = localtime(&lt);
NowYY = ptr->tm_year + 1900;
NowMM =ptr->tm_mon + 1;
NowDD = ptr->tm_mday;
/*----------------------*/

148:nobodyさん
04/07/06 11:42 .net
機種依存文字使うなヴォケ

149:147
04/07/06 11:50 .net
書き忘れましたが、Cで作っているプログラムです。コンパイル問題なく通ります。
apacheのエラーログを見ると”premature end of script headers”と出ているので
どうもhtmlに出力時にCGIが死んでる見たいです。
同じ現象が出ている人も多いと勝手に思ってるのですが、私だけなんでしょうか??
ググっても perlのことばかりなんで・・・・

150:147
04/07/06 11:53 .net
>>148
localtime(&lt);のことですか?
&を大文字で書かないと2ちゃんに書き込むときに
">"に変換されてしまうんで・・・


151:nobodyさん
04/07/06 12:03 .net
なんだ、ネタだったのか…
釣られちゃったよ orz

152:nobodyさん
04/07/06 12:07 NBQAU1O/.net
CGIの出力でSSIを使いたいのですが
使えます?使ってる人いますか?


153:nobodyさん
04/07/06 12:19 .net
(´-`).。oO(アホか・・・)

154:152
04/07/06 12:23 NBQAU1O/.net
>>153

なんで?なんでアホなの??
サーバーがパースしてくれないから絶対使えないの??

155:nobodyさん
04/07/06 12:25 .net
そんな餌で俺がクマー(AA略

156:152
04/07/06 12:27 NBQAU1O/.net
マジな質問でも釣りとかいわれるスレなんだね・・・

157:nobodyさん
04/07/06 12:29 .net
それ以前にスレ違い

158:152
04/07/06 12:33 NBQAU1O/.net
なんで?CのCGIでSSIを出力したいんだよ?
このスレジャン

159:nobodyさん
04/07/06 12:38 .net
こいつはCのCGIで出力するhtmlについてもここで聞くのだろうな・・・

160:152
04/07/06 13:20 NBQAU1O/.net
>>159

知らないんだろ?w

161:nobodyさん
04/07/06 13:28 .net
釣れますか?

162:152
04/07/06 13:30 NBQAU1O/.net
くだらない釣りすんなよ・・スレ汚しが・・・

163:nobodyさん
04/07/06 13:31 .net
このスレ、なんか臭いな

164:152
04/07/06 13:34 NBQAU1O/.net
お前が臭くしたんだよ・・・

165:147
04/07/06 13:41 .net
>>151さん
ネタじゃないんですよ。。本気で悩んでます。。

>>152さん
SSIを使いたいというのはよくわからんのですが
特定のHTMLの一部分に数値等を表示させたいということでいいんですか?

166:nobodyさん
04/07/06 14:01 .net
localtime(<);

167:152
04/07/06 14:11 NBQAU1O/.net
>>165

<!--#include file="他のファイル.html" -->を使って他のhtml
ファイルを取り込んでブラウザーに出力できないかなって思ったんです。

SSIってhttpdがファイルをパースして結果を置き換えますよね・・・

なんで出力をパースさせればいいのかな??
CGIからの出力をパースさせるのはhttpdの設定(apacheなんでhttpd.conf)??

なんて考えてたんですけど実際はどうすればいいのかわからないので
質問してみたんです・・・・・



168:nobodyさん
04/07/06 14:28 .net
SSIの基本を理解してないならくだ質スレへどうぞ

169:152
04/07/06 14:35 NBQAU1O/.net
>>168

はあ?どこがわかってねえっていうんだよボケ!
つーかどこが理解してないかいえねえだろ?
トリアエズくだらねえツッコミばっか入れてるキモイてめえはこんりんざいだまってろ
アホ。

170:nobodyさん
04/07/06 14:38 .net
どうもならんな・・・
己の無知に気がついていない

171:152
04/07/06 14:45 NBQAU1O/.net
何もいわないで適当に批判すれば頭がよくみられるんだなこのスレでは・・・

172:nobodyさん
04/07/06 14:50 .net
もう回答は得られないのだから好きに吠えていろ池沼

173:nobodyさん
04/07/06 15:00 .net
おまいら、これでも見てモチツケ
URLリンク(www.sweetnote.com)
URLリンク(www.sweetnote.com)

174:152
04/07/06 15:03 NBQAU1O/.net
147みたいなまともな人もいるんだけど、
172みたいなどうしようもない負け犬がわんわん吠えると
とたんに堕スレになっちゃうな。


175:nobodyさん
04/07/06 15:19 .net
>>173
見れないよう

176:147
04/07/06 15:45 .net
>>152
あんまりあつくなっても・・・・
SSIうんぬんではなくて
Cでパースして出力すればできるのでは?

177:黒死犬 ◆EgxBlf8nvc
04/07/06 16:45 .net
AddType

178:fff
04/07/06 16:50 .net
>>SSI
URLリンク(httpd.apache.org)
という感じで、"You can't."だと。しかし、
This is a feature The Apache Group hopes to add in the next major release after 1.3.
で、付加される機能かも知れない。知らないが。

179:nobodyさん
04/07/06 16:56 .net
>>147
とりあえずprintfとかでヘッダーを出力した後にfflushしておけばそのエラーは出ないかも。

180:179
04/07/06 17:08 .net
というか、その前に落ちているのか。
おそらく問題は他にある。

181:黒死犬(魚かも) ◆EgxBlf8nvc
04/07/06 17:18 .net
ヘッダにいらんもん出力してるって分かってんだから
プログラムが出力してる内容を見れば良いだけじゃない・・・

182:nobodyさん
04/07/06 17:19 .net
>>181
ヘッダを出力する前に落ちているだけだろ。馬鹿かお前は。

183:黒死犬(魚かも) ◆EgxBlf8nvc
04/07/06 17:21 .net
いやいや、違いますよ
>>149
を読んでください

184:黒死犬(魚かも) ◆EgxBlf8nvc
04/07/06 17:22 .net
すまそ誤爆った
でしゃばってすまぬ

185:nobodyさん
04/07/06 17:22 .net
落ちてヘッダを出力していないから「premature end of script headers」になるんだよ。


186:nobodyさん
04/07/06 17:32 .net
CGIが出力するhtmlにSSIを書いても動きません。

はい終了。

方法はあるけど152みたいなやつには教えん。

187:nobodyさん
04/07/06 17:40 .net
少なくともapache 2.0.50で動くことは今確認できた
でも完全にスレ違いの話題だな

>>152はこんなところで煽ってる暇があったら自分で調べろよヴォケ

188:147
04/07/06 17:58 .net
179さん、黒死犬(魚かも)さん、187さん

アドバイスありがとうございます。

プログラムの内容は、
@入力フォームのhtmlの数値を取り込み計算
A計算結果画面のhtmlに計算結果数値を埋め込んでいく

という一般的なものなんです。
Time関数を使用している箇所を除くと表示できるのですが。。
187さんの言うとおりapacheの問題かもしれませんね。2.0.50で試してみます。
スレ違いで申し訳ありませんでした。

189:nobodyさん
04/07/06 18:02 .net
>>188

シェル上で擬似的なパラメータを渡してテストとかしないの?
>Time関数を使用している箇所を除くと表示できるのですが。。
そこまでわかっているのなら簡単なサンプルでデバッガのお世話
になるとか?

190:147
04/07/06 18:11 .net
>>189

うっ・・おっしゃるとおりです。。
問題の部分のみで再度チェックいたします。

191:nobodyさん
04/07/06 18:19 .net
>>188
>>187はSSIのことね
CGIが出力したSSIが動くということ

>>147>>189タンの書いた通り
まずコマンドラインから実行できるかどうかチェックすべき

あとは、ヘッダを出力する前に落ちているのであれば
原始的な方法だけど、ヘッダを出力する場所を変えてみるとか
最初にヘッダを出力した場合動くかどうか

192:nobodyさん
04/07/06 18:21 .net
>>188
機種依存文字を使うなと前にも言われただろ

193:nobodyさん
04/07/06 20:57 .net
>>169
こんな暴言吐く人に回答する義理も無いわけで。
漏れはスルーしてたけど、ここの住民さんは意外と優しいのだな・・・。

194:152
04/07/07 08:18 Zb/loxvw.net
>>176

そうですよね・・・SSIにこだわる理由はないですね・・・
冷静に考えたらオーバーヘットもあるしSSIを出力する意味ないですよね。
素直にCでパースします。ありがとうございました。

>>俺様に暴言を吐いた有象無象ども

おめえら使えねえんだよ、アホ。
たいした知識でもねえのに出し惜しみするチンカスは一生すっこんでろボケ。

195:nobodyさん
04/07/07 09:28 .net
なんだ、結局SSIで動かすことができなかったんだな(プ

196:152
04/07/07 10:55 Zb/loxvw.net
>>195

出来たけどお前には教えない(プ

197:nobodyさん
04/07/07 16:01 .net
【厨房のための煽り煽られ講座】

言い返せないけど負けは認めたくない
  → ( ´,_ゝ`)プッ
  → 無知白痴は黙ってろ
  → 知能障害をおこす
  → 出来たけどお前には教えない(プ  ←>>152

198:nobodyさん
04/07/08 02:16 .net
まぁ夏だからしょうがないのか・・・

199:nobodyさん
04/07/08 04:04 .net
暑さはヒトをダメにする

200:nobodyさん
04/07/08 10:26 073/5w7j.net
そもそも今時CでCGIというのが不自然なんだから
変なのが湧いてくるのは仕方がない。

Cの入門者用に掲示板程度のサンプルを提供するのは意味があるかもしれんが
それ以上の高機能なものは大人しくperlかPHPで作ればいいんです。
CでCGIを開発出来ても誰も誉めてくれないし一銭にもならないのではないか?

          ,.. -―-- |
       ,.' ´ ``´  ̄ ``. .|
     ,. '´   ,   、   .|
   /   ,  l  i  ヽ \ .|
   / ./ /,'  !ヽ ヽ  ヽ. ヽ.|
  / / ./ l _⊥ヽ‐ヽ、'T''| |って書き込んだらC信者が何人か釣れるのカナ?
  {{ |  | レ'! ヽ\_\,,-,‐-.|
  l l l  | | |/Tハ    |::f;;}||
   !ヽN |、 | !` l:リ}     ‐'‐'.| 
      `!ヽN ヽ" `ー    .| 
      | | | `i - ..,.. '´''.|
        ! ! l,-┴/ハ   |
       ヽ N,. '´,.=El=、、/|

201:nobodyさん
04/07/08 13:45 .net
【厨房のための煽り煽られ講座】

言い返せないけど負けは認めたくない
  → ( ´,_ゝ`)プッ
  → 無知白痴は黙ってろ
  → 知能障害をおこす
  → 出来たけどお前には教えない(プ  ←>>152
→ 釣りを始める ←>>200(>>152)

202:nobodyさん
04/07/08 19:05 .net
C++っぽく・・・

bool urldecode(std::string &s){ //省略。}
struct form_pair
{
string name;
string value;
};
istream &operator >>(istream &is,form_pair &fp)
{
string s;
getline(is,s,'&');
if(is.fail() || is.bad())
return is;
string::size_type pos = s.find('=');
if(pos == string::npos)
{
fp.name = s;
fp.value = "";
}
else
{
fp.name = s.substr(0,pos);
fp.value = s.substr(pos+1,s.length()-(pos+1));
}
if(!(urldecode(fp.name) && urldecode(fp.value)))
{
is.setstate(ios::failbit);
}
return is;
}
typedef istream_iterator<form_pair> urldecode_iterator;

203:nobodyさん
04/07/08 20:14 .net
( ゚д゚)ポカーン

204:nobodyさん
04/07/08 21:03 .net
このスレもうだめぽ゚・(ノД`)・゚・。

205:nobodyさん
04/07/09 13:27 .net
なんか、もう、ぬるぽだな

206:nobodyさん
04/07/11 02:25 .net
>>205
ガッ

207:名無しさん@そうだ選挙に行こう
04/07/11 17:20 8T5rEfNa.net
URLリンク(puppy.cute.tc)の、
ReportBoardのCGIは何処のCGIですか?
似たCGIでもいいです。
わかる人がいたら教えてください。

208:名無しさん@そうだ選挙に行こう
04/07/11 17:34 .net
>>207
板違い

209:nobodyさん
04/07/18 23:47 .net
保守

210:C言語がイイよね?
04/07/28 23:38 UZklF3eT.net
CでURLエンコードするコードを考えてマス
文字列の中で2バイト文字だけ判別して
判別した文字を16進数にキャストしてやれば
出来ると思うのですが、具体的なコードが浮んできません。
ウマイコードあったら参考にさせてください。

211:nobodyさん
04/07/29 05:58 .net
>>210
ここ↓の
URLリンク(www-cms.phys.s.u-tokyo.ac.jp)
「FORMデータの処理」「漢字コードの処理」を参考にしてまつよ。
他にも検索すれば出てくると思う。

212:GROAD ◆4C1MajRa36
04/07/31 11:59 .net
ぬるぽ

213:nobodyさん
04/08/01 14:53 .net
>>212
ガッ

214:nobodyさん
04/08/04 20:03 .net
C++( string 使いたいだけで )でCGIを組んでいましたが、
エラーログに
malformed header from script. Bad header=\x1f\x8b\b: /home/****/hoge.cgi
とでます。"Content-type: text/html; charset=EUC-JP\n"
を出力する前に何も出力関係の関数は使っていません。
マシン負荷などに関係なくでます。
だいたいは正常に動作していますが、時たま程度のエラーですが気になります。

原因が解る方が居たら、お力を御貸し願いたい。
apache1.3.27、 gcc 2.95.2.1です。

215:nobodyさん
04/08/05 18:01 .net
ヘッダ後の改行は2回だがまさか…違うよなぁ。

216:nobodyさん
04/08/06 00:00 .net
で、当然、"\x1f\x8b"が何なのかはぐぐってみたんだよな?

217:nobodyさん
04/08/08 15:16 .net
>>214 の自己レス

gzipをpopenで出力してた。
mod_gzipにしたら解決しました。

218:nobodyさん
04/08/08 20:39 .net
>>217
解決おめ

219:nobodyさん
04/08/11 23:44 .net
Fast-CGIを利用すると、更に速くなるのかな。

220:nobodyさん
04/08/11 23:57 .net
むしろ使わないとPHPとかmod_perlより遅い。

221:nobodyさん
04/08/12 14:52 PHf7JWmC.net
(・∀・)renice!

222:nobodyさん
04/08/14 15:00 inflZLdK.net
>>220

まじで?なんでえ?

223:nobodyさん
04/08/14 17:15 .net
プロセス起動コスト

224:nobodyさん
04/08/14 21:20 .net
modではないPerlとかRubyよりは早い
コードがへたれだとそれよりも遅い

225:nobodyさん
04/08/14 21:23 .net
( ゚д゚)ポカーン

226:nobodyさん
04/08/14 21:28 .net
言語の違いにおける速さの差は線形だけど、
アルゴリズムの差は簡単に対数以上になっちゃうからね

227:nobodyさん
04/08/14 21:41 .net
回るのは遅いけど何か書くと即効でレスが返ってくるんだよなここ
見てる奴は多いのかな

228:nobodyさん
04/08/14 21:42 .net
粘着がいるだけだろ

229:nobodyさん
04/08/15 11:26 .net
HPでCのCGIを使いたいのですが、
コンパイル時のコマンドは
gcc -o test.cgi test.c
でよいのでしょうか?

230:nobodyさん
04/08/15 11:55 .net
>>229
HP-UXだとccだろ。


231:nobodyさん
04/08/15 12:15 .net
>>229-230
ワラタ

232:229
04/08/15 12:39 .net
HPはホームページの略で使いましたが…紛らわしいですね。
ccは使えないんですが…

233:229
04/08/15 13:24 .net
とりあえず
gcc -o test.cgi test.c
でコンパイルして
テストしてみたのですが、エラーが出てしまいます。

パーミッションは755でcgi-binディレクトリにも入っているけど
エラー500が出てしまいます。

また、ソースも問題ないと思うのですが…

#include <stdio.h>

int main(void)
{
printf("Content-type: text/html\n\n");
printf("Hello");

return 0;
}
原因は何でしょうか?

234:nobodyさん
04/08/15 13:35 .net
( ゚д゚)ポカーン

235:nobodyさん
04/08/15 14:55 .net
エラーメッセージも書いてない香具師に釣られるなよ

236:nobodyさん
04/08/15 14:59 .net
>>235
Internal Server Errorと言う答えになんの意味があるというのだ。

237:nobodyさん
04/08/15 15:00 .net
\n -> \r\n\r\n

238:nobodyさん
04/08/15 15:00 .net
Windowsかよ

239:nobodyさん
04/08/15 15:02 .net
サーバと違うOSでコンパイルしてるんじゃないのか?
テキストモードでうぷしたりしてるんじゃないのか?
sshで接続してスタンドアロンで動くかどうかまず確かめろよ。
あとは考えるのマンドクセ。

240:229
04/08/15 15:04 .net
確かサーバー側はLINUXだったので違うOSですね。


241:nobodyさん
04/08/15 15:10 .net
サーバーでコンパイルするかクロスコンパイルでぐぐってね。
ばいばい。

242:nobodyさん
04/08/15 16:05 .net
>>240
で、コンパイルマシンはHP-UXなのか?

243:229
04/08/15 23:43 .net
コンパイルマシンはWINDOWSです…

244:nobodyさん
04/08/16 00:08 .net
窓のアプリケーションがLinuxで動くわけなかろーがこのバカチンがー

マジレスすると、お前には無理なので諦めろ

245:nobodyさん
04/08/16 00:14 .net
おまいら釣られすぎ

246:nobodyさん
04/08/16 00:18 .net
>>244
Perlと同じ感覚なんじゃないかと

247:229
04/08/16 00:28 .net
もうちょっと勉強してからやります。
Perlと同じような物だと思ってました…

248:nobodyさん
04/08/16 06:26 .net
>>247
>もうちょっと勉強してからやります。
>Perlと同じような物だと思ってました…

プロの釣り師だな


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

511日前に更新/156 KB
担当:undef