- 1 名前:somebodyさん mailto:sage [03/03/23 13:20 ID:???]
- C言語で書かれたCGIってなかなかイイもの見つかりませんよね。
前Cでかかれた掲示板を見かけたんですけど、なんかタグ用の処理が行われていないらしくて、グロ画像やエロ画像なんて 貼りたい放題でしたよ・・。わたしなんて<xmp>タグを貼りかけましたよ・・・ それはどうでもイイとしてKENTさんのCGIみたいに高機能で手軽なCGIのC言語版みたいなのがあったらなぁなんて思ったことありませんか? このスレではそんなCGIについて語って、CでCGIの考えを普及していきたいです。
- 395 名前:nobodyさん mailto:sage [04/09/08 15:14 ID:???]
- www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=shift_jis&q=dyaregexp
この知名度はヤバイ
- 396 名前:nobodyさん mailto:sage [04/09/08 15:18 ID:???]
- www.vector.co.jp/authors
- 397 名前:nobodyさん mailto:sage [04/09/08 23:56 ID:???]
- っていうかC++でCGI作るならこれが基本じゃないの?
www.cgicc.org/
- 398 名前:nobodyさん mailto:sage [04/11/08 18:55:43 ID:???]
- あゃしぃ人を発見
ttp://labo.cherrybooks.net/
- 399 名前:nobodyさん mailto:sage [04/11/09 08:58:35 ID:???]
- 宣伝を発見
- 400 名前:nobodyさん mailto:sage [04/11/13 03:53:32 ID:???]
- 宣伝の発見者を発見
- 401 名前:nobodyさん mailto:sage [04/11/22 14:44:59 ID:???]
- 宣伝の発見者の発見者を発見
- 402 名前:nobodyさん mailto:sage [04/11/22 21:38:13 ID:???]
- >>401
あのね、それ皆、書こうと思って遠慮してたんだけど・・・ お詫びにネタ振れよ。
- 403 名前:401 mailto:sage [04/11/22 23:52:40 ID:???]
- >>402
gomen. ima, server karadakara, nihonngo nyuuryoku dekinai...
- 404 名前:nobodyさん mailto:sage [04/11/23 00:02:35 ID:???]
- >403
仕事しろ!!
- 405 名前:nobodyさん [04/12/14 17:59:04 ID:upKknTNA]
- >>401
宣伝の発見者の発見者の発見者を発見
- 406 名前:402 mailto:sage [04/12/14 23:08:12 ID:???]
- サーバーに日本語入力入れてしまいました。
いいのかな…
- 407 名前:nobodyさん mailto:sage [04/12/15 01:51:06 ID:???]
- いいよ。サーバーにX入れる時代だし
- 408 名前:nobodyさん mailto:sage [04/12/16 23:30:11 ID:???]
- 自宅サーバにX入れてます
Xサーバ
- 409 名前:nobodyさん mailto:sage man [04/12/17 01:56:16 ID:???]
- それよりDistcc入れて分散コンパイルに……(^^;;;
- 410 名前:nobodyさん [04/12/27 15:06:04 ID:2ZZk8VkA]
- WinXPでコンパったCGIがFreeBSDで動きません
- 411 名前:nobodyさん mailto:sage [04/12/27 17:17:19 ID:???]
- つまらんネタだな
- 412 名前:nobodyさん mailto:sage [04/12/29 22:02:06 ID:???]
- >>410
つ[Perl] お前さん、Cはやめておけ
- 413 名前:nobodyさん mailto:sage [04/12/31 11:29:26 ID:???]
- >>412
WINアプリがUNIXで動かないのは知ってるんですけど、なんとかならないですかね… クロスコンパイラは都市伝説、PCはPen200、64MBのノートだからUNIX系OSはボツ…
- 414 名前:nobodyさん mailto:sage [04/12/31 16:55:12 ID:???]
- Pentium200 64MBって、ちょっと前までは「PC-UNIXで再活用」の代表みたいなスペックだけど。
GUIは苦しいかもしれないけどね。
- 415 名前:nobodyさん mailto:sage [04/12/31 17:27:43 ID:???]
- X使わなきゃ全然大丈夫でそ
- 416 名前:nobodyさん mailto:sage [05/01/02 13:12:22 ID:???]
- >クロスコンパイラは都市伝説
藻前はPerlでも使っとけ
- 417 名前:nobodyさん mailto:sage [05/01/02 15:32:49 ID:???]
- ソースありますか?
- 418 名前:nobodyさん mailto:sage [05/01/02 22:40:11 ID:???]
- tinyurl.com/23y5e
- 419 名前:nobodyさん mailto:sage [05/01/02 23:07:18 ID:???]
- cssのクラス名がふざけてる
- 420 名前:nobodyさん mailto:sage [05/01/05 12:39:03 ID:???]
- >>413
cygwin
- 421 名前:nobodyさん mailto: [05/01/20 11:30:37 ID:???]
- Cを昔から使ってたので最近PERLの掲示板なんかを自作しようと
環境は自鯖仕様でWin2K+Apache2+VisualC++7 GUIならではの開発環境でデバッグが簡単になる方法ってあるんですかね? 自分はVC6使ってたのでVC7の.netによる恩恵がよるわかりません;; 実行ファイルをCGIとして動かしてVCのデバッグトレース機能なんてできます? 用は実行ファイルの出力先にttp://hoge.com/abc.exeというのをGUIでデバックとか・・ UNIXは知らんのですがWinsockを利用して細かいことしようとすると 画面出力で print "ENV= なんてしてるもので作業効率最悪。 どっちかとVCスレの質問かもしれませんがすまそ・・ あと上げてすんま孫
- 422 名前:nobodyさん mailto:sage [05/01/20 12:35:15 ID:???]
- C言語ってカックいー? つおい?
おにぎりの具で言うと何?
- 423 名前:nobodyさん mailto:sage [05/01/20 21:03:09 ID:???]
- >>422
カックイーかどうかはしらないけど おにぎりの具で言うとうめぼしにマヨネーズって感じじゃない?
- 424 名前:nobodyさん mailto:sage [05/01/21 01:48:24 ID:???]
- CでCGIはBoF対策とか糞めんどくさそうでアフォっぽいけど、
C++でCGIはアリかもね
- 425 名前:nobodyさん mailto:sage [05/01/29 14:17:48 ID:???]
- BoFの意味が分からない俺は
- 426 名前:nobodyさん mailto:sage [05/01/30 00:03:16 ID:???]
- たぶん、デザインパターンの本のこと
じゃなくて、buffer overflowだと思う。
- 427 名前:nobodyさん mailto:sage [05/01/30 11:45:02 ID:???]
- なるほど。
でも、Cでもバッファオーバーフロー対策なんて面倒という程大層なものじゃないが…
- 428 名前:nobodyさん mailto:sage [05/01/30 18:51:23 ID:???]
- 俺もそう思う。
逆に、「C++だからバッファオーバーフローの心配はあまりない」 等と言う人の作ったものの方が、よっぽど危険だよ。
- 429 名前:nobodyさん mailto:sage [2005/04/03(日) 17:49:44 ID:???]
- このスレのおかげでふんぎりがついてCで画像掲示板作ってみたよ。
やっぱり慣れた言語が一番楽チンだね。組むのもデバッグも。
- 430 名前:nobodyさん mailto:sage [2005/04/03(日) 22:52:40 ID:???]
- うpきぼん
- 431 名前:nobodyさん mailto:sage [2005/10/07(金) 11:12:03 ID:???]
- 鯖の負担だけ考えたらCとPerlどっちが軽いの?
- 432 名前:nobodyさん mailto:sage [2005/10/11(火) 02:40:04 ID:???]
- CでApacheモジュール
- 433 名前:nobodyさん mailto:sage [2005/10/17(月) 16:43:58 ID:???]
- こんなスレあったんだ・・・。
俺はとある企業で5年ほど、CのCGI開発をしていたよ。 某陸√系のサイトはほとんどがCのCGIで動いてるし。 相当無理なことやってるけど、相当無理ができることも事実だったりする。
- 434 名前:nobodyさん mailto:sage [2005/10/25(火) 00:31:01 ID:???]
- 何言語で書こうがCGIである限りはCGIで出来る事しかできない
- 435 名前:nobodyさん mailto:sage [2005/11/03(木) 12:08:29 ID:???]
- ファイルIOを発生させる処理でもperlとかわんないのかな
ディレクトリ一覧をサブディレクトリまで 取得して、htmlタグを付与して出力するとか考えとるんですが。 perlだとおそいorz
- 436 名前:nobodyさん mailto:sage [2005/11/03(木) 14:26:14 ID:???]
- そんなもんページ表示させるたびにやらせたら遅いに決まってる。
キャッシュくらいしろ。
- 437 名前:nobodyさん mailto:sage [2005/11/03(木) 23:01:33 ID:???]
- >>435
- 438 名前:nobodyさん [2006/02/23(木) 13:35:40 ID:oh1e7jqD]
- すさまじく書き込みが少ないスレだなー。
かれこれ10年ぐらいCでWebアプリの開発やってる。 いろんなライブラリを開発してたら、ソースが2MBにもなってしまった。 このライブラリだけでCGIに必要な機能はほぼ提供できるところまで来た。 PHPやPerlと変わらないレベルで開発できる。 このライブラリを公開したら面白いことになりそうだけど、 企業秘密満載だから、さすがに無理か。
- 439 名前:nobodyさん mailto:sage [2006/02/23(木) 15:33:14 ID:???]
- >>438
ここはおまいさんの日記帳じゃないよ。
- 440 名前:nobodyさん mailto:sage [2006/02/25(土) 13:19:21 ID:???]
- >>438
くれ
- 441 名前:nobodyさん [2006/05/06(土) 20:21:57 ID:FWiKF0Gu]
- いいねぇ。
>>企業秘密満載だから、さすがに無理か。 CPANとかある方がCからみたら異質なんだろうな。 一からライブラリ作るのは面倒だからAPRでもつかってみるかな。
- 442 名前:nobodyさん mailto:sage [2006/06/04(日) 14:34:28 ID:???]
- みんなヲレcgiライブラリの再生産遣ってそうだよな。
そろそろ基本的な所だけでも共有しないか?
- 443 名前:nobodyさん mailto:sage [2006/06/04(日) 16:22:13 ID:???]
- それなら、まずは442のライブラリから共有するとしようか。
- 444 名前:nobodyさん mailto:sage [2006/06/07(水) 05:48:07 ID:???]
- 基本的っつーとどのヘン?
昔のヤツをひっくり返して見つかったらアップしてみる。
- 445 名前:nobodyさん mailto:sage [2006/06/07(水) 14:16:56 ID:???]
- 普及が目的なら
基本的なライブラリの共有と並行して、 どうすればC言語でcgiが書けるのかという基本の解説がいるね。 hello worldのC言語cgi版みたいなの。
- 446 名前:nobodyさん mailto:sage [2006/06/08(木) 20:50:36 ID:???]
- printbody("Hello World!");
だけで、 <HTML> <BODY> Hello World! </BODY> </HTML> ぐらいは、生成してくれるとかさ。
- 447 名前:nobodyさん mailto:sage [2006/06/09(金) 10:14:52 ID:???]
- >>446
それ必要か・・・? templateエンジンのが良くね?
- 448 名前:nobodyさん [2006/06/09(金) 16:12:46 ID:mYrnmPP6]
- テンプレートはありませんかねぇ?
- 449 名前:nobodyさん mailto:sage [2006/06/10(土) 08:37:10 ID:???]
- テンプレートエンジンってどこにあるの?
stdio.hには無かった。
- 450 名前:nobodyさん mailto:sage [2006/06/11(日) 02:28:25 ID:???]
- CでMySQLやらPostgreSQLに接続するにはどうしたらいいんだろ?
TCP/IPの通信部分から書かなきゃダメかなぁ?
- 451 名前:nobodyさん mailto:sage [2006/06/11(日) 08:48:30 ID:???]
- >>450
そこだけphpに渡してる(笑
- 452 名前:nobodyさん mailto:sage [2006/06/11(日) 09:10:11 ID:???]
- Cならmysqlにライブラリ付属してますが?
ドキュメントぐらい読んだら?
- 453 名前:nobodyさん mailto:sage [2006/06/11(日) 10:43:01 ID:???]
- DBの方のマニュアルにあったのか!
thx!!
- 454 名前:nobodyさん mailto:sage [2006/06/18(日) 20:19:39 ID:???]
- ふぇどら3でコンパイルしたCGIが
You don't have permission to access /index.cgi on this server. っていわれてうごかないんだ。 httpd.confに Options ExecCGI AddType application/x-httpd-cgi .cgi って記述してるし、パーミッションも755になってるのにどうして?
- 455 名前:nobodyさん mailto:sage [2006/06/19(月) 00:00:15 ID:???]
- >>454
SELinuxとかどうなってる? 使ってないの前提として、パーミッションてどこのパーミッションだ? ディレクトリの方はどうなってる? 所有権は? 迷ったら777試せ
- 456 名前:454 mailto:sage [2006/06/20(火) 11:17:11 ID:???]
- SELinuxも無効にしたんだけどダメだ・・・
Windowsのxampp上では動くのに・・・ 777もやってみたけどダメだった 所有権は777だから別に違っても大丈夫なはず ディレクトリは見てなかったけど同ディレクトリ以下の phpは走るし大丈夫なはずじゃ・・・あ 帰ったら試したいことが出来ました。 まだ解決してないけど>>455さんまりがとう('∀`)
- 457 名前:nobodyさん mailto:sage [2006/08/06(日) 17:59:11 ID:???]
- cgiつーかC言語のウェブアプリケーションって無いよね。
ぐぐったらウェブオブジェクト4.5とか出て来たけど、これはマカ専用?
- 458 名前:nobodyさん mailto:sage [2006/10/20(金) 15:32:14 ID:???]
- >>457
使ってる企業は多いだろうけど、 目的の一つとしてソースをクライアントに見られずに済む というのがあるだろうから、どこも非公開なんだと思う。
- 459 名前:nobodyさん mailto:sage [2006/11/11(土) 15:32:43 ID:???]
- >>457
WebObjects4.5はWinNT系でも動くけど、ObjCはクセがあるから習得には個人差があるかも。
- 460 名前:nobodyさん mailto:sage [2007/04/30(月) 03:27:37 ID:???]
- CGI作っている途中だが、何かと面倒だな。
Cだと たしかに作業量は多いね。 スクリプト系の方がいいのかな。
- 461 名前:nobodyさん [2007/07/23(月) 21:41:06 ID:b9YG4RnE]
- age
最近、Cで書かれた通販システムを見かけたよ。
- 462 名前:nobodyさん mailto:age [2007/07/24(火) 09:29:08 ID:???]
- >>772
$body = preg_replace('/([0-9]+)/', $hoge_array[\\1], $body); echo $body; で「¥」が使えませんってエラーがでるけど、エラーをひょうじしなければ目的の結果は得られる…… どうやってエラーださないようにするか…
- 463 名前:nobodyさん mailto:sage [2007/11/14(水) 03:29:16 ID:???]
- dat落ち防止
- 464 名前:nobodyさん [2008/01/08(火) 20:51:35 ID:JKoPEtVY]
- 保守
- 465 名前:nobodyさん mailto:sage [2008/01/11(金) 00:42:29 ID:???]
- #include <stdio.h>
int main() { printf("Content-Type: text/html\n\n"); printf("<HTML><BODY>\n"); printf("保守\n"); printf("</BODY></HTML>\n"); return 0; }
- 466 名前:nobodyさん mailto:sage [2008/01/28(月) 15:21:41 ID:???]
- ほ
- 467 名前:nobodyさん [2008/03/05(水) 00:20:30 ID:SOAastXQ]
- 今からCでCGI勉強しようと思うけど
無駄?
- 468 名前:nobodyさん mailto:sage [2008/03/05(水) 03:04:37 ID:???]
- >>467
かなり大変だという覚悟があるならどうぞ。 自作ライブラリを既に持ってる人じゃないと、 一般的な用途ではメリットは少ないかも。
- 469 名前:nobodyさん mailto:sage [2008/03/06(木) 01:30:58 ID:???]
- ありがとさんです
大変そうだけど 楽しそうだからやってみようかな しかしCの人は優しい人が多い気がする
- 470 名前:nobodyさん mailto:sage [2008/03/09(日) 17:09:46 ID:???]
- 俺ブログ書くほどボキャブラリー富んでないからCGI無しのサイトなんて
考えられね;
- 471 名前:nobodyさん mailto:sage [2008/06/10(火) 14:33:36 ID:???]
- おはよう。今日からここで自習していい?いいよね。
とりあえず出力なんだけど、printfとかのf系出力は、stdout に出せばうまくいくね。でもwrite(fileno(stdout),...はダメみたいだな。 とりあえず今日まで勉強したまとめ。 標準系 content-typeとかのmime header出力\n\n 本文 return 0; 異常系 printf( "status: 番号\n\n"); 本文 exit(0);
- 472 名前:nobodyさん mailto:sage [2008/06/11(水) 20:03:02 ID:???]
- 続き。
エラーの出し方。 printf( "status: 404....\n\n");
- 473 名前:nobodyさん mailto:sage [2008/06/12(木) 07:23:28 ID:???]
- >>471
じゃー、私も一つ。 セグメンテーション違反などでCGIが落ちて、 どこで落ちてるか分からない時は、 デバッグ用の表示と fflush(stdout); をちょくちょく実行すると良い。
- 474 名前:nobodyさん mailto:sage [2008/06/13(金) 16:10:07 ID:???]
- >>473
なるほどですね。 fflushall()ってもうないんでしたっけ? ・パース文字列の切り分け。これが簡単かも。 first_string = strtok(string,"=&"); second_string = strtok(NULL,"=&"); .... リターンがNULLまで、繰り返しするのが良いかも。 ・デバッグ用マイクロ秒表示 make_datetime_string(date_and_time); gettimeofday(&tv,NULL); snprintf((char*)str, sizeof(replace_date_and_time), "\n%s.%06d[%d] ", date_and_time, (int)tv.tv_usec, getpid() ); 結局mod_xsendfile使っちゃいましたが、sendfile apiって早そうですねー。 これならCGIでもパフォーマンスあがるかも。
- 475 名前:普及された人 [2009/03/18(水) 02:24:13 ID:moAFEnFy]
- 計算量や文字列処理の非常に多いプログラムの速い順(2度目以降のアクセス)
C -> apache module FastCGI + C CGI + C SpeedyCGI + Perl mod_perl FastCGI + Perl CGI + Perl mod_python mod_php FastCGI + Python CGI + Python mod_ruby FastCGI + Ruby CGI + Ruby 特徴として言語自体の速度差が順位を決める
- 476 名前:普及された人 [2009/03/18(水) 02:25:24 ID:moAFEnFy]
- 計算量や文字列処理の割と多いプログラムの速い順(2度目以降のアクセス)
C -> apache module FastCGI + C SpeedyCGI + Perl mod_perl FastCGI + Perl mod_python mod_php mod_ruby FastCGI + Python FastCGI + Ruby CGI + Perl CGI + C CGI + Python CGI + Ruby 特徴として、ノーマルなCGIは極端に遅く、Perlの洗練された完成度の高さが伺える
- 477 名前:普及された人 [2009/03/18(水) 02:25:58 ID:moAFEnFy]
- 計算量や文字列処理の少ないプログラムの速い順(2度目以降のアクセス)
C -> apache module FastCGI + C SpeedyCGI + Perl mod_perl mod_php FastCGI + Perl mod_python mod_ruby FastCGI + Python FastCGI + Ruby CGI + Perl CGI + Python CGI + Ruby CGI + C 特徴として、動作の前段階のメモリ上で動作可能な状態になるまでの速度差(レスポンスの良さ)が順位を決める
- 478 名前:普及された人 [2009/03/18(水) 02:26:35 ID:moAFEnFy]
- 使用メモリの少ない順
C -> apache module FastCGI + C SpeedyCGI + Perl mod_php mod_perl mod_python mod_ruby FastCGI + Perl FastCGI + Python FastCGI + Ruby CGI + Perl CGI + Python CGI + Ruby CGI + C 特徴として、提供方法にかなり影響される
- 479 名前:普及された人 [2009/03/18(水) 02:27:14 ID:moAFEnFy]
- サーバの環境構築の速い順
C -> apache module (何も手間なし) mod_php (apacheに標準で付いていることが多い) CGI + Perl (apacheの設定ファイル変更) CGI + C (apacheの設定ファイル変更) CGI + Python (Linuxインストールで標準で付いていることがある&apache設定) CGI + Ruby (自分でインストール&apache設定) mod_perl (自分でインストール&apache設定&モジュール起動) mod_python (自分でインストール&apache設定&モジュール起動) mod_ruby (自分でインストール&apache設定&モジュール起動) SpeedyCGI + Perl (自分でインストール&apache設定&モジュール起動) FastCGI + Perl (自分でインストール&apache設定&モジュール起動&コード宣言付加) FastCGI + Python (自分でインストール&apache設定&モジュール起動&コード宣言付加) FastCGI + Ruby (自分でインストール&apache設定&モジュール起動&コード宣言付加) FastCGI + C (自分でインストール&apache設定&モジュール起動&コード変更)
- 480 名前:普及された人 [2009/03/18(水) 02:28:00 ID:moAFEnFy]
- プログラムを作る速度の速い順(難易度?)(初めてのプログラミング)
mod_php (何も考えずHTML組み込みからすぐに始められる) mod_ruby (Rubyを知っていれば、すぐに始められる) CGI + Ruby (パーミッションとか知らないといけない) FastCGI + Ruby (宣言付加しないといけない) mod_python (Pythonを知っていれば、すぐに始められる) CGI + Python (パーミッションとか知らないといけない) FastCGI + Python (ド宣言付加しないといけない) CGI + Perl (パーミッションとか知らないといけない) SpeedyCGI + Perl (宣言付加しないといけない) FastCGI + Perl (宣言付加しないといけない) mod_perl (Perlを知っていても制約が多い) CGI + C (面倒) FastCGI + C (逐次動作可能プログラムにしないといけない) C -> apache module (モジュール化の手間がかかる)
- 481 名前:普及された人 [2009/03/18(水) 02:29:05 ID:moAFEnFy]
- module系はApacheに直接組み込むので、レスポンスは良いがセキュリティの観点から考えると極力避けたい。
速度やサーバ負荷の観点から、ノーマルなCGIも極力避けたい。 性能第一、開発効率第二で考えた場合は、 FastCGI + C が良いが、開発効率を考えると SpeedyCGI + Perl も捨てがたい。 開発効率第一、性能第二、セキュリティはあまり考えない場合は、 mod_php もあり。 開発効率も良く、楽しむなら、 FastCGI + Python 、 FastCGI + Ruby で決まり。(私は FastCGI + C で楽しめますが) ということで、 1、性能オタクの人にお勧め FastCGI + C 2、C言語しか知らない人にお勧め FastCGI + C 3、C言語が面倒でなかったり、面倒なことが嫌いではない人にお勧め FastCGI + C 4、C言語の達人にお勧め FastCGI + C 5、セキュリティを気にしながら質の高いサイト構築をしたい人にお勧め FastCGI + C 6、100%完璧なセキュアプログラムを作れる人にお勧め C -> apache module 7、組み込み系好きの人にお勧め C -> apache module 8、チャレンジャーにお勧め C -> apache module なのです。 あ、6〜8はmoduleだからCGIじゃないか。。。 私はURLデコードもエレメント抽出も全て自分でコードを書きました。 一つ一つの動作が理解できるのでC言語でのCGI作りはめちゃめちゃ面白かったです。 皆さん是非CでCGI(と言っても私のお勧めは FastCGI + C ですが)をしていきましょう! なお、上記ランキングは勝手な私見ですので、当てにはなりませんので、ご了承ください。 あ、Java忘れてました。
- 482 名前:nobodyさん mailto:sage [2009/03/18(水) 08:07:29 ID:???]
- 今後マシン性能が向上すればノーマルCGIもありになるとは思うが
- 483 名前:普及された人 [2009/03/18(水) 14:10:55 ID:XMWgki/Q]
- SSDなどストレージの性能が向上して、
メモリと同等レベルの速度がでるようになれば、 ノーマルCGIもありだと思います。 現在でもRAM Disk化すればそれは実現できます。 特にCPU負荷の大きい処理ではノーマルCGIでも C言語の選択は効果的です。 それでも、毎回ストレージにアクセスして、 プログラムを読み込み、プロセスを生成し、 実行後プロセスを破棄するノーマルCGIよりも、 プロセス生成済みの状態で、メモリに常駐して、 逐次再利用可能状態でプロセスの破棄が必要の ないFastCGIの方が相当レスポンスが良いし、 ストレージに全くアクセスせずに動作するし、 プロセス生成や破棄のCPU資源を必要としないので 色々な意味でサーバ負荷も激減するので、 より良い選択肢だと思います。
- 484 名前:普及された人 [2009/03/18(水) 14:11:37 ID:XMWgki/Q]
- ノーマルCGI → FastCGI + C は無料で簡単
(日本のサイトでは情報が全くといっていい ほどないので私は苦労しましたが、手順自体 は簡単です)にできるチューニングですので、 MyServerを持っていて、C言語でCGIを作って いる人はやるべきだと思います。 PerlならFastCGIよりSpeedyCGIの方がより良い 選択肢だと思いますし、激重のRubyの場合は FastCGIは必須と言ってもいいでしょう。 moduleタイプはWebServer(apacheなどの プログラムの方のことです)内部で動作させる ので、より高速ですが、プログラムのバグが WebServer全体に影響しますので、危険度を考え れば、選択肢からはずした方が無難に思えます。 CGIタイプの方が間違いなく絶対に安全です。
- 485 名前:普及された人 [2009/03/18(水) 14:14:04 ID:XMWgki/Q]
- そう考えると、FastCGI + C は現在考え得る
サーバサイドプログラミングの中で最も高速 かつ安全な、まさに頂点に立つ方式だと考えます。 もちろん今の時代でC言語が使えるということは、 バッファオーバーフローの回避やコード部分に おけるアルゴリズムの最適化などができることが 最低限の必要条件だと思いますが。 そうでなければ、高速かつ安全とは言えませんので。
- 486 名前:普及された人 [2009/03/18(水) 14:18:12 ID:XMWgki/Q]
- ということで、皆さん、C言語のCGIをどんどんやって普及させましょう!
- 487 名前:nobodyさん mailto:sage [2009/03/18(水) 20:57:18 ID:???]
- 誰とは言わないがアセンブラで書いてる人もいたな
- 488 名前:nobodyさん mailto:sage [2009/03/20(金) 05:46:26 ID:???]
- CGI + C より CGI + Perl / Python / Ruby の方が
メモリ使用量や実効速度が速いというのは変。 あとプロセスを起動するたびに毎回HDDにアクセスとかありえない。 キャッシュに残ってるよ。 起動したら1行printして終わるだけのプログラムを、 CとPerlとbashスクリプトで作って、それぞれ起動してみたけど、 やはりPerlの方が時間がかかる。 $ time ./test.app real 0m0.001s user 0m0.000s sys 0m0.000s $ time ./test.pl real 0m0.002s user 0m0.000s sys 0m0.001s $ time ./test.sh real 0m0.001s user 0m0.000s sys 0m0.001s
- 489 名前:nobodyさん mailto:sage [2009/03/20(金) 05:50:52 ID:???]
- あと私も自分で一通りのAPI書いたけど、
そのCGIでtimeを測ってみても、↓の通り。 ソースコードで2.2MB、バイナリで350KBとかなり大物だけど、 それでもphpの実行バイナリ3Mとかと比べれば、軽いもんだね。 real 0m0.001s user 0m0.001s sys 0m0.000s
- 490 名前:普及された人 [2009/03/21(土) 12:48:40 ID:yqEMcysT]
- >488さん
>CGI + C より CGI + Perl / Python / Ruby の方がメモリ使用量や実効速度が速いというのは変。 その通りでした。 間違えて記載してしまいました。 実際は少なくとも CGI + Perl よりも全て上にランキングされます。 FastCGI + ? に関しては状況によるかと思いますが。 >あとプロセスを起動するたびに毎回HDDにアクセスとかありえない。 >キャッシュに残ってるよ。 OSやハードディスクの行うキャッシュに関しては、他の要因で追い出されることが考えられますので、無視して記載しました。 それまで入れてしまうと、CGI自体の動作やFastCGI自体の動作やSpeedyCGI自体の動作やmodule型自体の動作の説明ではなくなってしまいますので。 CGI→エグゼキュートやインタプリタ+スクリプトをストレージから読み込み実行 FastCGI→エグゼキュートやインタプリタ+スクリプトをプロセスとしてメモリに常駐させそれを実行 SpeedyCGI→バイトコードをプロセスとしてメモリに常駐させそれを実行 module型→エグゼキュートやインタプリタをWebServerのModuleとして組み込みメモリに常駐させ、スクリプトはストレージから読み込み実行 という風にそれぞれの機能を説明したかったのでそう記載しました。
- 491 名前:nobodyさん mailto:sage [2009/03/21(土) 15:47:08 ID:???]
- >>490
なるほど。 私のCGIもapache moduleかFastCGIにしたいんだけど、 CGI専用にAPI開発したから、メモリ解放が手抜きすぎて無理だw
- 492 名前:普及された人 [2009/03/21(土) 21:30:03 ID:yqEMcysT]
- 相当大きなものなのでしょうか?
でも、それだけの実力者なら、時間は多少かかるものの簡単にできるのではと思います。 私の場合は、最初はプログラムの中でFastCGI仕様にしようとやっていたのですが修正が多すぎたので、main関数自体を別関数に変えてFastCGI仕様にしたらかなり楽に解決できました。 外部変数さえなければ、この技(というほどのものでもないですが)は有効だと思います。 apache moduleとして組み込むのは、一人で開発してますので、チェック機構(自分自身)に信頼がおけないのでやらないことにしました。 C言語で作る場合、FastCGIとmodule型は速度的にそれほど大差がない(処理速度は同じで、結果をWebServerプロセスに渡す渡し方の差しかない)ので、どちらでも良いのでしたらFastCGIを私はお勧めします。 スクリプト言語で組むなら、圧倒的にSpeedyCGIが抜きん出て、FastCGIのスクリプトを常駐させるアドバンテージとmodule型のスレッド通信のアドバンテージが相殺してあまり大差ないようですが。 いずれにしても、C言語でCGIが組めるのは(その根性があることこそが)大きなアドバンテージですので、お互いに頑張って良いものを作って普及させましょう!
- 493 名前:nobodyさん mailto:sage [2009/03/22(日) 04:05:46 ID:???]
- >>492
> 相当大きなものなのでしょうか? そだねー。 フォーム受け取り、XML-RPC、クッキー、 MD5、各種暗号復元化、base64、文字コード変換、絵文字、 いろいろなDBに対応したモデル、それのコントローラ、HTML埋込ビュー、 画像処理、セッション、ユーザ処理、画像認証、各種ユーティリティとかあるよ。 いくつかはUNIXでメジャーなAPIの呼び出しで実現してる。 もう設計からして、メモリ解放を前提としてないから、 もしやるとしたら、参照カウンタ+ガベージコレクションの実装かな。
- 494 名前:普及された人 [2009/03/22(日) 17:50:13 ID:uHOLJ9Dp]
- >>493
素晴らしい財産の数々、驚きました。 確かに、これら全てを改変するというのは重労働ですね。 でも、それ以前にこれらを作ってきたことが、とてつもない重労働です。 私には、高い品質で世に(無償)提供したいものがありますので、いくつかのものは作りましたが、かなり多くのそういった財産を作っていかないといけません。 今まで、492さんがやってこられた重労働です。 それをやることに比べたら、一つ一つのコードのメモリ開放型への変更は、基本的にはオブジェクト指向でないC言語で、これまでやってきた492さんにとっては、克服できるのではないでしょうか。 module型やFastCGI用にするとなると、確かにそれ専用で設計した方が良いものが結構ありますので、この際せっかくですので、一括でドン!ではなく、後世に残る財産と思ってチマチマやってみてはいかがでしょうか? これだけできる人ならきっとすぐにできると思います。 私も始めた当初は、スクリプト言語で同じものを作る100倍以上の時間がかかっていましたが、今では2倍程度の時間しかかかりません。 せっかくのC言語でCGIですので、より高い品質のものを期待しています。 ・・・というか、492さんは全盛期のYahoo!にでも勤めてた(る?)のでしょうか???
- 495 名前:nobodyさん mailto:sage [2009/03/23(月) 02:32:56 ID:???]
- >>494
私もこのAPIをもうちょい作り込んで、オープンソースででも公開したいんですが、 すでにいくつかの大手サイトで使っちゃってるので、 ソース公開してセキュリティホールが見つかったら怖いので、公開に踏み切れないw > ・・・というか、492さんは全盛期のYahoo!にでも勤めてた(る?)のでしょうか??? ずっとフリーで活動してますよ。 でも最近は仕事が激減して、暇を持てあまし中 orz
|

|