[表示 : 全て 最新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の考えを普及していきたいです。


330 名前:nobodyさん mailto:sage [04/03/06 19:57 ID:???]
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 …

331 名前:nobodyさん mailto:sage [04/03/11 00:27 ID:???]
EXEならではの利点があるはず。
socket使って2ちゃんねるのトップを取得してタグコピーして表示するとか。
この場合とくに意味は無いけど、面白い使い方をしている例希望。

332 名前:nobodyさん mailto:age [04/03/11 00:58 ID:???]
EXEならではの利点

333 名前:nobodyさん mailto:sage [04/03/11 01:02 ID:???]
まずは、"CGI"って何なのかを理解してくれ

334 名前:nobodyさん mailto:sage [04/03/11 01:04 ID:???]
>>331
ドザ氏ね

335 名前:nobodyさん mailto:sage [04/03/11 09:01 ID:???]
なんだ EXE ならではの利点って。釣りか?
インタプリタみたいな事をやるよりは速いかも、程度しか思いつかないが・・・。

とか言う漏れも C で CGI やってるわけだが。
だって Perl とか PHP で書くと、キレイなソースに出来ないんだもん・・・。<己れのスキル不足棚上げ

336 名前:nobodyさん mailto:sage [04/03/11 10:52 ID:???]
慣れだ、慣れ。

337 名前:nobodyさん [04/03/19 23:07 ID:wAGafw57]
>>303
ttp://c.toshinari.net/cgi/bbs/mtbbs2/
これだね。

338 名前:nobodyさん mailto:sage [04/04/05 21:18 ID:???]
俺はC++で作ってるが、char *get_value("name");とかchar *get_cookievalue("name");といったのを
ひとまとめにしたクラスを作った。

まだマルチパートのPOSTに対応していない・・・



339 名前:nobodyさん mailto: [04/04/11 13:58 ID:???]
おーい。どこかに簡単なサンプルというかCGIに特化した講座はないかい?
何からはじめたらいいのかわかんないよ。ググリ疲れました・・・。

340 名前:nobodyさん mailto:sage [04/04/11 14:10 ID:???]
"CGI"とは何なのか知っていれば
サンプルも何も無いと思うけど。

341 名前:nobodyさん mailto:sage [04/04/11 14:57 ID:???]
>>339
www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/

342 名前:nobodyさん mailto:sage [04/04/12 05:34 ID:???]
>>341
ありがとう!


343 名前:918 mailto:sage [04/04/26 19:58 ID:???]
>>335
Cならではというよりバイナリならではのほうが大きいのでは?

1、データベースなんかを作ったとき処理が速い。
2、大抵のCGI対応のサーバーなら使える。インタプリンタよりも多く対応(多分)。
3、インタプリンタはクロスサイトスクリプティングの危険があるが、バイナリなのでそれは無いっぽい。

そもそも、CGIの元祖はC言語世代らしい。

344 名前:nobodyさん mailto:sage [04/05/07 18:55 ID:???]
ここの住人て

C/C++ CGIスレッド
pc5.2ch.net/test/read.cgi/php/1077753522/l50

と100%かぶってる気もする


345 名前:nobodyさん mailto:sage [04/05/09 13:54 ID:???]
>338
っていうかcookieは全部js操作でいい

346 名前:nobodyさん mailto:age [04/05/09 17:57 ID:???]
( ´,_ゝ`)プッ

347 名前:nobodyさん mailto:sage [04/05/18 05:37 ID:???]
ところで多少は普及したのだろうか?

348 名前:nobodyさん mailto:sage [04/05/18 21:17 ID:???]
サッパリサッパリ



349 名前:nobodyさん [04/05/25 05:52 ID:8qS/bgdw]
フォームのデータをデコードするところで、
なんで16をかけたり、4ビットシフトしたりするのかが
わからないんです。

あれはいったい何をしてるんでしょう。
ググってもググっても何も出てこないので。。。。


350 名前:nobodyさん mailto:sage [04/05/25 06:22 ID:???]
'%23'を'#'に変換したりとかの話なら、URLエンコード/デコード。

351 名前:nobodyさん mailto:sage [04/05/25 16:56 ID:???]
>>349
ググり方が足りないだけっちょ。

ttp://sometime.minidns.net/~ccgi/decode_encode.html
より引用

> "%xy"という3バイトの文字列を16進数に変換する処理としては、
> 2バイト目を0x10倍(0x10をかけるか、4ビット左シフト)して3バイト
> 目を加える、という処理方法が有名ですが、

352 名前:nobodyさん [04/05/26 01:19 ID:BPDOKhgc]
>>351
サンクスです。
ググり方が足りない。。。。
反省します。。。。。

353 名前:nobodyさん [04/05/30 11:50 ID:AsPEp7PV]
c++でcgi作ってます。コンパイルしてそのままcgiとして動かしていますが、
このようにweb用cgiを作るための便利な定番ライブラリって何かありますか?

354 名前:nobodyさん mailto:sage [04/05/30 13:23 ID:???]
洩れも調べ中
c++ならcgiccってのが上のほうに紹介あった気がする。
mm.apache.or.jp/pipermail/apache00-01/2000-December/002076.html



355 名前:nobodyさん mailto:age [04/05/30 13:41 ID:???]
コンパイルしてからUPしても動かないときがあるよね。
まいっちんぐ

356 名前:nobodyさん mailto:sage [04/05/30 21:39 ID:???]
tazthecat.net/~isaac/cgixx/
cgixx - BSD Licenseだそうだ。これから試してみるべ。

357 名前:nobodyさん mailto:sage [04/05/30 22:13 ID:???]
cygwin->freeBSD用のクロスコンパイラの作り方をまとめました。
aaacafeで使えます。
D言語用に作ったのですが、c,c++も動きます。c,c++だけにしたければオプションでそうできます。
www.wikiroom.com/sakurai/?freebsd%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB
参考にしてください。
どっかデッカイデータ置いていいところあればバイナリでも配布できる気もするけど、
自分はもってないので、がんばってインストールしてみてください。
もうちょっと、手軽にクロスコンパイラが手に入れば、なぁ。
Linux版も似たような感じで作れると思いますがまだやっていません。
では。


358 名前:nobodyさん mailto:sage [04/05/30 23:37 ID:???]
そう、クロスコンパイラをバイナリで配布できればいいんだ。
どうやったら、いいのか考えたら。
1.どっかデッカイデータを入れさせてくれるサイトを探す。Vectorとか。
  問題はバイナリデータをメールで送るんだったような記憶がある。
  規約読めってかんじだな。
2.P2Pで配信しちゃう。問題はちゃんと検索に引っかかってくれるかどうか。
  やったことないのでわからん。
3.ソースフォージみたいなのに登録しておかせてもらう。
  なんか、敷居高そうなのが問題ありかなぁ。

あと、ライセンスとかどうなるんだか、よーわからん。cygwinで作ったクロスコンパイラ
のライセンスはどうしたらいいんだろうって問題もある。
この辺の問題をクリアしてあると、だいぶ普及するんじゃないかなぁ。




359 名前:nobodyさん mailto:sage [04/05/31 04:22 ID:???]
>>357-358
ぐっじょーぶ!!

ソースアップしてコンパイル結果のバイナリ、ダウソできるような
鯖たてたらどうだろ?自分で環境用意できない人には重宝するかも。



360 名前:357 mailto:sage [04/05/31 20:55 ID:???]
>>359
それは危険だと思います。aaacafeはgccをcgiで動かせるそうですが。
危険を無視すれば面白いですよね。会員認証付きで、作ることになりますね。
アクティブXでeclipseをブラウザに取り込んで、cvsに入って、ぽいぽいと。


クロスコンパイラのバイナリ配信を可能にしました。
www.wikiroom.com/sakurai/?freebsd%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9%A5%D0%A5%A4%A5%CA%A5%EA
c,c++,dをfreebsd用にコンパイルできます。
linux用も作ろうと思いますが先人の知恵があるのでこれ理解してからにしようと思っていますが。

インストール手順もずっと楽になりました。
ただ、これで、問題のあるプログラムは作らないでくださいね。

361 名前:nobodyさん mailto:sage [04/05/31 21:54 ID:???]
CでWikiクローン作ってるものだが、思った以上に難しいな。

362 名前:357 mailto:sage [04/06/01 08:59 ID:???]
CでWikiクローンですか、、、。名前は、Cikiですかねぇ。
Dならあるですぞ。Diki。


363 名前:357 mailto:sage [04/06/01 09:01 ID:???]
わぁ、すでにあったぁ。
ciki.nostdal.net/cgi-bin/ciki
C++でできてるみたいですね。


364 名前:360 mailto:sage [04/06/02 09:37 ID:???]
Eclipseうんぬんは、ちょっと妄想入ってますな。
でも、やっぱり危険だと思うし、自分で用意できない。
間違えて、無限ループされても困る。
wikiライクなエディタ付きwebベース開発環境を妄想してます。
能力がついて来てないのですが。
とりあえず、perlでできる事がdでもできてしまう
環境を作ることには意義があると思っています。


365 名前:nobodyさん mailto:sage [04/06/05 01:01 ID:???]
CGIを作るならC++の方が適しているんでしょ?
なんとなくそう思っただけです。


366 名前:360 mailto:sage [04/06/05 17:03 ID:???]
>>365
STLあたり使えば、文字列操作が楽でしょうからねぇ。と、私も思っただけ。


367 名前:nobodyさん mailto:sage [04/06/08 00:25 ID:???]
フォーム入力の処理はヌル終端文字列の方が楽だったよ
データ構造にはstd::list使ったけど

368 名前:nobodyさん [04/06/08 23:58 ID:nLqW4woP]
PHPのソースからbase64encode関数やらsplit関数を切り出して使ってる俺はアホですか?



369 名前:nobodyさん mailto:sage [04/06/09 00:14 ID:???]
普通

370 名前:nobodyさん mailto:sage [04/06/09 11:22 ID:???]
yahooのシステムは主にCを使ってるらしいですね。
なんかメリットあるから使ってるんでしょうかね。

371 名前:nobodyさん mailto:sage [04/06/09 23:29 ID:???]
とりあえずバイナリならソースが漏れないし触れる人間が多いからじゃない?
要件がはっきりしてるからこそ成せる技なんだろうけど。

372 名前:nobodyさん mailto:sage [04/06/10 02:01 ID:???]
>C言語は、データベースを最も高速にアクセスできます
>ash.jp/db/

この言葉を100%信用しても大丈夫なのかな。



373 名前:nobodyさん mailto:sage [04/06/10 14:20 ID:???]
うーむ。ただのCGIでコネクションをプーリングしないのと、Javaでコネクションをプーリングする、、、、。
どちらが速いんでしょうな。と思うD房でした。リンク先も読まずに、適当な発言。

374 名前:nobodyさん mailto:sage [04/06/11 19:53 ID:???]
実際問題、鯖への負荷はどうなの?

375 名前:nobodyさん mailto:sage [04/06/12 00:29 ID:???]
>>372
そこ見てみたけど、言葉使いがモニョモニョしてるな。本人は分かってるんだろうけど、
分かってない人のために書いたら、ちょっと不思議な文章になりました、って感じがする。

Cで高速にアクセス出来るのは確かだが、ヘタレなコードなら遅くなるし、最も高速に
アクセスしたければアセンブラで組むだろう(実用的な意味はほとんど無いが)。

だから、厳密に言えば「最も高速」イコール Cではないのだが、一般的に言えば
「そう言って差し支えない」レベルの話だ、ということだろう。

376 名前:nobodyさん mailto:sage [04/06/12 01:10 ID:???]
現状ではApacheモジュールがWeb至上最速&最低負荷でしょう。
フォーム受け取り系で使ってるが恐ろしく速い。
ブラウザ上の感触が10行くらいのプレーンテキストを読んだ感じに似てる。
おなじ処理をC++/CGIで試したがやはり最初のコストがでかいのでモタつく。

377 名前:nobodyさん mailto:sage [04/07/06 06:41 ID:???]
FastCGIは?

378 名前:nobodyさん [04/08/09 18:38 ID:uDC/dB7t]
保守あげ



379 名前:nobodyさん mailto:age [04/09/07 08:23 ID:???]
要するに、C言語でCGI作ろうとした場合、perlのcgi-lib.pl
(CGI.pm)にあたるものがライブラリで用意されてないのが
痛い。あと、jcode.pl(Jcode.pm)。
定番のcgi.cとかjcode.cてないんでしょうか。

380 名前:nobodyさん mailto:sage [04/09/07 08:31 ID:???]
>>379
>ライブラリで用意されてないのが痛い。

藻前が探索能力がないのが痛い。

CGIのライブラリも日本語変換のライブラリもググれば出てくる。
それにCでCGIを作る様なヤツは、自分専用CGIライブラリくらい作る。


381 名前:nobodyさん mailto:sage [04/09/07 09:01 ID:???]
Cは豊富にあるほうだと思うけどな。
たいていなんでも揃ってるし。
探せないやつが痛いのは間違いない!

382 名前:nobodyさん mailto:sage [04/09/07 09:03 ID:???]
>>380
即レス多謝です。ありますた。orz
cgihtml Documentation(ttp://www.eekim.com/software/cgihtml/cgihtml.html)
Ken Lunde氏jcode.c(ftp://ftp.ora.com/published/oreilly/nutshell/ujip/src/)
(参考: Cgihtmlのsourcesを読む(ttp://www.adminteachers.com/hdezaki/cgi-lab/page21.html))
できるかどうか分からないけど、検索CGI作ってみまつ。


383 名前:nobodyさん mailto:sage [04/09/07 09:06 ID:???]
>>381
ども、結構、あるんですね。
C/C++言語によるCGIプログラミングの設計入門(ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/)
が参考になりそう。よし、やるど。


384 名前:上級者 [04/09/07 14:32 ID:BeqquvBt]
PHP言語を使って。
ブラウザでLINUXPASSWORDを変えたいのですが
どうしたらいいのでしょうか?

LINKX シャドーパスワードなどあって
複雑でわかりません・・・

どうか教えてください
お願いします

385 名前:nobodyさん mailto:sage [04/09/07 14:46 ID:???]
>>384 スレタイ読み直せ


釣られた?

386 名前:nobodyさん mailto:sage [04/09/07 15:54 ID:???]
>>385
彼はプロです。

387 名前:nobodyさん mailto:sage [04/09/07 16:10 ID:???]
>>384
webminでhttps://localhost:10000/にアクセス。
以上。

388 名前:nobodyさん mailto:sage [04/09/07 16:29 ID:???]
>>384

さすがは上級者だ。
しかし本当のプロならもっと獲物のたくさんいる板で釣る。



389 名前:nobodyさん mailto:sage [04/09/07 16:34 ID:???]
CではPerl見たいな文字列操作が面倒すぎだな。
C++になるとまだマシだけど。C++用の便利なライブラリって知らない?
正規表現とかあるんだろ

390 名前:nobodyさん mailto:sage [04/09/08 00:54 ID:???]
>>389
面倒なら自作すればいいじゃなーい。

391 名前:nobodyさん mailto:sage [04/09/08 04:11 ID:???]
>>389
boost知らないの?

392 名前:nobodyさん mailto:sage [04/09/08 09:12 ID:???]
>>389
dyaregexp.hはboostより軽いちゅうわな。
ttp://hp.vector.co.jp/authors/VA028375/junkbox/dyaregexp.html

393 名前:nobodyさん mailto:sage [04/09/08 10:37 ID:???]
入力はUTF-8のみ有効、それ以外は無視。

394 名前:nobodyさん mailto:sage [04/09/08 12:24 ID:???]
は?

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

496 名前:nobodyさん mailto:sage [2009/03/23(月) 17:53:50 ID:???]
CGIをC言語で書いているので、FastCGI + C の組み合わせにも興味あるけど、いまいち仕組みが
理解できなくて移行をためらっているので、もし良ければ質問に答えてもらえるとありがたいです。

CGIをFastCGIにすると、プロセスがメモリに常駐してFCGI_Acceptのループでリクエスト待ちになる
みたいだけど、このとき複数のリクエストが同時に来たらどう対応されるの?

1. 一つのFastCGIのプロセスで順番に処理される
2. FastCGIのプロセスが新たに立ち上げられて、並行して処理される

"1" ならアップローダーみたいな処理に時間のかかるものにはFastCGIは向かないって認識でいいのかな?
(そもそも処理に時間がかかるなら起動コストの影響は少ないからノーマルCGIでいいのだろうけど)

"2" ならせっかく常駐するのだから、データの内容をメモリにキャッシュして高速化しようとかすると、
複数立ち上げられたときにメモリを大量に消費しちゃうのでやらないほうがいいのかな?

試してみればいいのだろうけど、FastCGIに興味はあるけど今のところはC言語CGIだけでもCPU負荷で
困ることはなかったので、環境構築するところまでは踏み切れずにいました(^^;

497 名前:nobodyさん mailto:sage [2009/03/25(水) 15:31:05 ID:???]
fastcgi は、基本的にはリクエストが来たら余っているプロセスがあればそれを使い、
なければ立ち上げるってだけ。

プロセスの生死自体は親が握っていて、同じインスタンスが同時に動くことがある
ってのを覚えておけば、データをメモリにおいて使いまわすことは可能。


っていうかLinuxとかのOS標準のdevパッケージを使うなら、Hello, worldなcgi自体は
環境構築含めて15分もあれば出来るので、めんどくさがらず試せばよろしい。


498 名前:普及された人 [2009/03/26(木) 22:41:51 ID:4YbFu+ij]
>>495
これだけの実力者が暇を持て余しているとは、世の中狂っています。
これだけの実力者なら凡人がRubyで3000ステップの素晴らしいプログラムを作る時間で、10000ステップの同等の機能の素晴らしいプログラムを作るでしょうに。
早く、プログラマのフリーエージェント的な制度が確率すると良いと思います。
力のある人が、それなりの報酬を得られることは必要です。
それがなければ、努力もせずダラダラとIT業界に執着する人が増えるばかりです。
オープンソース化できるのなら是非してもらいたいです!
それこそC言語でCGIの普及になります。
> ソース公開してセキュリティホールが見つかったら怖いので、公開に踏み切れないw
だからこそオープンソースで良いのではないでしょうか?
一人の力には限界がある。
だからこそ、みんなの目で見てもし穴があるのなら、みんなで埋めていけば良いのだと思います。
完璧なものを公開して、威張るためのものがオープンソースではないと思います。



499 名前:普及された人 [2009/03/26(木) 22:43:44 ID:4YbFu+ij]
>>496
私が自分自身で言っていることと相反するようですが、495さんもおっしゃってたように、実動作では通常のCGIでも、キャッシュ化されますのでかなり高速です。
C言語の場合、処理自体が早いですから。
理論的に考えるとかなりの差ですが、実動作で考えると多くの場合FastCGIと通常のCGIの差は、「プロセスの生成」と「プロセスの廃棄」の時間になるかと思われます。
それと、昨日事情があって、Rubyの全コード見てみましたが、、、
素晴らしいプログラムで、感想は色々ありますが、とにかく長いですねぇ。。。
C言語のソースだけで、30ファイルくらいありますから、普通に流しで見るだけで4時間くらいかかってしまいました。
あのプログラムがインタプリタとして、スクリプトを読み込み処理することを考えると、遅いのが良く理解できます。
どれだけでかいWebアプリケーションをC言語で作ったとしても、あれほどでかくはなり難いので、間違いなくC言語で作ったWebアプリケーションは高速でメモリも食いません。
そう考えると、C言語のCGIだけで困っていないのなら、それでも良いかと思います。
ただ、多少の苦労で、無料で簡単に高速化できることは間違いないですし、多少のスキルアップにもなるかとも思いますので、是非一歩を踏み出して欲しいと思います。
RailsもRackをデフォルトとして一生懸命「単純化」や「高速化」を目指しています。
それよりも高いレベルのものが手の届くところにあるのですから、掴んじゃいましょう!
「手間がかかっても、面倒くさがらず、納得のいくアルゴリズムを完成させる」
「少しでも可能性があるのなら、より素晴らしいものを作るために努力を惜しまない」
それがC言語技術者だと思います。
色々相性など言われていますが、少なくとも私はApache & mod_fastcgiでとても安定動作しています。
やってみてダメなら戻せば良いのではないでしょうか?
で、仕組みに関して私のわかるレベルで、解説ページを作ってみました。
急いで作ったので、おかしいかもしれません。
間違いがあれば、ご指摘ください。
ttp://www.dreamhope.net/soliloquies/webtec/

500 名前:nobodyさん mailto:sage [2009/03/27(金) 13:34:24 ID:???]
>>497-499
ありがとうございます。おかげでFastCGIを使ったときのイメージが理解できました。
FastCGIは興味があったけど、試してみるのが面倒というよりは、試してみるとのめり込んでしまいそうで
目の前にあるやらないといけないことをおろそかにできない状況だったので試せなかったのです。
元々はアセンブラでプログラムを組むのが趣味だったような人間ですので、手間よりも高速化が好きですから
今後は少しずつFastCGIも利用していきたいと思います。

501 名前:nobodyさん mailto:sage [2009/03/31(火) 09:58:41 ID:???]
>>500
高速化にこだわるなら、自分でアプリケーションサーバ書くのがいいのでは
Apache臭はするけど、libaprなんかを使えばOSポータブルなdl()とかスレッドとか
メモリプールとか基本データ構造とか入っててお得ですよ。
ま、それなりにデカいけどね。


502 名前:普及された人 [2009/03/31(火) 22:35:52 ID:Tx3EmaFc]
この掲示板に出現する人は「C言語でCGI」をいかに、、、というのが目的ですし、
CGI部分を作るだけでも創造を絶する時間がかかりますので、アプリケーションサーバから作り始めるのは大変です。
今は情報が出回っていますので、作るに無理なことはないとは思いますが、一人で仕事外の時間利用だけで考えると、私ですと5年以上はかかりそうです。
Webアプリ一つ作るのにそれは効率的ではありません。
それにlibaprは、別にWebアプリケーションが高速になるものでもありません。
遅くなる可能性はあるけれど、作るときに便利で楽になるAPIだと思います。
C++技術者でない純粋なC言語技術者は、あまり使わないAPIだと思います。
使わざるを得ないAPI以外は、基本的に存在を知らなければすぐに自作してしまいますので。
「C言語が使える」ということは、別段便利なAPIを使う必要がないということでもあります。
libaprでメモリプールしなくとも、必要な分だけスレッドを立てて、mallocやcallocだけでしっかりメモリ管理できるということでもあります。(時に失敗しますが)
おまけにlibaprのメモリプールは確保した領域をシステムに対して返却しないと記載されていましたので、逆にかなりコントロールしにくいAPIな気もします。
それだけの手間(時間)をかけ、なおかつメモリ周りも適当な設計で良いのなら、普通にC言語でApache module型Webアプリケーションでも組んだ方が楽で高速で良いのではないでしょうか?

503 名前:nobodyさん mailto:sage [2009/04/01(水) 11:08:56 ID:???]
作る際の効率が問題なら、そもそもwebアプリでCは選択しちゃダメ。
5年って、アナタたぶん作ったことないから死ぬほど安全に見積もってるよね?
アプリケーションサーバって、そこまで作るの大変じゃないよ。やることは基本的に待つだけだし。
実際は余暇を二週間位でも最初のプロトタイプ位はできるんじゃ...
まぁ、既存の適当にかかれたCGIをスレッド対応にするのは骨がおれると思うけど。

libaprのメモリプールの返却云々については、apr_pool_create の第二引数参照。
作業とか、ループとかにサブプールを作って、必要なメモリはそこから確保して、
終わったらサブプールだけ開放するって感じで。

でも、確かにCGIじゃないのでもうやめます。
fastcgiもCGIじゃないのではって気するけど...


504 名前:nobodyさん mailto:sage [2009/04/02(木) 22:00:32 ID:???]
C言語が向いてるのは、開発費が多少増えたとしても、
サーバ台数が抑えられるから、トータルコストが安くて済むような案件だね。
検索サーバとか、2chとか、アクセス数が多いサイトとかね。

505 名前:普及された人 [2009/04/04(土) 11:18:37 ID:JlRZ3FIj]
>>503
はい、もちろん作ったことはありません。
それに、今までのところでは作る必要性も感じたことはありません。
私がC言語で既存のAPIを利用せずにアプリケーションサーバを作ることを考えると、、、
FastCGIのようにアプリケーションサーバ(これはハードのことです)側にある複数のTCPクライアントCGIと通信をこなしながら処理を進めることや、
アプリケーション側に、どのようにどのくらいのメモリを与えるのかなどを考えると、
できるだけ汎用的なものにしようとすれば、TCP先で利用できるlibaprのようなAPIを自分で作らないといけないし、、、
というような感じで、503さんとは少し論点がずれていたようです。
すみません。

だた、やっぱり基本的な考え方としてはFastCGIは
(Client → WebServer → FastCGI → CGI → FastCGI → WebServer → Client)
という形態ですので、アプリケーションサーバもFastCGIとほぼ同じで、
(Client → WebServer → AppServer → App → AppServer → WebServer → Client)
という形態になり、module型
(Client → WebServer(module型App) → Client)
の方が構成がかなり単純ですので、C言語で作ったCGIやAppの反応はかなり高速だと思います。
それに、やっぱりmodule型のC言語Appを一つ作る方が、
アプリケーションサーバとクライアントアプリケーションの両方を作るよりも遥かに楽だと思います。
それ以上に、FastCGIであれば、
FastCGI用C言語CGIを一つ作れば済みますので、労力は激減します。
ただ、やっぱりアプリケーションサーバはもとよりmocule型AppもCGIではありませんね。

あと、FastCGIはCGIプログラムをメモリ上に常駐させるのかさせないのかという違いで、基本的な仕組みはCGIと同じと考えて良いと思います。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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