[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/10 00:23 / Filesize : 116 KB / Number-of Response : 506
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:somebodyさん mailto:sage [03/03/23 13:20 ID:???]
C言語で書かれたCGIってなかなかイイもの見つかりませんよね。

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

それはどうでもイイとしてKENTさんのCGIみたいに高機能で手軽なCGIのC言語版みたいなのがあったらなぁなんて思ったことありませんか?
このスレではそんなCGIについて語って、CでCGIの考えを普及していきたいです。


158 名前:nobodyさん mailto:sage [03/04/12 19:49 ID:???]
>>156
ある程度のソース互換があったのが救いだな。

159 名前:nobodyさん mailto:sage [03/04/12 19:52 ID:???]
>>157
overflow?バッファが?起きないはずだけど。

160 名前:fusianasan mailto:hage [03/04/13 01:17 ID:???]
Python
Ruby
Perl
PHP
C(C++)

をいい順番でならべるとどう?
評価基準は、鯖への負荷/処理速度/CGI作成にどれだけ適しているか

を考慮して・・・。

161 名前:fusianasan mailto:hage [03/04/13 01:22 ID:???]
ちなみにCGI作成に適しているの基準は、

どれだけCGIをつくりやすいかってこと。

Perlならその点では評価がいいと思われる


162 名前:nobodyさん mailto:sage [03/04/13 04:27 ID:???]
>>160
PHP
(Perl)
C++
Ruby
Python
Pascal
C
LISP
BASIC
LOGO

163 名前:nobodyさん mailto:sage [03/04/13 10:54 ID:???]
鯖の負荷、処理速度だけを考えると
Cが最強か。

いや、アセンブラ。。。

164 名前:nobodyさん mailto: [03/04/13 14:10 ID:???]
>>162
LOGOワラタ
C++はそんなに上か?

165 名前:164 mailto: [03/04/13 14:12 ID:???]
あ、評価基準はつくりやすさだけじゃないのね。

166 名前:nobodyさん mailto:sage [03/04/13 14:24 ID:???]
C++は、Perlほどじゃないにせよ、かなり大雑把に
さくさくと書けちゃうよ。



167 名前:Perl、PHP、C、HTMLファイルにして読む [03/04/13 17:46 ID:bgaBPkZL]
2ちゃんねる型でPHPとPERLの速度比較
sugachan.dip.jp/download/bench.png
sugachan.dip.jp/download/read.php

PHPよりPerlの方が速いようですが、
鯖負荷の順序はどうなのだろう?

Perl、PHP、C、HTMLファイルにして読む

168 名前:nobodyさん [03/04/13 17:54 ID:Ok9Y0fz8]
凄いサイト発見です!! f2.aaacafe.ne.jp/~ishigaki/default.html

169 名前:nobodyさん [03/04/13 17:59 ID:0bbeziRr]
yahooo.s2.x-beat.com/linkvp/linkvp.html

170 名前:fusianasan mailto:hage [03/04/13 20:28 ID:???]
C++ってそんなにさくさくかけたのか。

171 名前:nobodyさん mailto:sage [03/04/13 20:31 ID:???]
>>170
Cよりは楽。

172 名前:fusianasan mailto:hage [03/04/13 20:33 ID:???]
ふーん・・・。試してみようかな。

173 名前:nobodyさん mailto:sage [03/04/13 20:37 ID:???]
>>167
そこの人はmod_perl使ってるよ。
普通のPerlじゃだめぽ。
mod_perlならPHPと同等かそれ以上じゃない?
Cが遅いのはサーバサイドじゃないから
C自体が遅いわけじゃない。

174 名前:nobodyさん mailto:sage [03/04/13 20:38 ID:???]
>Cが遅いのはサーバサイドじゃないから

何を訳の分からんことを?

175 名前:nobodyさん mailto:sage [03/04/13 20:40 ID:???]
ちなみにmod_perlが速いっていうのは
普通のPerlのスクリプトは
コンパイル→中間コード→実行
という手順だけど
mod_perlだと
最初の一回だけコンパイル→中間コード→実行で
次からはコンパイルをしないで中間コード→実行
となるんで劇的に速くなる。

PHPはコンパイル→中間コード→実行なんで
多少それよりかは落ちるかも・・・
PHPAとか中間コードを残すのもあるけど
まだ出始めで微妙だね。

176 名前:173,175 mailto:sage [03/04/13 20:42 ID:???]
>>174
mod_perlとかmod_phpとかと比べたらCGIとしては
多少オーバーヘッドが大きいと言いたかっただけなんだが・・・
見当違いだったらスマソ



177 名前:nobodyさん mailto:sage [03/04/13 21:07 ID:???]
>>176
じゃあ、Cでモジュール作るってのが最強だと思うんだが。

178 名前:173,175 mailto:sage [03/04/13 21:13 ID:???]
>>177
多分ね。
でもCGI如きでそこまでするやつは少ないだろ

179 名前:nobodyさん mailto:sage [03/04/13 21:23 ID:???]
>>178
Cでモジュール作るだけでは飽きたらずPerl実行環境にしてしまったmod_perlの作者はアホだと言うことに。

180 名前:nobodyさん mailto:sage [03/04/13 21:41 ID:???]
>>179
焦点が合ってない。


181 名前:nobodyさん mailto:sage [03/04/13 21:42 ID:???]
つーか言語比較はスレ違いだろ。ここはC/C++ってのが前提なんだから。

182 名前:nobodyさん mailto:sage [03/04/13 21:46 ID:???]
昔ゆいちゃっとのC言語版配布されてたよな・・・
今もされてるのだろうか

183 名前:nobodyさん mailto:sage [03/04/13 22:53 ID:???]
>>181
C++はスレ違い

184 名前:nobodyさん mailto:sage [03/04/13 23:02 ID:???]
>>183
さて、可変長文字列の扱いが地獄のように面倒になるわけだが。

185 名前:Perl、PHP、C、HTMLファイルにして読む [03/04/14 00:32 ID:dnrQZih1]
HTMLファイルを読むのと、PerlやCとの比較がないのだが!

186 名前:nobodyさん mailto:age [03/04/14 00:49 ID:???]
いちばんお薦めなのは、機械語でWebサーバと専用CGIをセットで開発する

ことだぜい!

結構速いYO!



187 名前:nobodyさん mailto:hoge [03/04/14 02:07 ID:???]
>>186
それは理想だが、実際に
機械語・アセンブラで本当にCGIを書く気ある?
あるわけ無いよな。

それに一番近いのが、Cで開発するって事だろう。
最初はPerlで書かれていた2ちゃんねるのCGIも、
アクセス増加でサーバ負荷が高くなり、Cで書き直されたらしいし。



188 名前:nobodyさん mailto:sage [03/04/14 06:07 ID:???]
>>187
彼はWebサーバごとスクラッチしろと言っているのですよ。


189 名前:nobodyさん mailto:sage [03/04/14 17:47 ID:???]
>178
モジュールと言わずとも、FastCGIって手もある。
www.fastcgi.com/
いずれにしてもモジュール組み込まなきゃならないから、
root持ってないと辛いけど。
遊びで動かしてる自宅鯖とかなら無問題。
あと、C++で楽しいライブラリ知らない?
一応cgiccてのは見付けたけど、いかにもGNUな田舎臭い
ライブラリなんだよなあ。

190 名前:nobodyさん mailto:sage [03/04/14 20:28 ID:???]
>あと、C++で楽しいライブラリ知らない?

WTLとか。

191 名前:nobodyさん mailto:sage [03/04/14 20:45 ID:???]
C++で楽しいライブラリ作らない?

192 名前:nobodyさん mailto:sage [03/04/14 20:48 ID:???]
>>191
MFCとか。

193 名前:nobodyさん mailto:sage [03/04/15 00:34 ID:???]
結局このスレの住人は、誰一人
C言語でCGIを書いた奴はいないようだな。
脳内プログラミング…

194 名前:nobodyさん [03/04/15 01:48 ID:CDjnnd9Z]
>>193
ん、実際に作って自分のsiteで使ってるよ。
新たにperl覚えるのもメンドイし。
簡単なbbsとアクセスログ付きカウンタだけだけどね。
簡単なライブラリも作ったけど、
さすがに人様にお見せできるレヴェルじゃないので(w

一応Servletもつかえる環境構築しだけど
家かえってまでそんな大掛かりなコーディングしないし。。


195 名前:nobodyさん mailto:sage [03/04/15 02:11 ID:???]
>>193
書いた事はあるけど、共有鯖で使うのはちょと怖い。
安全性を担保できる方法を考えてます。

196 名前:fusianasan mailto:hage [03/04/16 19:33 ID:???]
いまCのデコード作業やってんだけど・・・
日本語処理が難しいね。
バイナリがどうのこうのって、なかなかうまく逝きません。

ヒントを所望したい。



197 名前:nobodyさん mailto:sage [03/04/16 20:53 ID:???]
標準ライブラリがワイド文字ライブラリを用意しているのに・・・

198 名前:nobodyさん mailto:sage [03/04/16 21:27 ID:???]
ロケール指定を忘れるな。

199 名前:194 mailto:sage [03/04/17 00:45 ID:???]
>>196

デコード自体はマルチバイト意識しなくてもいいんやん?
あ、俺が作った時はあくまで個人用途なので
ちゃんと試験したらボロボロかもしれんが(w

文字コード関係は自作せず、nkfのソースをぱくったYO!
どっかのサイトで見本があったので。

200 名前:nobodyさん mailto:sage [03/04/17 05:56 ID:???]
>>197
まともに実装されているとは限りません。
wchar_t == UCS-2でも幸せな部類です。
しかもCGIなので、どのencodingが飛んで来るかも分からない
ので、ワイド文字関係は基本的に使えません。

201 名前:山崎渉 mailto:(^^) [03/04/17 12:00 ID:???]
(^^)

202 名前:fusianasan mailto:hage [03/04/17 18:05 ID:???]
いま次のような手順でやってるんですけどひらがなとかはわりとデコードできるんですけど・・・どこに問題がありますかね?あと今は&で区切る処理が無視してください。
1:GET/POSTの判別をする。/2:クエリーストリングや標準出力をよむ。/3:一文字ずつ次のように処理をする。
4:%が現れたら次の文字とさらに次の文字(それぞれ順にchar型変数A/Bとする。)
5:int jp = 0x10*A + B;
6:jpをchar型配列にぶち込んでいく。string[now] = printf("%c",jp);(nowには配列の現在の番号が入る。)
ご指摘お願いします。

203 名前:fusianasan(202 mailto:hage [03/04/17 18:06 ID:???]
追加事項
{+は空白にする。
{%でも+でもなければそのままchar型配列にぶち込む

204 名前:194 mailto:sage [03/04/17 18:40 ID:???]
>>202

基本は問題ないと思われ。。
パッと見、気になるのは手順の5。
int jp でなく char jp の方が心臓に良いと個人的に思う。
#符号の問題ね。

あとは初歩的な・・・
4の処理が誤ってないこと、
char配列操作時のポインタ操作が「多少複雑」になってると思うので
ケアレスミスが無いことを確認汁。

205 名前:fusianasan mailto:sage [03/04/17 18:43 ID:???]
>>204
大変参考になる、返答ありがとうございました。
またがんばって試行錯誤してみます。
本当に有難うございますぃた。

206 名前:fusianasan mailto:ji [03/04/17 18:47 ID:???]
今思ったのですが>>202
A;Bの処理で
swich(A) {
 case '0':
  A = 0x01;
 case '1':
  A = 0x02;
(中略)
 case 'f':
 case 'F':
  A = 0x0f
}
って漢字に16進にしなくてはいけませんよね?



207 名前:fusianasan mailto:ji [03/04/17 18:49 ID:???]
206です。
%のあとにつづく2文字をA,Bに代入したあとの処理を表しています。
ちょっとミスってるけど(セミコロンぬけ)
その辺は見逃してください。
ちなみにBに関しても同じ処理を行う。

208 名前:194 mailto:sage [03/04/17 18:49 ID:???]
見落としてた・・・

>ひらがなとかはわりとデコードできるんですけど・

デコードできる== 正しい文字で認識出来るってことだよね?
html含め処理内の文字コードの統一は出来てる??


209 名前:nobodyさん mailto:sage [03/04/17 18:50 ID:???]
>>200
何作っているのかしらんが、文字コードの統一処理なんて必要ないだろ。

210 名前:nobodyさん mailto:sage [03/04/17 18:59 ID:???]
判別不能なエンコーディングで送られてくるかもしれない。

211 名前:194 mailto:sage [03/04/17 19:00 ID:???]
>>207

break; も抜けてるが勘弁してやろう(w

その通り、16進だよ。
ちなみに漏れは、大文字のA〜Fを返すブラウザに出会ったことがないので
こんな感じ。
#余りいい見本では無いが・・

char *str;
char w;

if( *str < 0x41){
w = *str - 0x30;
}else{
w = (*str - 0x41) + 10;
}


212 名前:fusianasan mailto:jis [03/04/17 19:15 ID:???]
>>208
すべてシフトJISで送ってくれると思ってしていません。
(そこまで考える余裕がまだないからね・・・。)
HTMLはなるべくshift-jisで出力するようにメタタグに
記している。
>>211
ほんまや。break;が抜けちょる・・・・。

213 名前:nobodyさん mailto:sage [03/04/17 19:28 ID:???]
H&Sから引用。

>int toint(int c)
>{
>if (c >= '0' && c <= '9') return c-'0';
>if (c >= 'A' && c <= 'F') return c-'A'+10;
>if (c >= 'a' && c <= 'f') return c-'a'+10;
>return 0; /* other */
>}

214 名前:nobodyさん mailto:sage [03/04/17 19:50 ID:???]
昔書いたURLエンコードされた文字列をデコードする関数。

#include <stdlib.h>
char *url_decode(char *str)
{
char *p1=str,*p2=str,buf[3]={0};

for(;*p2;p1++){
switch(*p2){
case '%':
strncpy(buf,p2+1,2);
*p1=(char)strtol(buf,NULL,16);
p2+=3;
break;
case '+':
*p1=' ';
break;
default:
*p1=*p2;
p2++;
}
}
*p1='\0';

return str;
}


>>202
> string[now] = printf("%c",jp);
string[now]には1か負の数(おそらく-1)しか入らないけどいいの?

215 名前:nobodyさん mailto:あge [03/04/17 19:56 ID:???]
デコードに文字コードなんか関係あるのか?

216 名前:bloom [03/04/17 19:56 ID:ahUYqmP+]
www2.leverage.jp/start/



217 名前:215 mailto:sage [03/04/17 20:02 ID:???]
書き直そう。

デコードに文字コードが影響するのか?

218 名前:bloom [03/04/17 20:02 ID:VKhj20RH]
www2.leverage.jp/start/

219 名前:fusianasan mailto:jis [03/04/17 22:04 ID:???]
デコードテストをするために
今日ローカル鯖じゃなくてちゃんとしたUnix鯖で試したんすよ・・・。
じゃあローカル鯖でやったときよりイイ結果がでたんすよ。

やっぱりコンパイラによってちがうんですかね?
ローカル鯖ではLSI試食版つかってたんですけどね。
Borland c++だとファイルサイズが巨大になるからあんまり
好きじゃないんだな・・・。

220 名前:nobodyさん mailto:sage [03/04/17 22:29 ID:???]
最適化OFFの予感

221 名前:nobodyさん mailto:sage [03/04/17 22:52 ID:???]
>>220
最適化って速度とサイズでは全然違うと思うんだが。

222 名前:fusianasan mailto:jis [03/04/18 18:47 ID:???]
ようわからんけど、今日ようやくデコードプログラムが完成しました。
ちゃんとデコードできるようになりますた。
わーい!わーい!

223 名前:nobodyさん mailto:sage [03/04/18 18:48 ID:???]
>>222
もう少しCの標準関数について勉強した方がいいと思う。


224 名前:nobodyさん mailto:sage [03/04/18 20:42 ID:???]
>>223
標準関数でURLデコードできる時代なのな?

225 名前:nobodyさん mailto:age [03/04/18 21:02 ID:???]
>>224
> 5:int jp = 0x10*A + B;

この変が阿呆らしいと言っているんだよ。strtolという関数があるだろ。


226 名前:nobodyさん mailto:age [03/04/18 21:06 ID:???]
逆だが、↓これと同じこと。
www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.1.6.html



227 名前:nobodyさん mailto:sage [03/04/18 23:45 ID:???]
226のurl、バッファオーバーフローの危機(ry
は置いといてマジレス・・

「車輪の再発明」だの「標準関数にある」だのってよく言われるけど
効率を追求する業務じゃなきゃ別にいいんじゃん?
確かに無駄な努力かもしれんけど、
初心(初学)者はそれによって大幅に理解が深まると思うし。

その気になれば、ほとんど全部自分で作れるのが
Cの長所でもあり短所でもあると思うよ。

逆に業務なら、『低レベル』まで自分で作れると
いざというとき強かったりする。
特殊な例かもしれんけど、一部組み込み系とか
ほとんど標準関数使えない様な環境もあるし。



自分で書いてて、屁理屈に見えてきた。
逝ってきます・・・

228 名前:nobodyさん mailto:sage [03/04/19 00:24 ID:???]
strtol,ulとか使うと、なんとなく仰々しい感じを受けるが…。
strtolだと、プラス/マイナス符号を突っ込まれても大丈夫?
たとえば、'%-E' とかあった場合。
それほど大きな問題にならないとは思うけど。。

また、URLデコードの後は0x80から0xFFが含まれる場合を考えて、
char型では無くunsigned char型の方がいいと思われ。

229 名前:nobodyさん mailto:sage [03/04/19 00:31 ID:???]
>>228
> たとえば、'%-E' とかあった場合。

そんな決まりにしたがわないデータはどうデコードされても文句は言えない。

230 名前:228 mailto:sage [03/04/19 00:31 ID:???]
strtolのエラートラップもしっかりとね。
変な文字食わせると0が返るから。

231 名前:229 mailto:sage [03/04/19 00:32 ID:???]
だってデコードのしようがないもの。

232 名前:228 mailto:sage [03/04/19 00:36 ID:???]
デコードのしようがなければ、エラーを返すものだと思うが。
変?

# お好きにどうぞ。

233 名前:231 mailto:sage [03/04/19 00:40 ID:???]
>>232
あんたがたまたま割り込む形で書き込んだだけで、別に>>230にレスしたわけじゃない。
>>229に補足しただけ。


234 名前:nobodyさん mailto:sage [03/04/19 06:05 ID:???]
>>232
例外とかが投げれるならより綺麗なんだけどね。

235 名前:fusianasan mailto:jis [03/04/19 15:13 ID:???]
動作すればどうでもいいやろ。

236 名前:nobodyさん mailto:sage [03/04/19 16:21 ID:???]
いい加減Cなんて捨ててC++にしろ。



237 名前:nobodyさん mailto:sage [03/04/19 16:30 ID:???]
Perlで書くときもデコードのエラー処理なんてしないような・・・・

238 名前:nobodyさん mailto:sage [03/04/19 16:32 ID:???]
>>237
フォーマットがおかしいときはそもそもマッチしないからエラーの起こる余地がない。

239 名前:nobodyさん mailto:sage [03/04/19 16:51 ID:???]
>>238
うん。だからエラー処理なんてしないよねと。
ゆえに>>232の言っていることはこれに関してはおかしいかも。

240 名前:nobodyさん mailto:sage [03/04/19 16:52 ID:???]
>>239
Cの場合はいくつかエラーとなる要因はある。バッファオーバーフローとかな。

241 名前:fusianasan mailto:コマン@自慰表明 [03/04/19 21:18 ID:???]
>>236:まだまだCの途中です。byF田K子

242 名前:山崎渉 mailto:(^^)sage [03/04/20 05:58 ID:???]
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

243 名前:fusianasan mailto:コマン [03/04/20 17:37 ID:???]
__↓>>242
                         /    ̄ ̄ー―-_
         ▲               )           /
        /ハハハ\             |\|\|\___イ
.     /      \            | /\  /\lllll|
   /   _   _  \          | /・\ /・\ |
.   |   ⊂⊃ ⊂⊃  |          |   ̄/、  ̄ ̄  )
  (|    ∴  ∪ ∴ |             |    ̄     /
   \      <=>  /           ヽ  <三>  /
    \____/               ヽ    /
          ∧               /| \/
  ,r‐‐‐‐‐‐‐‐‐'´ `゙‐‐‐‐‐‐‐‐‐‐、r‐‐‐‐‐‐'´ `゙‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐、
 |  山崎君、きみはぬるぽしか言えないのかい|  そんなに卑怯者、卑怯者と |
 i  やっぱりきみは卑怯ものさ。      i  言わないでくれよ〜(泣    i

244 名前:  mailto:sage [03/04/21 11:55 ID:???]
つーか、適切なテストケース一覧を準備して自動でテストするプログラム作れよ。

245 名前:nobodyさん [03/04/23 19:47 ID:jAUiG1DX]
>>245

What does it mean?

246 名前:nobodyさん mailto:sage [03/04/23 20:22 ID:???]
>>245
再帰か。渋いな。



247 名前:nobodyさん mailto:sage [03/04/23 21:10 ID:???]
終了条件がないね。スタックオーバーフロウかしら。

248 名前:nobodyさん mailto:sage [03/04/26 01:53 ID:???]
perlばっかやってたからCがわかんねぇだ。
代入ひとつからしてもめんどくさくてしょうがない。

249 名前:nobodyさん mailto: [03/04/26 05:00 ID:???]
>>248
代入って文字列の代入のこと?

250 名前:nobodyさん mailto:sage [03/04/26 08:39 ID:???]
>>248
取りあえず文字列型かクラスのある言語使った方が幸せになれると思うよ。

251 名前:ふしアナ: [03/04/27 21:06 ID:Cn2+e3lF]
前友達にされた質問。
これってなんて読む?
(漏れの場合)
char ちゃー
argv あーぐぶい
printf ぷりんとふ
sprintf すぷりんとふ
hex へっくす
int いんと
getenv げっといーえぬぶい
void ぼいど
buffer ばっはー/ぶっふぁー
malloc まろっく

とりあえず今日はこのへんで・・・・

252 名前:nobodyさん mailto:sage [03/04/27 21:17 ID:???]
>>251
もう流石に飽きたな。読み方ネタ。

253 名前:nobodyさん mailto:sage [03/04/27 21:21 ID:???]
>>252
はげどう。

254 名前:ふしアナ: [03/05/03 23:37 ID:4lYMudid]
Cで作るときとC++で作るときどちらもメリット、デメリットが
あるとおもいますけど、それぞれの美点と欠点をあげてくれませんか?

255 名前:nobodyさん mailto:sage [03/05/03 23:38 ID:???]
>>254
C++:可変長文字列が美しく実装できる。

256 名前:nobodyさん mailto:sage [03/05/03 23:39 ID:???]
つーか標準ライブラリが提供しているじゃねーか。



257 名前:FENT [03/05/06 00:10 ID:mpO79UQ6]
質問!
UNCGIをWINDOWSで実行モジュール".exe"にコンパイルしたことある人
コンパイル方法おしえて。
英語のDocを読むとターボCがなんちゃらでわからん。
できれば、VC++とかでコンパイルしたいのねー。





258 名前:FENT [03/05/06 00:14 ID:mpO79UQ6]
>>254
WINDOWSで動かす場合だけど。
拡張子".cpp"で作成すればWINAPIをガシガシつかったCGIが出来るよ。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<116KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef