C言語のCGIを語りつつ普及するスレ
■ このスレッドは過去ログ倉庫に格納されています
C言語で書かれたCGIってなかなかイイもの見つかりませんよね。
前Cでかかれた掲示板を見かけたんですけど、なんかタグ用の処理が行われていないらしくて、グロ画像やエロ画像なんて
貼りたい放題でしたよ・・。わたしなんて<xmp>タグを貼りかけましたよ・・・
それはどうでもイイとしてKENTさんのCGIみたいに高機能で手軽なCGIのC言語版みたいなのがあったらなぁなんて思ったことありませんか?
このスレではそんなCGIについて語って、CでCGIの考えを普及していきたいです。
>>379
>ライブラリで用意されてないのが痛い。
藻前が探索能力がないのが痛い。
CGIのライブラリも日本語変換のライブラリもググれば出てくる。
それにCでCGIを作る様なヤツは、自分専用CGIライブラリくらい作る。
Cは豊富にあるほうだと思うけどな。
たいていなんでも揃ってるし。
探せないやつが痛いのは間違いない! >>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作ってみまつ。
>>381
ども、結構、あるんですね。
C/C++言語によるCGIプログラミングの設計入門(ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/)
が参考になりそう。よし、やるど。
PHP言語を使って。
ブラウザでLINUXPASSWORDを変えたいのですが
どうしたらいいのでしょうか?
LINKX シャドーパスワードなどあって
複雑でわかりません・・・
どうか教えてください
お願いします >>384
さすがは上級者だ。
しかし本当のプロならもっと獲物のたくさんいる板で釣る。 CではPerl見たいな文字列操作が面倒すぎだな。
C++になるとまだマシだけど。C++用の便利なライブラリって知らない?
正規表現とかあるんだろ >>389
dyaregexp.hはboostより軽いちゅうわな。
ttp://hp.vector.co.jp/authors/VA028375/junkbox/dyaregexp.html っていうかC++でCGI作るならこれが基本じゃないの?
http://www.cgicc.org/ あゃしぃ人を発見
ttp://labo.cherrybooks.net/ >>401
あのね、それ皆、書こうと思って遠慮してたんだけど・・・
お詫びにネタ振れよ。 >>402
gomen.
ima, server karadakara, nihonngo nyuuryoku dekinai... サーバーに日本語入力入れてしまいました。
いいのかな… それよりDistcc入れて分散コンパイルに……(^^;;;
WinXPでコンパったCGIがFreeBSDで動きません >>410
つ[Perl]
お前さん、Cはやめておけ >>412
WINアプリがUNIXで動かないのは知ってるんですけど、なんとかならないですかね…
クロスコンパイラは都市伝説、PCはPen200、64MBのノートだからUNIX系OSはボツ… Pentium200 64MBって、ちょっと前までは「PC-UNIXで再活用」の代表みたいなスペックだけど。
GUIは苦しいかもしれないけどね。 >クロスコンパイラは都市伝説
藻前はPerlでも使っとけ Cを昔から使ってたので最近PERLの掲示板なんかを自作しようと
環境は自鯖仕様でWin2K+Apache2+VisualC++7
GUIならではの開発環境でデバッグが簡単になる方法ってあるんですかね?
自分はVC6使ってたのでVC7の.netによる恩恵がよるわかりません;;
実行ファイルをCGIとして動かしてVCのデバッグトレース機能なんてできます?
用は実行ファイルの出力先にttp://hoge.com/abc.exeというのをGUIでデバックとか・・
UNIXは知らんのですがWinsockを利用して細かいことしようとすると
画面出力で print "ENV= なんてしてるもので作業効率最悪。
どっちかとVCスレの質問かもしれませんがすまそ・・
あと上げてすんま孫
C言語ってカックいー? つおい?
おにぎりの具で言うと何? >>422
カックイーかどうかはしらないけど
おにぎりの具で言うとうめぼしにマヨネーズって感じじゃない? CでCGIはBoF対策とか糞めんどくさそうでアフォっぽいけど、
C++でCGIはアリかもね たぶん、デザインパターンの本のこと
じゃなくて、buffer overflowだと思う。 なるほど。
でも、Cでもバッファオーバーフロー対策なんて面倒という程大層なものじゃないが… 俺もそう思う。
逆に、「C++だからバッファオーバーフローの心配はあまりない」
等と言う人の作ったものの方が、よっぽど危険だよ。 このスレのおかげでふんぎりがついてCで画像掲示板作ってみたよ。
やっぱり慣れた言語が一番楽チンだね。組むのもデバッグも。
こんなスレあったんだ・・・。
俺はとある企業で5年ほど、CのCGI開発をしていたよ。
某陸√系のサイトはほとんどがCのCGIで動いてるし。
相当無理なことやってるけど、相当無理ができることも事実だったりする。 何言語で書こうがCGIである限りはCGIで出来る事しかできない ファイルIOを発生させる処理でもperlとかわんないのかな
ディレクトリ一覧をサブディレクトリまで
取得して、htmlタグを付与して出力するとか考えとるんですが。
perlだとおそいorz そんなもんページ表示させるたびにやらせたら遅いに決まってる。
キャッシュくらいしろ。 すさまじく書き込みが少ないスレだなー。
かれこれ10年ぐらいCでWebアプリの開発やってる。
いろんなライブラリを開発してたら、ソースが2MBにもなってしまった。
このライブラリだけでCGIに必要な機能はほぼ提供できるところまで来た。
PHPやPerlと変わらないレベルで開発できる。
このライブラリを公開したら面白いことになりそうだけど、
企業秘密満載だから、さすがに無理か。 いいねぇ。
>>企業秘密満載だから、さすがに無理か。
CPANとかある方がCからみたら異質なんだろうな。
一からライブラリ作るのは面倒だからAPRでもつかってみるかな。 みんなヲレcgiライブラリの再生産遣ってそうだよな。
そろそろ基本的な所だけでも共有しないか? それなら、まずは442のライブラリから共有するとしようか。 基本的っつーとどのヘン?
昔のヤツをひっくり返して見つかったらアップしてみる。
普及が目的なら
基本的なライブラリの共有と並行して、
どうすればC言語でcgiが書けるのかという基本の解説がいるね。
hello worldのC言語cgi版みたいなの。 printbody("Hello World!");
だけで、
<HTML>
<BODY>
Hello World!
</BODY>
</HTML>
ぐらいは、生成してくれるとかさ。 >>446
それ必要か・・・?
templateエンジンのが良くね?
テンプレートエンジンってどこにあるの?
stdio.hには無かった。 CでMySQLやらPostgreSQLに接続するにはどうしたらいいんだろ?
TCP/IPの通信部分から書かなきゃダメかなぁ? Cならmysqlにライブラリ付属してますが?
ドキュメントぐらい読んだら? ふぇどら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になってるのにどうして? >>454
SELinuxとかどうなってる?
使ってないの前提として、パーミッションてどこのパーミッションだ?
ディレクトリの方はどうなってる?
所有権は?
迷ったら777試せ SELinuxも無効にしたんだけどダメだ・・・
Windowsのxampp上では動くのに・・・
777もやってみたけどダメだった
所有権は777だから別に違っても大丈夫なはず
ディレクトリは見てなかったけど同ディレクトリ以下の
phpは走るし大丈夫なはずじゃ・・・あ
帰ったら試したいことが出来ました。
まだ解決してないけど>>455さんまりがとう('∀`)
cgiつーかC言語のウェブアプリケーションって無いよね。
ぐぐったらウェブオブジェクト4.5とか出て来たけど、これはマカ専用? >>457
使ってる企業は多いだろうけど、
目的の一つとしてソースをクライアントに見られずに済む
というのがあるだろうから、どこも非公開なんだと思う。 >>457
WebObjects4.5はWinNT系でも動くけど、ObjCはクセがあるから習得には個人差があるかも。 CGI作っている途中だが、何かと面倒だな。
Cだと
たしかに作業量は多いね。
スクリプト系の方がいいのかな。 age
最近、Cで書かれた通販システムを見かけたよ。 >>772
$body = preg_replace('/([0-9]+)/', $hoge_array[\\1], $body);
echo $body;
で「¥」が使えませんってエラーがでるけど、エラーをひょうじしなければ目的の結果は得られる……
どうやってエラーださないようにするか… #include <stdio.h>
int main()
{
printf("Content-Type: text/html\n\n");
printf("<HTML><BODY>\n");
printf("保守\n");
printf("</BODY></HTML>\n");
return 0;
} >>467
かなり大変だという覚悟があるならどうぞ。
自作ライブラリを既に持ってる人じゃないと、
一般的な用途ではメリットは少ないかも。 ありがとさんです
大変そうだけど
楽しそうだからやってみようかな
しかしCの人は優しい人が多い気がする 俺ブログ書くほどボキャブラリー富んでないからCGI無しのサイトなんて
考えられね; おはよう。今日からここで自習していい?いいよね。
とりあえず出力なんだけど、printfとかのf系出力は、stdout
に出せばうまくいくね。でもwrite(fileno(stdout),...はダメみたいだな。
とりあえず今日まで勉強したまとめ。
標準系
content-typeとかのmime header出力\n\n
本文
return 0;
異常系
printf( "status: 番号\n\n");
本文
exit(0);
続き。
エラーの出し方。
printf( "status: 404....\n\n"); >>471
じゃー、私も一つ。
セグメンテーション違反などでCGIが落ちて、
どこで落ちてるか分からない時は、
デバッグ用の表示と fflush(stdout); をちょくちょく実行すると良い。 >>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でもパフォーマンスあがるかも。
計算量や文字列処理の非常に多いプログラムの速い順(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
特徴として言語自体の速度差が順位を決める 計算量や文字列処理の割と多いプログラムの速い順(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の洗練された完成度の高さが伺える 計算量や文字列処理の少ないプログラムの速い順(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
特徴として、動作の前段階のメモリ上で動作可能な状態になるまでの速度差(レスポンスの良さ)が順位を決める 使用メモリの少ない順
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
特徴として、提供方法にかなり影響される サーバの環境構築の速い順
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設定&モジュール起動&コード変更) プログラムを作る速度の速い順(難易度?)(初めてのプログラミング)
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 (モジュール化の手間がかかる) ■ このスレッドは過去ログ倉庫に格納されています