トップページ⇒php
529コメント163KB

C言語のCGIを語りつつ普及するスレ

■ このスレッドは過去ログ倉庫に格納されています
0001somebodyさん03/03/23 13:20ID:???
C言語で書かれたCGIってなかなかイイもの見つかりませんよね。

前Cでかかれた掲示板を見かけたんですけど、なんかタグ用の処理が行われていないらしくて、グロ画像やエロ画像なんて
貼りたい放題でしたよ・・。わたしなんて<xmp>タグを貼りかけましたよ・・・

それはどうでもイイとしてKENTさんのCGIみたいに高機能で手軽なCGIのC言語版みたいなのがあったらなぁなんて思ったことありませんか?
このスレではそんなCGIについて語って、CでCGIの考えを普及していきたいです。
0237nobodyさん03/04/19 16:30ID:???
Perlで書くときもデコードのエラー処理なんてしないような・・・・
0238nobodyさん03/04/19 16:32ID:???
>>237
フォーマットがおかしいときはそもそもマッチしないからエラーの起こる余地がない。
0239nobodyさん03/04/19 16:51ID:???
>>238
うん。だからエラー処理なんてしないよねと。
ゆえに>>232の言っていることはこれに関してはおかしいかも。
0240nobodyさん03/04/19 16:52ID:???
>>239
Cの場合はいくつかエラーとなる要因はある。バッファオーバーフローとかな。
0241fusianasan03/04/19 21:18ID:???
>>236:まだまだCの途中です。byF田K子
0242山崎渉03/04/20 05:58ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0243fusianasan03/04/20 17:37ID:???
__↓>>242
                         /    ̄ ̄ー―-_
         ▲               )           /
        /ハハハ\             |\|\|\___イ
.     /      \            | /\  /\lllll|
   /   _   _  \          | /・\ /・\ |
.   |   ⊂⊃ ⊂⊃  |          |   ̄/、  ̄ ̄  )
  (|    ∴  ∪ ∴ |             |    ̄     /
   \      <=>  /           ヽ  <三>  /
    \____/               ヽ    /
          ∧               /| \/
  ,r‐‐‐‐‐‐‐‐‐'´ `゙‐‐‐‐‐‐‐‐‐‐、r‐‐‐‐‐‐'´ `゙‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐、
 |  山崎君、きみはぬるぽしか言えないのかい|  そんなに卑怯者、卑怯者と |
 i  やっぱりきみは卑怯ものさ。      i  言わないでくれよ〜(泣    i
0244 03/04/21 11:55ID:???
つーか、適切なテストケース一覧を準備して自動でテストするプログラム作れよ。
0245nobodyさん03/04/23 19:47ID:jAUiG1DX
>>245

What does it mean?
0246nobodyさん03/04/23 20:22ID:???
>>245
再帰か。渋いな。
0247nobodyさん03/04/23 21:10ID:???
終了条件がないね。スタックオーバーフロウかしら。
0248nobodyさん03/04/26 01:53ID:???
perlばっかやってたからCがわかんねぇだ。
代入ひとつからしてもめんどくさくてしょうがない。
0249nobodyさん03/04/26 05:00ID:???
>>248
代入って文字列の代入のこと?
0250nobodyさん03/04/26 08:39ID:???
>>248
取りあえず文字列型かクラスのある言語使った方が幸せになれると思うよ。
0251ふしアナ:03/04/27 21:06ID:Cn2+e3lF
前友達にされた質問。
これってなんて読む?
(漏れの場合)
char ちゃー
argv あーぐぶい
printf ぷりんとふ
sprintf すぷりんとふ
hex へっくす
int いんと
getenv げっといーえぬぶい
void ぼいど
buffer ばっはー/ぶっふぁー
malloc まろっく

とりあえず今日はこのへんで・・・・
0252nobodyさん03/04/27 21:17ID:???
>>251
もう流石に飽きたな。読み方ネタ。
0253nobodyさん03/04/27 21:21ID:???
>>252
はげどう。
0254ふしアナ:03/05/03 23:37ID:4lYMudid
Cで作るときとC++で作るときどちらもメリット、デメリットが
あるとおもいますけど、それぞれの美点と欠点をあげてくれませんか?
0255nobodyさん03/05/03 23:38ID:???
>>254
C++:可変長文字列が美しく実装できる。
0256nobodyさん03/05/03 23:39ID:???
つーか標準ライブラリが提供しているじゃねーか。
0257FENT03/05/06 00:10ID:mpO79UQ6
質問!
UNCGIをWINDOWSで実行モジュール".exe"にコンパイルしたことある人
コンパイル方法おしえて。
英語のDocを読むとターボCがなんちゃらでわからん。
できれば、VC++とかでコンパイルしたいのねー。



0258FENT03/05/06 00:14ID:mpO79UQ6
>>254
WINDOWSで動かす場合だけど。
拡張子".cpp"で作成すればWINAPIをガシガシつかったCGIが出来るよ。
0259nobodyさん03/05/06 00:21ID:???
(ノ_-;)ハア…
0260nobodyさん03/05/06 00:47ID:???
めまいと頭痛が・・・
0261FENT03/05/06 01:04ID:mpO79UQ6
焼きなおすか・・・
UNCGIに変わるもので、おすすめのものしっているかた
いらしたら教えてください。
0262動画直リン03/05/06 01:10ID:qyy2Fj99
http://homepage.mac.com/hitomi18/
0263nobodyさん03/05/06 01:18ID:???
#define hex2dec(c) (((c) >= 'a' && (c) <= 'f') ? ((c) - 'a' + 10) : ((c) >= 'A' && (c) <= 'F') ? ((c) - 'A' + 10) : ((c) >= '0' && (c) <= '9') ? ((c) - '0') : (c))

char *Decode(char *str)
{
unsigned char *p, *bstr;

if(*str == '\0') return str;
bstr = (unsigned char*)str;
for(p=bstr; *bstr!='\0'; bstr++) {
if(*bstr=='+') {
*p=' ';
p++;
}
else if(*bstr=='%') {
*p = (hex2dec(*(bstr+1)) * 16)+(hex2dec(*(bstr+2)));
p++;
bstr+=2;
}
else {
*p = *bstr;
p++;
}
}
*p='\0';

return str;
}

何年か前に作ったデコード関数。
マクロの括弧が無駄に多い気が・・・
026426303/05/06 01:20ID:???
今改めて見ると、何て無駄の多いコードなんだ・・・
0265nobodyさん03/05/06 01:29ID:???
isxdigitとか知らないのか?
0266_03/05/06 01:35ID:???
 ( ・∀・)/< こんなのみつけたっち♪ 
http://www.japan.pinkserver.com/kensuke/hankaku/hankaku07.html
http://japan.pinkserver.com/kensuke/zenkaku/index.html
http://www.japan.pinkserver.com/kensuke/hankaku/hankaku08.html
http://japan.pinkserver.com/kensuke/hankaku/hankaku10.html
http://www.japan.pinkserver.com/kensuke/hankaku/hankaku07.html
http://japan.pinkserver.com/kensuke/hankaku/hankaku03.html
http://www.japan.pinkserver.com/kensuke/hankaku/hankaku05.html
http://japan.pinkserver.com/kensuke/hankaku/hankaku01.html
http://www.japan.pinkserver.com/kensuke/hankaku/hankaku06.html
http://japan.pinkserver.com/kensuke/hankaku/hankaku04.html
http://www.japan.pinkserver.com/kensuke/hankaku/hankaku09.html
026726103/05/06 02:05ID:mpO79UQ6
>>263
返信ありがとうございます。すみませんでした。
う〜ん
ヘキサのデコードというか、UNCGIを使いたかったのは、
HTTPのリクエストから切分けてデコードした後に、
環境変数にセットしている、仕組みをそのまま使いたいなーって思って
たんですよ。

UNCGIの処理の流れ的には
・環境変数取得
・切離し後デコード
・それぞれ別の環境変数にセット
・URLの引数(ttp://***/uncgi/aaa.exe)のプログラム(aaa.exe)を起動
・起動されたプログラムは、環境変数よりPOST及びGETの
 パラメータを取得

こんな感じだとおもうんですよ。作ればいいんですけど・・・

ただ、コンパイルできたらいいなーと思いまして。
VC++だと、何ヶ所かコンパイルにひっかかってしまうので
私のめんどくさがりやから・・・質問してしまいました。
026826103/05/06 02:08ID:mpO79UQ6
>>267 追加
ただ・・この仕組みをつくるとしたら疑問があるんです。
HTTPのリクエストで起動されたCGIによってセットされる環境変数は、
ブラウザごとに別々の扱い(DOSプロンプトのように)になるのでしょうか?
同時にアクセスがあった場合、同一名称の環境変数は、それぞれブラウザ
ごとに違う値を保持するのかな???
0269nobodyさん03/05/06 03:04ID:CpGJxcjL
自分でデコードしてたけど、画像アップロードとかあるんで
結局cgiccに移行したよ。cgiccおすすめ。
0270bloom03/05/06 03:10ID:qyy2Fj99
http://homepage.mac.com/ayaya16/
0271_03/05/06 03:25ID:???
 ( ・∀・)/< こんなのみつけたっち♪ 
http://www.japan.pinkserver.com/kaorin/moe/jaz04.html
http://japan.pinkserver.com/kaorin/mona/index.html
http://www.japan.pinkserver.com/kaorin/moe/jaz05.html
http://japan.pinkserver.com/kaorin/moe/jaz08.html
http://www.japan.pinkserver.com/kaorin/moe/jaz09.html
http://japan.pinkserver.com/kaorin/moe/jaz02.html
http://www.japan.pinkserver.com/kaorin/moe/jaz06.html
http://japan.pinkserver.com/kaorin/moe/jaz01.html
http://www.japan.pinkserver.com/kaorin/moe/jaz10.html
http://japan.pinkserver.com/kaorin/moe/jaz07.html
http://www.japan.pinkserver.com/kaorin/moe/jaz03.html
0272_03/05/06 04:07ID:???
   川o・-・)ノ <先生!こんなのがありました!
http://www.japan.pinkserver.com/kaorin/moe/jaz03.html
http://japan.pinkserver.com/kaorin/mona/index.html
http://www.japan.pinkserver.com/kaorin/moe/jaz02.html
http://japan.pinkserver.com/kaorin/moe/jaz08.html
http://www.japan.pinkserver.com/kaorin/moe/jaz09.html
http://japan.pinkserver.com/kaorin/moe/jaz05.html
http://www.japan.pinkserver.com/kaorin/moe/jaz06.html
http://japan.pinkserver.com/kaorin/moe/jaz01.html
http://www.japan.pinkserver.com/kaorin/moe/jaz10.html
http://japan.pinkserver.com/kaorin/moe/jaz07.html
http://www.japan.pinkserver.com/kaorin/moe/jaz04.html
0273nobodyさん03/05/06 07:50ID:???
>>267
誰 も お 前 に は 返 信 し て い な い よ
0274nobodyさん03/05/07 00:56ID:ZdGvFTnv
>>273
↑朝早くから
 誰 オ マ イ

0275nobodyさん03/05/08 15:14ID:???
どう考えたってスカラー電磁波って、
ニコラ・テスラのパクりだろ。( ゚Д゚)
http://plaza16.mbn.or.jp/~satchel/
0276nobodyさん03/05/20 01:53ID:???
C++版(for文2回バージョン、入力文字列のチェックなし)

void Http::Decode(std::string* pstrQuery)
{
  std::string::size_type nPos;

  for (nPos = 0; (nPos = pstrQuery->find('+', nPos)) != string::npos; pstrQuery->replace(nPos++, 1, 1, ' '));
  for (nPos = 0; (nPos = pstrQuery->find('%', nPos)) != string::npos; nPos++)) {
    unsigned int nCode;
    if (std::sscanf(pstrQuery->c_str() + nPos + 1, "%02x", &nCode) == 1)
      pstrQuery->replace(nPos, 3, 1, static_cast<char>(nCode));
  }
}
0277山崎渉03/05/22 02:04ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0278山崎渉03/05/28 17:18ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0279山�ア渉03/06/15 18:32ID:VQqVlPF2
構造体がわからないのですが・・・。
0280King.Yamazaki ◆/3cyWCTf.c 03/06/15 18:42ID:VQqVlPF2
Please tell me some FREE servers at which you can use C.
I will show you any of them.

http://fh.aaacafe.ne.jp/

GET! Free Server Space!
0281山崎 渉03/07/15 11:12ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0282山崎 渉03/08/02 02:39ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0283ぼるじょあ ◆ySd1dMH5Gk 03/08/02 05:23ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0284nobodyさん03/08/10 00:34ID:3gdl3sO5
2chって、Cで稼動させるのと、Javaで稼動させるのと、
どっちが高速安定動作するんですか?
0285nobodyさん03/08/10 00:37ID:???
( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
 ( ゚д゚)ポカーン ( ゚д゚)ポカーン
( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
0286_03/08/10 00:40ID:???
http://homepage.mac.com/hiroyuki45/
0287nobodyさん03/08/10 16:43ID:37o8iGE7
Cでファイルロックをしたいのですが窓とunixの両方で動作させるためにはどうすればよいのでしょうか?
普通にflock関数を使うのはまずいですか
0288nobodyさん03/08/10 17:10ID:???
>>287
#ifdef
0289nobodyさん03/08/10 17:22ID:j1wuC9e6
>>287
ム板とマルチ。
0290nobodyさん03/08/10 19:36ID:???
>>289
うるさいヴぉけ

と思ったらあれがレスですか。あなたはもしや照れ屋さんですか?
0291nobodyさん03/08/14 14:08ID:oA+wkOB6
どうしてWeb系のCプログラマーってインデントしないの?
TABの1Byteをケチりたいの?
0292nobodyさん03/08/14 14:11ID:???
>>291
するけど?見た例がたまたまそうだったんじゃないの?
0293nobodyさん03/08/14 14:38ID:???
>>291
2chにコピペされたコードを見た・・・・?
0294山崎 渉03/08/15 22:31ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0295nobodyさん03/08/17 15:25ID:VoWMe2O6
ホシュ
0296あぼーんNGNG
あぼーん
0297______03/08/17 15:32ID:???
  ∋8ノノハ.∩  http://www.yakuyoke.or.jp/
   川o・-・)ノ <先生!こんなのがありました!
http://www.hokekyoji.com/
http://members.tripod.co.jp/hossyoji/index/
http://www.honmonji.or.jp/
http://www.maap.com/tanjoh-ji/
http://www.kuonji.jp/
http://www.butsuzou.com/jiten/sanmen.html
http://www.butsuzou.com/list1/sanmen2.html
http://www.butsuzou.com/list1/sanmen3.html
http://www.butsuzou.com/keitai/sanmen-kz.html
0298nobodyさん03/08/19 17:06ID:???
>>88の本読んだけど……
とりあえず
「固定長」のバッファをなぜかmallocした上にクリアすらせずに使うのと
関数の返り値を片っ端から捨てていくのと
入力データを長さもチェックせずにstrcpyで突っ込むのはやめて欲しい。


まあ、それを鵜呑みにしてコード書く奴も書く奴だけど。
0299nobodyさん03/08/22 01:40ID:???
>>298

元々買う気なくて立ち読みしかしてないのでナンだけど、
どこで固定長のバッファをmalloc()してた?

興味本位で探してみたけどみつけらんなかったYOu
0300nobodyさん03/08/23 01:29ID:???
>>299
スタックを圧迫しないと言うことで再帰とかのときに有利なのかも知れない。
0301nobodyさん03/08/24 04:11ID:???
あとでreallocするつもりなら予め固定長でもmallocする必要があるし。
0302nobodyさん03/08/28 14:55ID:???
Sygwinでロック関数が動きません・・・
0303nobodyさん03/08/31 16:08ID:oQ0ZtH63
read.cgiのC言語バージョン作ったんだけど
配布したらアクセスどんどんくるかな?
って思っているんです。
需要ありかしら?
(今Perlでつくったやつ配ってるんですけどちょくちょく使っている人がいます)
030430303/08/31 16:11ID:oQ0ZtH63
>>298
たしか88投稿したのは、おれだけど、多少上達してから
それは思いました。
(っつうかそいつの本のまねしてやったら友達にセキュリティやべえぞって言われたんですね・・・)
030530303/08/31 16:12ID:oQ0ZtH63
今気づいた。
ここは普及スレだった。。。。。。。。。。
0306nobodyさん04/01/27 13:55ID:???
age
0307 04/01/28 20:44ID:???
てst
0308nobodyさん04/02/02 11:42ID:???
結局開発に時間がかかりすぎるとか
敷居が高いとかだろ
WEBのためにC++覚える馬鹿(暇人)はいないし。
C#が普及すれば少しはCのCGI増えるかな?
0309nobodyさん04/02/02 16:06ID:KHxdJaNy
>>308
ha?
0310nobodyさん04/02/02 16:42ID:???
>>309
omaemona
0311nobodyさん04/02/10 19:56ID:???
M$専用
0312nobodyさん04/02/11 01:13ID:???
>>308
Cで開発しても、そんなに時間はかからない。デバッグにしてもさほどでは
ない。開発に時間がかかるのは言語慣れしてないからだろう(漏れが Perl
でやったら Cの倍以上かかる)。

敷居が高いのは認める。関連書籍は圧倒的に少ないし。コンパイラという時点
で決して低くはない。特に初心者は大変だろう。

Webプログラミングを目的として C++覚える人というのも確かに奇特だが、C++
を覚えていれば他にツブシも効くだろう。決して損な選択ではないと思う。
0313 ◆0UMFbJB2oM 04/02/12 18:21ID:pt0vOHBR
そうだけれども・・・・
0314nobodyさん04/02/17 04:30ID:???
>>303
需要はあるYO!
0315nobodyさん04/02/17 04:40ID:???
>>268
> 同時にアクセスがあった場合、同一名称の環境変数は、それぞれブラウザ
> ごとに違う値を保持するのかな???

POSTなり GETなりのリクエストがあってはじめて CGIが起動されるわけだから、起動されたプロセスで
「俺はどれだ?」なんて事を留意する必要は無い。ただ単一動作をするのみ。

いくつものブラウザからいくつものリクエストをされた場合は、それぞれ個別にプロセスが起動される
だけだから、その時その時の環境変数を読めばよい。HTTPデーモンは、そういう風にしてくれるはずだ。

・・・と、偉そうに書いたが、間違ってたら激怒キボンヌ。
0316nobodyさん04/02/17 13:36ID:???
こーいう話題こそCGIスレ行きだと思うんだけどなー ままならぬものだw

同じCGIプログラムでも、Request毎に違うプロセスが起動されて
そのRequestの発行したブラウザの情報が環境変数に設定れるよん
0317nobodyさん04/02/17 17:47ID:???
こーゆう疑問を解消する事で、Cで CG I やる人が増えれば、スレタイには沿うんでないかと。
0318nobodyさん04/02/19 02:17ID:???
>>317
なるほど。


って 伸びないスレだなw
0319nobodyさん04/02/19 13:48ID:???
まぁ、だんだん暖かくなってきたしな。
0320nobodyさん04/02/19 18:08ID:???
いやぁますますC言語日和で〜。
0321nobodyさん04/02/19 22:47ID:???
Cでapacheモジュールを作る話題はどこに逝ったらいいですか?
0322nobodyさん04/02/19 23:29ID:???
>>321
Linux板かUNIX板
0323nobodyさん04/02/20 00:10ID:???
一番詳しそうな人が見てそうなのはunix板のapacheスレ
0324nobodyさん04/02/20 01:29ID:???
>>322-323
ありが�d

CGIが重い重いと言われてるので、
どうせCならapacheモジュールにしちゃえと思ってて、
WebProgだと思ったけどunix板ですか…

ちょっとこわひ…
0325nobodyさん04/02/20 03:16ID:???
unix板を開いたら
「彼女」「イブ」等のキーワードのスレを探せ。「雑談」でもいいが。
0326nobodyさん04/02/20 06:01ID:???
>>325
重ね重ね産休
でも、聞く前になんとなく自己解決

apacheモジュールは軽すぎますなー
0327nobodyさん04/02/20 09:57ID:???
>>325
ヽ( ・∀・)ノ ウンコー
0328nobodyさん04/02/22 04:18ID:???
おれはCでURIデコードするときは、
%だったら続く2文字をテーブル変換するって方法使ってるよ。
テーブルは上の桁用と下の桁用をそれぞれ作って足し算。
0329nobodyさん04/03/05 04:48ID:???
h o s h u
0330nobodyさん04/03/06 19:57ID:???
7年前に書いたデコードルーティンから抜粋
unsigned char n,h,l,const t[256]={…,0,1,…,8,9,…,10,11,…14,15,…,10,11,…,14,15,…}
if(('%'==*s)&&(-1!=(h=t[*(s+1)]))&&(-1!=(l=t[*(s+2)]))) { *d++=(h<<4)|l; s+=3; } else …
0331nobodyさん04/03/11 00:27ID:???
EXEならではの利点があるはず。
socket使って2ちゃんねるのトップを取得してタグコピーして表示するとか。
この場合とくに意味は無いけど、面白い使い方をしている例希望。
0332nobodyさん04/03/11 00:58ID:???
EXEならではの利点
0333nobodyさん04/03/11 01:02ID:???
まずは、"CGI"って何なのかを理解してくれ
0334nobodyさん04/03/11 01:04ID:???
>>331
ドザ氏ね
0335nobodyさん04/03/11 09:01ID:???
なんだ EXE ならではの利点って。釣りか?
インタプリタみたいな事をやるよりは速いかも、程度しか思いつかないが・・・。

とか言う漏れも C で CGI やってるわけだが。
だって Perl とか PHP で書くと、キレイなソースに出来ないんだもん・・・。<己れのスキル不足棚上げ
0336nobodyさん04/03/11 10:52ID:???
慣れだ、慣れ。
■ このスレッドは過去ログ倉庫に格納されています