C言語のCGIを語りつつ普及するスレ
■ このスレッドは過去ログ倉庫に格納されています
0001somebodyさん
03/03/23 13:20ID:???前Cでかかれた掲示板を見かけたんですけど、なんかタグ用の処理が行われていないらしくて、グロ画像やエロ画像なんて
貼りたい放題でしたよ・・。わたしなんて<xmp>タグを貼りかけましたよ・・・
それはどうでもイイとしてKENTさんのCGIみたいに高機能で手軽なCGIのC言語版みたいなのがあったらなぁなんて思ったことありませんか?
このスレではそんなCGIについて語って、CでCGIの考えを普及していきたいです。
0002nobodyさん
03/03/23 13:22ID:sylBhDVS0003nobodyさん
03/03/23 13:33ID:sylBhDVS0004nobodyさん
03/03/23 13:34ID:???0005nobodyさん
03/03/23 13:36ID:sylBhDVS「かぁ〜くぃ〜」とあられちゃん風味で言ってみるテスト
0006nobodyさん
03/03/23 13:37ID:???0007nobodyさん
03/03/23 13:40ID:Kt/FP1fCそう思いのあなた!
http://www5e.biglobe.ne.jp/~rgxt5nl/index.htmlのページをお試しください!
100種類のタダで遊べるゲームに、
おもしろいパクリ物を集めたコーナーや、
管理人がすぐに素材にしてくれる素材掲示板
ほかにも、2ちゃん掲示板もありますよ!
自作フラッシュもあります。
とにかくいろんなコンテンツが豊富です!
常連になってくれる人大募集!
0008nobodyさん
03/03/23 13:41ID:sylBhDVS0009nobodyさん
03/03/23 14:16ID:???0010nobodyさん
03/03/23 14:50ID:F5JRnBB1分かりやすく親切にね。
↓のdataにとりあえずいろいろ入るようにしました。
それからどうするの?
/* 関数のプロトタイプ宣言 */
int decode();
/*グローバル変数の宣言*/
char data[1024];/*出力文字*/
/* データ取得処理 */
int decode() {
/* GET/POST 取得 */
if(strlen(getenv("REQUEST_METHOD")) == 3) {
/* GET処理 */
strcpy(data,getenv("QUERY_STRING"));
} else {
/* POST処理 */
fgets(data,sizeof(data),stdin);
}
return 0;
}
以下省略
0011nobodyさん
03/03/23 16:23ID:???0012nobodyさん
03/03/23 16:23ID:???0013nobodyさん
03/03/23 16:24ID:???0014nobodyさん
03/03/23 16:24ID:???0015nobodyさん
03/03/23 17:14ID:???これでGETだと判断するのかよ。すごいなお前。
0017nobodyさん
03/03/23 18:16ID:yv3NRqsM0019anybody
03/03/24 09:14ID:0p5nPuub>>1
0020nobodyさん
03/03/25 00:48ID:???0021nobodyさん
03/03/25 02:14ID:???0022コピペ
03/03/25 04:26ID:???void Escape( char* src )
{
char* dst;
for( dst=src; *src; src++ ){
if( *src == '%' ){
*dst++ = (AtoH(*++src)<<4) + AtoH(*++src);
}else if( *src == '+' ){
*dst++ = ' ';
}else{
*dst++ = *src;
}
}
*dst++ = '\0';
}
0024nobodyさん
03/03/25 21:00ID:???これを書いた人はstrtolという標準関数を知らないのかな。
変換前の文字列が%で終わっていたら危ないね。
あとswitchを使った方が見やすくなると思う。
どうでもいいけど、Escapeだと逆のような気が・・・
>>23
え?
0025yabukita
03/03/26 03:05ID:0eTcQCDYKENTはPerlだけか?
0026nobodyさん
03/03/26 04:06ID:???0028yabukita
03/03/26 13:41ID:6XIqCMZ4適当にがんばってください。
C言語でCGIを普及するにはまだまだだな。
0030yabukita
03/03/26 13:43ID:6XIqCMZ42ch風味な掲示板を是非C言語で作ってみたいですな。
0031anybody
03/03/26 13:45ID:???0032yabukita
03/03/26 13:46ID:6XIqCMZ4http://www.tok2.com/
とか?(telnetOKよ)
あとXreaもC言語のCGIがうごくが事前にLinux環境で
コンパイルする必要がありけり
0034nobodyさん
03/03/26 16:57ID:???0036nobodyさん
03/03/26 20:35ID:???iswebはSparc+Solarisだったかな。性善説サーバでコンパイルしたものをアップしてみようかな。
0037nobodyさん
03/03/26 20:46ID:???コンパイルしたものはもうCとは無関係だし。
0038bloom
03/03/26 20:53ID:C4vNyXIc0039nobodyさん
03/03/26 21:01ID:???(知らないのに勘でしゃべる)
0041nobodyさん
03/03/26 21:23ID:???実は、、ExecCGIが有効か無効か、しか問題にならない。
PerlでCGIが動くのなら、CGIが使えるっていうことだから、
#!/...形式以外の物も使える、つまり、C言語で書かれた物をコンパイルしたもの
(バイナリ)もCGIとして動くということになる。
0042nobodyさん
03/03/26 21:27ID:???そこであえてC言語が使えると書くのは、Cコンパイラーが使えます、
という事を意味する。はず。
0043nobodyさん
03/03/26 21:28ID:???コンパイラ
0044nobodyさん
03/03/26 22:11ID:???0046nobodyさん
03/03/26 22:16ID:???0049nobodyさん
03/03/26 22:36ID:???今更デコードだなんだからやらなくてもいいはずだが。
0053nobodyさん
03/03/26 23:07ID:???0055nobodyさん
03/03/26 23:20ID:???じゃ、改めてC/C++でCGIを語るスレってことで
0056nobodyさん
03/03/26 23:24ID:???なめんなこら!コンパイル済み実行ファイルなCGIを語りつつ普及・・・って普及するスレってなんだよ・・・。
Windows用ならGUIで設定とかできるとおもしろいなとか思ってみたり。
0057nobodyさん
03/03/26 23:37ID:???それなら根本的にCGIとは関係ないと思うけど。
単にテキスト出力するプログラム作ればいいだけだから。
0059nobodyさん
03/03/26 23:52ID:???Windows用ならGUIで、って何を指してるのかがわからん。
0060nobodyさん
03/03/27 00:19ID:???>>59
GUIの設定ツールをつくるってことじゃない?対象がCで書かれている必用はないけど。
0064nobodyさん
03/03/27 01:05ID:???***すれ立てるまでもない質問はここで 第34刷***
http://pc2.2ch.net/test/read.cgi/tech/1048677915/l50
その話はこっちで現在継続中。
なんでわざわざ移動して質問したのかは謎。
0066somebody
03/03/27 17:30ID:???>>49
もちろんライブラリはあるなら使ったほうがよい。
Butもし、なんもなしでアドリブでつくれっていわれたときに
「ぼくちゃんライブラリがないとつくれましぇ〜ん」
なんてことにならずに独力ですべてつくれるようにしておきたいんだYO。
0068nobodyさん
03/03/27 17:36ID:???ならこのスレと関係ないから一人でひっそりとC標準ライブラリでもSTLでも好きなの作ってれや。
このスレはどうでもいいことに食いついて全然話が進まないな。
0069fusianasan
03/03/27 17:36ID:???GBDKでつくれますか?
すれ違いならいいんです。ほんとごめんなさい。
フシアナサンってだれですか?
0070nobodyさん
03/03/27 17:38ID:???Gaki Bakari Dana, Koko.
0071fusianasan
03/03/27 17:38ID:???66です。すまむこ。このネタおわってたのね。
ところでふしあなさんってきかなくなったんですね。
0073fusianasan
03/03/27 17:43ID:???ありがとう。先キュー。OK牧場
0074fusianasan
03/03/27 18:08ID:???0075nobodyさん
03/03/27 18:09ID:???0077nobodyさん
03/03/29 17:51ID:???hello,world がなんで100KBになんだよ。
0078初心者
03/03/31 22:24ID:???使用したコンパイラが、な、なんとLSI C-86試食版なんすよ!!
しかし16Bitでカナーリ時代遅れの予感、、
誰かWindowsで動作する32Bitコードを吐き出す
フリーのコンパイラって知りませんか?
0083初心者
03/03/31 22:54ID:???笑っちゃうかもしれないけど本当の話なんだす・・・
最近自家鯖の実験始めて、目標は自作CGIを作ることだが
どうもPerlってソースの見た目から受け入れられなくて
昔ちょっとだけかじったことのあるC言語でも出来ると聞いて
お決まりのHelloWorldとか、C言語CGI解説サイトのサンプルを
コンパイルしようとしたが、自分の知ってるフリーで使えるコンパイラは
あれしかなかったもので。。。。
でも、ちゃんとhtmlからの入力を受け取って動作したから正直驚きました
gccって奴があるのですか。ありがとうございます。
0086初心者
03/03/31 23:28ID:???すません。見落としてました
検索掛けると、昔TurboPascalってので有名だった
ボーランドのCコンパイラがあったのですね
ちなみにC++ってのは良く分からん。。。
厨に構ってくれてありがd
これから勉強します
0087nobodyさん
03/04/01 21:48ID:???LGPLですか?
いわゆる感染しないライセンスでしたよね。
ただ、GPLというだけで心理的にイヤなんで、敬遠してます。
ライセンスについても明るくないですし。
0088fusianasan
03/04/01 22:59ID:???って本をreadをしたけど漏れ could not understandですた。
0089fusianasan
03/04/01 23:02ID:???0090nobodyさん
03/04/01 23:30ID:???0091fusianasan
03/04/02 14:00ID:???作ることを普及するスレ
0092nobodyさん
03/04/02 14:22ID:???0093nobodyさん
03/04/02 14:28ID:???0095nobodyさん
03/04/02 15:34ID:???0096nobodyさん
03/04/02 16:03ID:???「Cで作ると変数に型があるメリットが!!」で普及したら苦労しねーっていうか。
0097fusianasan
03/04/02 21:44ID:???普及するぐらいなら簡単にCでCGIを作れるようになる
モジュールみたいなのを作る必要があるのかな?・・
0098nobodyさん
03/04/02 21:48ID:???0099fusianasan
03/04/02 21:48ID:???0100fusianasan
03/04/02 21:49ID:???たしかにな・・・。
http://www.tok2.comって逝けたっけ?・・・shell
0102nobodyさん
03/04/02 22:07ID:???そういうライブラリがないかどうか探して、もしあったら次にそれの使い方を
わかりやすく解説してるサイトを探して紹介した方が普及させるには一番だと思う
これらが無いときに初めて自分で作るって手順になるのでは。
0103nobodyさん
03/04/02 22:27ID:???テストの報告とかってどっかに無いのかな?
0104nobodyさん
03/04/02 22:35ID:???仮に100ミリ秒が10ミリ秒になったってネットを介したら誤差の範囲だし。
サーバ機で動かすだろうから一瞬だろうし。
速度差が出るほどのプログラム(処理に何分もかかるような)だと
そもそもCGIとして使い物にならないし。
0105んじゃ
03/04/02 22:39ID:???2ちゃんのようなアクセス多数で重たいCGIならば
効果てきめんって事か?
0106nobodyさん
03/04/02 22:46ID:???CでCGI質問スレとかCGI用Cライブラリを作ろうスレとかそんな感じで。
需要は少ないだろうけどカテゴリとしてあってもいいとは思う。
0107nobodyさん
03/04/02 22:49ID:???アップローダのデータ量が多いってそりゃファイルをUL/DLするネットワークの
速度の問題で、CGIの速度の問題じゃないと思われ。
0108nobodyさん
03/04/03 03:36ID:???可変長配列・ハッシュ
正規表現によるマッチング・置換
URLデコード
文字コード変換
ロック
とりあえずこれだけサポートしたライブラリが欲しいところ。
0111nobodyさん
03/04/03 21:07ID:???0113fusianasan
03/04/03 23:36ID:???そうだな、漏れは無理だが誰かつくってくれないかな・・・?
0114nobodyさん
03/04/04 01:17ID:???ひと苦労だよ(´д`)
ttp://www.sixnine.net/cygwin/cygwin-doc/devel/cygwin-to-linux-cross-howto.html
0115nobodyさん
03/04/04 01:54ID:???Object Pascalで良いなら書いても良いけどね。
>>114
無理にクロスコンパイルせんでも、VMwareとかパーティション切ってLinux入れた方が楽じゃない?
NLDとかWinLinuxとか言う際物でも良いけど。
0116fusianasan
03/04/05 16:10ID:???jcode.cを作ってくれ。
cgi-lib.cを作ってくれ。
どうせ誰かお前が作れとかいうんだろ?
0117nobodyさん
03/04/05 16:11ID:???0118nobodyさん
03/04/05 16:25ID:???0119nobodyさん
03/04/05 16:33ID:???0120nobodyさん
03/04/05 17:36ID:???0121nobodyさん
03/04/05 19:17ID:???0122nobodyさん
03/04/06 10:59ID:???0123nobodyさん
03/04/06 22:17ID:???0124anonymouse@on.the.nettori
03/04/07 13:27ID:???EUCとかで投稿してくるヤシがいたら困るからね。
あとKENTって妻子持ちですか?
0125anonymouse@on.the.nettori
03/04/07 13:29ID:???KENTさんは旅好きですね。
0126nobodyさん
03/04/07 22:27ID:???http://allabout.co.jp/computer/cgiperl/closeup/CU20020707A/index.htm
0127nobodyさん
03/04/08 14:41ID:???C/C++でCGIを作るって……何かのジョーク?
0129nobodyさん
03/04/08 15:25ID:???0130fusianasan
03/04/08 16:46ID:???CでCGIを実際につくってみるしかないのかな?
0131nobodyさん
03/04/09 00:45ID:???使えないけど、
apache2.0はcgiの復刻の悪寒 ?
phpのモジュールなら現実的では。
http://jp.php.net/manual/ja/zend.creating.php
0132fusianasan
03/04/09 23:40ID:???0133nobodyさん
03/04/10 00:49ID:???そしたら使ってやっから。
0134nobodyさん
03/04/10 02:45ID:zZSFzDwzそんなの無いよなぁ?
Cだと実行速度がめちゃんこ早えぇと聞くが
10倍くらい速いのか?
そういや2ちゃんねるのCGIも
Perlのスクリプトだったのを
後にCで書き直されたらしいな
ひろゆきもわけわからんだって。
0135あぼーん
03/04/10 02:49ID:???http://muryou.gasuki.com/hankaku/hankaku03.html
http://muryou.gasuki.com/hankaku/hankaku04.html
http://muryou.gasuki.com/hankaku/hankaku02.html
http://muryou.gasuki.com/hankaku/hankaku01.html
http://muryou.gasuki.com/hankaku/hankaku10.html
http://muryou.gasuki.com/hankaku/hankaku09.html
http://muryou.gasuki.com/hankaku/hankaku08.html
http://muryou.gasuki.com/hankaku/hankaku07.html
http://muryou.gasuki.com/hankaku/hankaku05.html
http://muryou.gasuki.com/hankaku/hankaku06.html
0136佐々木健介
03/04/10 02:49ID:???/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (5 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < こんなサイトを見つけた
|| | | | \ ┃ ┃/ \ 正直、スマンカッタ
| || | |  ̄ \_________
http://saitama.gasuki.com/kensuke/
0137nobodyさん
03/04/10 06:33ID:???じゃ駄目なの?
0138fusianasan
03/04/11 18:54ID:???http://www.aaacafe.ne.jp/
の無料ホームページでC言語CGIが使えるようになったぞ。
やっぱりこのスレのおかげだな
0139nobodyさん
03/04/11 20:09ID:???そこ・・・
CGI(C)の仕様について
> ご自分でコンパイルしてアップロードしてください。
> 拡張子は
> .cgi
> です。
どうしろと?FAQ読んでも、検索して調べてくださいとか書かれてるし。
バイナリをアップロードするのなら、CGIを許可されているところなら
何処でも動くけど?>C言語でかかれたCGIプログラム
普及っていえるのか・・・
0140nobodyさん
03/04/11 20:54ID:???そこ借りてやってみた
perlでスクリプト書けばコンパイルできる
0142nobodyさん
03/04/11 21:55ID:???それをコンパイルするcgiをうpしてブラウザでcgiを呼ぶ
0143nobodyさん
03/04/11 22:04ID:???telnet.cgiのようなものを使えばできるということじゃないだろうか。
telnetやsshは使えないけど、Cコンパイラは使えると。
0146143
03/04/11 22:57ID:???↓試しに簡単なものを作って設置してみた
http://f13.aaacafe.ne.jp/~seraph/cgi-bin/mininslookup.cgi
0147nobodyさん
03/04/11 23:28ID:???0148nobodyさん
03/04/11 23:36ID:???うん(socket関数はコード上では使っていないけどね)。
サーバー上でコンパイルしようとしたらなんかsocket.hがシンタックスエラーを起こしたんで自分のところでコンパイルしてアップした。
でもサーバー上でコンパイルできるのは確かみたい。
0149nobodyさん
03/04/12 00:37ID:???ローカルに環境作ってそこで作ってテストして、できたものをサーバにアップするんじゃなくて?
0150何でやねん
03/04/12 01:11ID:???何らかのトラブルの元になりそうで
あまり良くない予感がするんだけど
運用するサーバへの最適化とかは
コンパイラのオプションの問題であって、
コンパイルする場所とは別に関係ないよな?
0152nobodyさん
03/04/12 11:25ID:???専用のクロス開発環境があると思うけど
unix系の場合は実機でコンパイルが普通では?
全然違う環境でコンパイルしてまともに動くの?
やったことないから不安だな
0153nobodyさん
03/04/12 12:57ID:???要するにサーバの機種やOSに対応する
クロスコンパイラを探すのが面倒だってことか。
どっちもLinuxとは限らないもんな。
0154nobodyさん
03/04/12 13:03ID:???0155nobodyさん
03/04/12 16:46ID:???0156nobodyさん
03/04/12 17:39ID:???コンパイラ/ライブラリの違いによって動作が違ったり、
バグが出たりする心配があるんだけど。
0160fusianasan
03/04/13 01:17ID:???Ruby
Perl
PHP
C(C++)
をいい順番でならべるとどう?
評価基準は、鯖への負荷/処理速度/CGI作成にどれだけ適しているか
を考慮して・・・。
0161fusianasan
03/04/13 01:22ID:???どれだけCGIをつくりやすいかってこと。
Perlならその点では評価がいいと思われる
0163nobodyさん
03/04/13 10:54ID:???Cが最強か。
いや、アセンブラ。。。
0165164
03/04/13 14:12ID:???0166nobodyさん
03/04/13 14:24ID:???さくさくと書けちゃうよ。
0167Perl、PHP、C、HTMLファイルにして読む
03/04/13 17:46ID:bgaBPkZLhttp://sugachan.dip.jp/download/bench.png
http://sugachan.dip.jp/download/read.php
PHPよりPerlの方が速いようですが、
鯖負荷の順序はどうなのだろう?
Perl、PHP、C、HTMLファイルにして読む
0168nobodyさん
03/04/13 17:54ID:Ok9Y0fz80169nobodyさん
03/04/13 17:59ID:0bbeziRr0170fusianasan
03/04/13 20:28ID:???0172fusianasan
03/04/13 20:33ID:???0173nobodyさん
03/04/13 20:37ID:???そこの人はmod_perl使ってるよ。
普通のPerlじゃだめぽ。
mod_perlならPHPと同等かそれ以上じゃない?
Cが遅いのはサーバサイドじゃないから
C自体が遅いわけじゃない。
0174nobodyさん
03/04/13 20:38ID:???何を訳の分からんことを?
0175nobodyさん
03/04/13 20:40ID:???普通のPerlのスクリプトは
コンパイル→中間コード→実行
という手順だけど
mod_perlだと
最初の一回だけコンパイル→中間コード→実行で
次からはコンパイルをしないで中間コード→実行
となるんで劇的に速くなる。
PHPはコンパイル→中間コード→実行なんで
多少それよりかは落ちるかも・・・
PHPAとか中間コードを残すのもあるけど
まだ出始めで微妙だね。
0176173,175
03/04/13 20:42ID:???mod_perlとかmod_phpとかと比べたらCGIとしては
多少オーバーヘッドが大きいと言いたかっただけなんだが・・・
見当違いだったらスマソ
0181nobodyさん
03/04/13 21:42ID:???0182nobodyさん
03/04/13 21:46ID:???今もされてるのだろうか
0185Perl、PHP、C、HTMLファイルにして読む
03/04/14 00:32ID:dnrQZih10186nobodyさん
03/04/14 00:49ID:???ことだぜい!
結構速いYO!
0187nobodyさん
03/04/14 02:07ID:???それは理想だが、実際に
機械語・アセンブラで本当にCGIを書く気ある?
あるわけ無いよな。
それに一番近いのが、Cで開発するって事だろう。
最初はPerlで書かれていた2ちゃんねるのCGIも、
アクセス増加でサーバ負荷が高くなり、Cで書き直されたらしいし。
0189nobodyさん
03/04/14 17:47ID:???モジュールと言わずとも、FastCGIって手もある。
http://www.fastcgi.com/
いずれにしてもモジュール組み込まなきゃならないから、
root持ってないと辛いけど。
遊びで動かしてる自宅鯖とかなら無問題。
あと、C++で楽しいライブラリ知らない?
一応cgiccてのは見付けたけど、いかにもGNUな田舎臭い
ライブラリなんだよなあ。
0190nobodyさん
03/04/14 20:28ID:???WTLとか。
0191nobodyさん
03/04/14 20:45ID:???0193nobodyさん
03/04/15 00:34ID:???C言語でCGIを書いた奴はいないようだな。
脳内プログラミング…
0194nobodyさん
03/04/15 01:48ID:CDjnnd9Zん、実際に作って自分のsiteで使ってるよ。
新たにperl覚えるのもメンドイし。
簡単なbbsとアクセスログ付きカウンタだけだけどね。
簡単なライブラリも作ったけど、
さすがに人様にお見せできるレヴェルじゃないので(w
一応Servletもつかえる環境構築しだけど
家かえってまでそんな大掛かりなコーディングしないし。。
0196fusianasan
03/04/16 19:33ID:???日本語処理が難しいね。
バイナリがどうのこうのって、なかなかうまく逝きません。
ヒントを所望したい。
0197nobodyさん
03/04/16 20:53ID:???0198nobodyさん
03/04/16 21:27ID:???0199194
03/04/17 00:45ID:???デコード自体はマルチバイト意識しなくてもいいんやん?
あ、俺が作った時はあくまで個人用途なので
ちゃんと試験したらボロボロかもしれんが(w
文字コード関係は自作せず、nkfのソースをぱくったYO!
どっかのサイトで見本があったので。
0200nobodyさん
03/04/17 05:56ID:???まともに実装されているとは限りません。
wchar_t == UCS-2でも幸せな部類です。
しかもCGIなので、どのencodingが飛んで来るかも分からない
ので、ワイド文字関係は基本的に使えません。
0201山崎渉
03/04/17 12:00ID:???0202fusianasan
03/04/17 18:05ID:???1:GET/POSTの判別をする。/2:クエリーストリングや標準出力をよむ。/3:一文字ずつ次のように処理をする。
4:%が現れたら次の文字とさらに次の文字(それぞれ順にchar型変数A/Bとする。)
5:int jp = 0x10*A + B;
6:jpをchar型配列にぶち込んでいく。string[now] = printf("%c",jp);(nowには配列の現在の番号が入る。)
ご指摘お願いします。
0203fusianasan(202
03/04/17 18:06ID:???{+は空白にする。
{%でも+でもなければそのままchar型配列にぶち込む
0204194
03/04/17 18:40ID:???基本は問題ないと思われ。。
パッと見、気になるのは手順の5。
int jp でなく char jp の方が心臓に良いと個人的に思う。
#符号の問題ね。
あとは初歩的な・・・
4の処理が誤ってないこと、
char配列操作時のポインタ操作が「多少複雑」になってると思うので
ケアレスミスが無いことを確認汁。
0205fusianasan
03/04/17 18:43ID:???大変参考になる、返答ありがとうございました。
またがんばって試行錯誤してみます。
本当に有難うございますぃた。
0206fusianasan
03/04/17 18:47ID:???A;Bの処理で
swich(A) {
case '0':
A = 0x01;
case '1':
A = 0x02;
(中略)
case 'f':
case 'F':
A = 0x0f
}
って漢字に16進にしなくてはいけませんよね?
0207fusianasan
03/04/17 18:49ID:???%のあとにつづく2文字をA,Bに代入したあとの処理を表しています。
ちょっとミスってるけど(セミコロンぬけ)
その辺は見逃してください。
ちなみにBに関しても同じ処理を行う。
0208194
03/04/17 18:49ID:???>ひらがなとかはわりとデコードできるんですけど・
デコードできる== 正しい文字で認識出来るってことだよね?
html含め処理内の文字コードの統一は出来てる??
0210nobodyさん
03/04/17 18:59ID:???0211194
03/04/17 19:00ID:???break; も抜けてるが勘弁してやろう(w
その通り、16進だよ。
ちなみに漏れは、大文字のA〜Fを返すブラウザに出会ったことがないので
こんな感じ。
#余りいい見本では無いが・・
char *str;
char w;
if( *str < 0x41){
w = *str - 0x30;
}else{
w = (*str - 0x41) + 10;
}
0212fusianasan
03/04/17 19:15ID:???すべてシフトJISで送ってくれると思ってしていません。
(そこまで考える余裕がまだないからね・・・。)
HTMLはなるべくshift-jisで出力するようにメタタグに
記している。
>>211
ほんまや。break;が抜けちょる・・・・。
0213nobodyさん
03/04/17 19:28ID:???>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 */
>}
0214nobodyさん
03/04/17 19:50ID:???#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)しか入らないけどいいの?
0215nobodyさん
03/04/17 19:56ID:???0216bloom
03/04/17 19:56ID:ahUYqmP+0217215
03/04/17 20:02ID:???デコードに文字コードが影響するのか?
0218bloom
03/04/17 20:02ID:VKhj20RH0219fusianasan
03/04/17 22:04ID:???今日ローカル鯖じゃなくてちゃんとしたUnix鯖で試したんすよ・・・。
じゃあローカル鯖でやったときよりイイ結果がでたんすよ。
やっぱりコンパイラによってちがうんですかね?
ローカル鯖ではLSI試食版つかってたんですけどね。
Borland c++だとファイルサイズが巨大になるからあんまり
好きじゃないんだな・・・。
0220nobodyさん
03/04/17 22:29ID:???0222fusianasan
03/04/18 18:47ID:???ちゃんとデコードできるようになりますた。
わーい!わーい!
0225nobodyさん
03/04/18 21:02ID:???> 5:int jp = 0x10*A + B;
この変が阿呆らしいと言っているんだよ。strtolという関数があるだろ。
0226nobodyさん
03/04/18 21:06ID:???http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.1.6.html
0227nobodyさん
03/04/18 23:45ID:???は置いといてマジレス・・
「車輪の再発明」だの「標準関数にある」だのってよく言われるけど
効率を追求する業務じゃなきゃ別にいいんじゃん?
確かに無駄な努力かもしれんけど、
初心(初学)者はそれによって大幅に理解が深まると思うし。
その気になれば、ほとんど全部自分で作れるのが
Cの長所でもあり短所でもあると思うよ。
逆に業務なら、『低レベル』まで自分で作れると
いざというとき強かったりする。
特殊な例かもしれんけど、一部組み込み系とか
ほとんど標準関数使えない様な環境もあるし。
自分で書いてて、屁理屈に見えてきた。
逝ってきます・・・
0228nobodyさん
03/04/19 00:24ID:???strtolだと、プラス/マイナス符号を突っ込まれても大丈夫?
たとえば、'%-E' とかあった場合。
それほど大きな問題にならないとは思うけど。。
また、URLデコードの後は0x80から0xFFが含まれる場合を考えて、
char型では無くunsigned char型の方がいいと思われ。
0230228
03/04/19 00:31ID:???変な文字食わせると0が返るから。
0231229
03/04/19 00:32ID:???0232228
03/04/19 00:36ID:???変?
# お好きにどうぞ。
0235fusianasan
03/04/19 15:13ID:???0236nobodyさん
03/04/19 16:21ID:???0237nobodyさん
03/04/19 16:30ID:???0241fusianasan
03/04/19 21:18ID:???0242山崎渉
03/04/20 05:58ID:???( ^^ )< ぬるぽ(^^)
0243fusianasan
03/04/20 17:37ID:???/  ̄ ̄ー―-_
▲ ) /
/ハハハ\ |\|\|\___イ
. / \ | /\ /\lllll|
/ _ _ \ | /・\ /・\ |
. | ⊂⊃ ⊂⊃ | |  ̄/、  ̄ ̄ )
(| ∴ ∪ ∴ | |  ̄ /
\ <=> / ヽ <三> /
\____/ ヽ /
∧ /| \/
,r‐‐‐‐‐‐‐‐‐'´ `゙‐‐‐‐‐‐‐‐‐‐、r‐‐‐‐‐‐'´ `゙‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐、
| 山崎君、きみはぬるぽしか言えないのかい| そんなに卑怯者、卑怯者と |
i やっぱりきみは卑怯ものさ。 i 言わないでくれよ〜(泣 i
0245nobodyさん
03/04/23 19:47ID:jAUiG1DXWhat does it mean?
0247nobodyさん
03/04/23 21:10ID:???0248nobodyさん
03/04/26 01:53ID:???代入ひとつからしてもめんどくさくてしょうがない。
0251ふしアナ:
03/04/27 21:06ID:Cn2+e3lFこれってなんて読む?
(漏れの場合)
char ちゃー
argv あーぐぶい
printf ぷりんとふ
sprintf すぷりんとふ
hex へっくす
int いんと
getenv げっといーえぬぶい
void ぼいど
buffer ばっはー/ぶっふぁー
malloc まろっく
とりあえず今日はこのへんで・・・・
0254ふしアナ:
03/05/03 23:37ID:4lYMudidあるとおもいますけど、それぞれの美点と欠点をあげてくれませんか?
0256nobodyさん
03/05/03 23:39ID:???0257FENT
03/05/06 00:10ID:mpO79UQ6UNCGIをWINDOWSで実行モジュール".exe"にコンパイルしたことある人
コンパイル方法おしえて。
英語のDocを読むとターボCがなんちゃらでわからん。
できれば、VC++とかでコンパイルしたいのねー。
0258FENT
03/05/06 00:14ID:mpO79UQ6WINDOWSで動かす場合だけど。
拡張子".cpp"で作成すればWINAPIをガシガシつかったCGIが出来るよ。
0259nobodyさん
03/05/06 00:21ID:???0260nobodyさん
03/05/06 00:47ID:???0261FENT
03/05/06 01:04ID:mpO79UQ6UNCGIに変わるもので、おすすめのものしっているかた
いらしたら教えてください。
0262動画直リン
03/05/06 01:10ID:qyy2Fj990263nobodyさん
03/05/06 01:18ID:???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;
}
何年か前に作ったデコード関数。
マクロの括弧が無駄に多い気が・・・
0264263
03/05/06 01:20ID:???0265nobodyさん
03/05/06 01:29ID:???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
0267261
03/05/06 02:05ID:mpO79UQ6返信ありがとうございます。すみませんでした。
う〜ん
ヘキサのデコードというか、UNCGIを使いたかったのは、
HTTPのリクエストから切分けてデコードした後に、
環境変数にセットしている、仕組みをそのまま使いたいなーって思って
たんですよ。
UNCGIの処理の流れ的には
・環境変数取得
・切離し後デコード
・それぞれ別の環境変数にセット
・URLの引数(ttp://***/uncgi/aaa.exe)のプログラム(aaa.exe)を起動
・起動されたプログラムは、環境変数よりPOST及びGETの
パラメータを取得
こんな感じだとおもうんですよ。作ればいいんですけど・・・
ただ、コンパイルできたらいいなーと思いまして。
VC++だと、何ヶ所かコンパイルにひっかかってしまうので
私のめんどくさがりやから・・・質問してしまいました。
0268261
03/05/06 02:08ID:mpO79UQ6ただ・・この仕組みをつくるとしたら疑問があるんです。
HTTPのリクエストで起動されたCGIによってセットされる環境変数は、
ブラウザごとに別々の扱い(DOSプロンプトのように)になるのでしょうか?
同時にアクセスがあった場合、同一名称の環境変数は、それぞれブラウザ
ごとに違う値を保持するのかな???
0269nobodyさん
03/05/06 03:04ID:CpGJxcjL結局cgiccに移行したよ。cgiccおすすめ。
0270bloom
03/05/06 03:10ID:qyy2Fj990271_
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:???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
0274nobodyさん
03/05/07 00:56ID:ZdGvFTnv↑朝早くから
誰 オ マ イ
0275nobodyさん
03/05/08 15:14ID:???ニコラ・テスラのパクりだろ。( ゚Д゚)
http://plaza16.mbn.or.jp/~satchel/
0276nobodyさん
03/05/20 01:53ID:???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:???0278山崎渉
03/05/28 17:18ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0279山ア渉
03/06/15 18:32ID:VQqVlPF20280King.Yamazaki ◆/3cyWCTf.c
03/06/15 18:42ID:VQqVlPF2I 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どっちが高速安定動作するんですか?
0285nobodyさん
03/08/10 00:37ID:???( ゚д゚)ポカーン ( ゚д゚)ポカーン
( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
0286_
03/08/10 00:40ID:???0287nobodyさん
03/08/10 16:43ID:37o8iGE7普通にflock関数を使うのはまずいですか
0289nobodyさん
03/08/10 17:22ID:j1wuC9e6ム板とマルチ。
0291nobodyさん
03/08/14 14:08ID:oA+wkOB6TABの1Byteをケチりたいの?
0294山崎 渉
03/08/15 22:31ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0295nobodyさん
03/08/17 15:25ID:VoWMe2O60296あぼーん
NGNG0297______
03/08/17 15:32ID:???川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:???とりあえず
「固定長」のバッファをなぜかmallocした上にクリアすらせずに使うのと
関数の返り値を片っ端から捨てていくのと
入力データを長さもチェックせずにstrcpyで突っ込むのはやめて欲しい。
まあ、それを鵜呑みにしてコード書く奴も書く奴だけど。
0299nobodyさん
03/08/22 01:40ID:???元々買う気なくて立ち読みしかしてないのでナンだけど、
どこで固定長のバッファをmalloc()してた?
興味本位で探してみたけどみつけらんなかったYOu
0301nobodyさん
03/08/24 04:11ID:???0302nobodyさん
03/08/28 14:55ID:???0303nobodyさん
03/08/31 16:08ID:oQ0ZtH63配布したらアクセスどんどんくるかな?
って思っているんです。
需要ありかしら?
(今Perlでつくったやつ配ってるんですけどちょくちょく使っている人がいます)
0304303
03/08/31 16:11ID:oQ0ZtH63たしか88投稿したのは、おれだけど、多少上達してから
それは思いました。
(っつうかそいつの本のまねしてやったら友達にセキュリティやべえぞって言われたんですね・・・)
0305303
03/08/31 16:12ID:oQ0ZtH63ここは普及スレだった。。。。。。。。。。
0306nobodyさん
04/01/27 13:55ID:???0308nobodyさん
04/02/02 11:42ID:???敷居が高いとかだろ
WEBのためにC++覚える馬鹿(暇人)はいないし。
C#が普及すれば少しはCのCGI増えるかな?
0309nobodyさん
04/02/02 16:06ID:KHxdJaNyha?
0311nobodyさん
04/02/10 19:56ID:???0312nobodyさん
04/02/11 01:13ID:???Cで開発しても、そんなに時間はかからない。デバッグにしてもさほどでは
ない。開発に時間がかかるのは言語慣れしてないからだろう(漏れが Perl
でやったら Cの倍以上かかる)。
敷居が高いのは認める。関連書籍は圧倒的に少ないし。コンパイラという時点
で決して低くはない。特に初心者は大変だろう。
Webプログラミングを目的として C++覚える人というのも確かに奇特だが、C++
を覚えていれば他にツブシも効くだろう。決して損な選択ではないと思う。
0313 ◆0UMFbJB2oM
04/02/12 18:21ID:pt0vOHBR0315nobodyさん
04/02/17 04:40ID:???> 同時にアクセスがあった場合、同一名称の環境変数は、それぞれブラウザ
> ごとに違う値を保持するのかな???
POSTなり GETなりのリクエストがあってはじめて CGIが起動されるわけだから、起動されたプロセスで
「俺はどれだ?」なんて事を留意する必要は無い。ただ単一動作をするのみ。
いくつものブラウザからいくつものリクエストをされた場合は、それぞれ個別にプロセスが起動される
だけだから、その時その時の環境変数を読めばよい。HTTPデーモンは、そういう風にしてくれるはずだ。
・・・と、偉そうに書いたが、間違ってたら激怒キボンヌ。
0316nobodyさん
04/02/17 13:36ID:???同じCGIプログラムでも、Request毎に違うプロセスが起動されて
そのRequestの発行したブラウザの情報が環境変数に設定れるよん
0317nobodyさん
04/02/17 17:47ID:???0319nobodyさん
04/02/19 13:48ID:???0320nobodyさん
04/02/19 18:08ID:???0321nobodyさん
04/02/19 22:47ID:???0323nobodyさん
04/02/20 00:10ID:???0324nobodyさん
04/02/20 01:29ID:???ありがd
CGIが重い重いと言われてるので、
どうせCならapacheモジュールにしちゃえと思ってて、
WebProgだと思ったけどunix板ですか…
ちょっとこわひ…
0325nobodyさん
04/02/20 03:16ID:???「彼女」「イブ」等のキーワードのスレを探せ。「雑談」でもいいが。
0328nobodyさん
04/02/22 04:18ID:???%だったら続く2文字をテーブル変換するって方法使ってるよ。
テーブルは上の桁用と下の桁用をそれぞれ作って足し算。
0329nobodyさん
04/03/05 04:48ID:???0330nobodyさん
04/03/06 19:57ID:???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:???socket使って2ちゃんねるのトップを取得してタグコピーして表示するとか。
この場合とくに意味は無いけど、面白い使い方をしている例希望。
0332nobodyさん
04/03/11 00:58ID:???0333nobodyさん
04/03/11 01:02ID:???0335nobodyさん
04/03/11 09:01ID:???インタプリタみたいな事をやるよりは速いかも、程度しか思いつかないが・・・。
とか言う漏れも C で CGI やってるわけだが。
だって Perl とか PHP で書くと、キレイなソースに出来ないんだもん・・・。<己れのスキル不足棚上げ
0336nobodyさん
04/03/11 10:52ID:???0337nobodyさん
04/03/19 23:07ID:wAGafw57ttp://c.toshinari.net/cgi/bbs/mtbbs2/
これだね。
0338nobodyさん
04/04/05 21:18ID:???ひとまとめにしたクラスを作った。
まだマルチパートのPOSTに対応していない・・・
0339nobodyさん
04/04/11 13:58ID:???何からはじめたらいいのかわかんないよ。ググリ疲れました・・・。
0340nobodyさん
04/04/11 14:10ID:???サンプルも何も無いと思うけど。
0341nobodyさん
04/04/11 14:57ID:???http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
0343918
04/04/26 19:58ID:???Cならではというよりバイナリならではのほうが大きいのでは?
1、データベースなんかを作ったとき処理が速い。
2、大抵のCGI対応のサーバーなら使える。インタプリンタよりも多く対応(多分)。
3、インタプリンタはクロスサイトスクリプティングの危険があるが、バイナリなのでそれは無いっぽい。
そもそも、CGIの元祖はC言語世代らしい。
0344nobodyさん
04/05/07 18:55ID:???C/C++ CGIスレッド
http://pc5.2ch.net/test/read.cgi/php/1077753522/l50
と100%かぶってる気もする
0345nobodyさん
04/05/09 13:54ID:???っていうかcookieは全部js操作でいい
0346nobodyさん
04/05/09 17:57ID:???0347nobodyさん
04/05/18 05:37ID:???0348nobodyさん
04/05/18 21:17ID:???0349nobodyさん
04/05/25 05:52ID:8qS/bgdwなんで16をかけたり、4ビットシフトしたりするのかが
わからないんです。
あれはいったい何をしてるんでしょう。
ググってもググっても何も出てこないので。。。。
0350nobodyさん
04/05/25 06:22ID:???0351nobodyさん
04/05/25 16:56ID:???ググり方が足りないだけっちょ。
ttp://sometime.minidns.net/~ccgi/decode_encode.html
より引用
> "%xy"という3バイトの文字列を16進数に変換する処理としては、
> 2バイト目を0x10倍(0x10をかけるか、4ビット左シフト)して3バイト
> 目を加える、という処理方法が有名ですが、
0352nobodyさん
04/05/26 01:19ID:BPDOKhgcサンクスです。
ググり方が足りない。。。。
反省します。。。。。
0353nobodyさん
04/05/30 11:50ID:AsPEp7PVこのようにweb用cgiを作るための便利な定番ライブラリって何かありますか?
0354nobodyさん
04/05/30 13:23ID:???c++ならcgiccってのが上のほうに紹介あった気がする。
http://mm.apache.or.jp/pipermail/apache00-01/2000-December/002076.html
0355nobodyさん
04/05/30 13:41ID:???まいっちんぐ
0356nobodyさん
04/05/30 21:39ID:???cgixx - BSD Licenseだそうだ。これから試してみるべ。
0357nobodyさん
04/05/30 22:13ID:???aaacafeで使えます。
D言語用に作ったのですが、c,c++も動きます。c,c++だけにしたければオプションでそうできます。
http://www.wikiroom.com/sakurai/?freebsd%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB
参考にしてください。
どっかデッカイデータ置いていいところあればバイナリでも配布できる気もするけど、
自分はもってないので、がんばってインストールしてみてください。
もうちょっと、手軽にクロスコンパイラが手に入れば、なぁ。
Linux版も似たような感じで作れると思いますがまだやっていません。
では。
0358nobodyさん
04/05/30 23:37ID:???どうやったら、いいのか考えたら。
1.どっかデッカイデータを入れさせてくれるサイトを探す。Vectorとか。
問題はバイナリデータをメールで送るんだったような記憶がある。
規約読めってかんじだな。
2.P2Pで配信しちゃう。問題はちゃんと検索に引っかかってくれるかどうか。
やったことないのでわからん。
3.ソースフォージみたいなのに登録しておかせてもらう。
なんか、敷居高そうなのが問題ありかなぁ。
あと、ライセンスとかどうなるんだか、よーわからん。cygwinで作ったクロスコンパイラ
のライセンスはどうしたらいいんだろうって問題もある。
この辺の問題をクリアしてあると、だいぶ普及するんじゃないかなぁ。
0359nobodyさん
04/05/31 04:22ID:???ぐっじょーぶ!!
ソースアップしてコンパイル結果のバイナリ、ダウソできるような
鯖たてたらどうだろ?自分で環境用意できない人には重宝するかも。
0360357
04/05/31 20:55ID:???それは危険だと思います。aaacafeはgccをcgiで動かせるそうですが。
危険を無視すれば面白いですよね。会員認証付きで、作ることになりますね。
アクティブXでeclipseをブラウザに取り込んで、cvsに入って、ぽいぽいと。
クロスコンパイラのバイナリ配信を可能にしました。
http://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用も作ろうと思いますが先人の知恵があるのでこれ理解してからにしようと思っていますが。
インストール手順もずっと楽になりました。
ただ、これで、問題のあるプログラムは作らないでくださいね。
0361nobodyさん
04/05/31 21:54ID:???0362357
04/06/01 08:59ID:???Dならあるですぞ。Diki。
0363357
04/06/01 09:01ID:???http://ciki.nostdal.net/cgi-bin/ciki
C++でできてるみたいですね。
0364360
04/06/02 09:37ID:???でも、やっぱり危険だと思うし、自分で用意できない。
間違えて、無限ループされても困る。
wikiライクなエディタ付きwebベース開発環境を妄想してます。
能力がついて来てないのですが。
とりあえず、perlでできる事がdでもできてしまう
環境を作ることには意義があると思っています。
0365nobodyさん
04/06/05 01:01ID:???なんとなくそう思っただけです。
0367nobodyさん
04/06/08 00:25ID:???データ構造にはstd::list使ったけど
0368nobodyさん
04/06/08 23:58ID:nLqW4woP0369nobodyさん
04/06/09 00:14ID:???0370nobodyさん
04/06/09 11:22ID:???なんかメリットあるから使ってるんでしょうかね。
0371nobodyさん
04/06/09 23:29ID:???要件がはっきりしてるからこそ成せる技なんだろうけど。
0372nobodyさん
04/06/10 02:01ID:???>http://ash.jp/db/
この言葉を100%信用しても大丈夫なのかな。
0373nobodyさん
04/06/10 14:20ID:???どちらが速いんでしょうな。と思うD房でした。リンク先も読まずに、適当な発言。
0374nobodyさん
04/06/11 19:53ID:???0375nobodyさん
04/06/12 00:29ID:???そこ見てみたけど、言葉使いがモニョモニョしてるな。本人は分かってるんだろうけど、
分かってない人のために書いたら、ちょっと不思議な文章になりました、って感じがする。
Cで高速にアクセス出来るのは確かだが、ヘタレなコードなら遅くなるし、最も高速に
アクセスしたければアセンブラで組むだろう(実用的な意味はほとんど無いが)。
だから、厳密に言えば「最も高速」イコール Cではないのだが、一般的に言えば
「そう言って差し支えない」レベルの話だ、ということだろう。
0376nobodyさん
04/06/12 01:10ID:???フォーム受け取り系で使ってるが恐ろしく速い。
ブラウザ上の感触が10行くらいのプレーンテキストを読んだ感じに似てる。
おなじ処理をC++/CGIで試したがやはり最初のコストがでかいのでモタつく。
0377nobodyさん
04/07/06 06:41ID:???0378nobodyさん
04/08/09 18:38ID:uDC/dB7t0379nobodyさん
04/09/07 08:23ID:???(CGI.pm)にあたるものがライブラリで用意されてないのが
痛い。あと、jcode.pl(Jcode.pm)。
定番のcgi.cとかjcode.cてないんでしょうか。
0380nobodyさん
04/09/07 08:31ID:???>ライブラリで用意されてないのが痛い。
藻前が探索能力がないのが痛い。
CGIのライブラリも日本語変換のライブラリもググれば出てくる。
それにCでCGIを作る様なヤツは、自分専用CGIライブラリくらい作る。
0381nobodyさん
04/09/07 09:01ID:???たいていなんでも揃ってるし。
探せないやつが痛いのは間違いない!
0382nobodyさん
04/09/07 09:03ID:???即レス多謝です。ありますた。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作ってみまつ。
0383nobodyさん
04/09/07 09:06ID:???ども、結構、あるんですね。
C/C++言語によるCGIプログラミングの設計入門(ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/)
が参考になりそう。よし、やるど。
0384上級者
04/09/07 14:32ID:BeqquvBtブラウザでLINUXPASSWORDを変えたいのですが
どうしたらいいのでしょうか?
LINKX シャドーパスワードなどあって
複雑でわかりません・・・
どうか教えてください
お願いします
0387nobodyさん
04/09/07 16:10ID:???webminでhttps://localhost:10000/にアクセス。
以上。
0389nobodyさん
04/09/07 16:34ID:???C++になるとまだマシだけど。C++用の便利なライブラリって知らない?
正規表現とかあるんだろ
0392nobodyさん
04/09/08 09:12ID:???dyaregexp.hはboostより軽いちゅうわな。
ttp://hp.vector.co.jp/authors/VA028375/junkbox/dyaregexp.html
0393nobodyさん
04/09/08 10:37ID:???0394nobodyさん
04/09/08 12:24ID:???0395nobodyさん
04/09/08 15:14ID:???この知名度はヤバイ
0396nobodyさん
04/09/08 15:18ID:???0397nobodyさん
04/09/08 23:56ID:???http://www.cgicc.org/
0398nobodyさん
04/11/08 18:55:43ID:???ttp://labo.cherrybooks.net/
0399nobodyさん
04/11/09 08:58:35ID:???0400nobodyさん
04/11/13 03:53:32ID:???0401nobodyさん
04/11/22 14:44:59ID:???0404nobodyさん
04/11/23 00:02:35ID:???仕事しろ!!
0405nobodyさん
04/12/14 17:59:04ID:upKknTNA宣伝の発見者の発見者の発見者を発見
0406402
04/12/14 23:08:12ID:???いいのかな…
0407nobodyさん
04/12/15 01:51:06ID:???0408nobodyさん
04/12/16 23:30:11ID:???Xサーバ
0409nobodyさん
04/12/17 01:56:16ID:???0410nobodyさん
04/12/27 15:06:04ID:2ZZk8VkA0411nobodyさん
04/12/27 17:17:19ID:???0413nobodyさん
04/12/31 11:29:26ID:???WINアプリがUNIXで動かないのは知ってるんですけど、なんとかならないですかね…
クロスコンパイラは都市伝説、PCはPen200、64MBのノートだからUNIX系OSはボツ…
0414nobodyさん
04/12/31 16:55:12ID:???GUIは苦しいかもしれないけどね。
0415nobodyさん
04/12/31 17:27:43ID:???0416nobodyさん
05/01/02 13:12:22ID:???藻前はPerlでも使っとけ
0417nobodyさん
05/01/02 15:32:49ID:???0418nobodyさん
05/01/02 22:40:11ID:???0419nobodyさん
05/01/02 23:07:18ID:???0421nobodyさん
05/01/20 11:30:37ID:???環境は自鯖仕様でWin2K+Apache2+VisualC++7
GUIならではの開発環境でデバッグが簡単になる方法ってあるんですかね?
自分はVC6使ってたのでVC7の.netによる恩恵がよるわかりません;;
実行ファイルをCGIとして動かしてVCのデバッグトレース機能なんてできます?
用は実行ファイルの出力先にttp://hoge.com/abc.exeというのをGUIでデバックとか・・
UNIXは知らんのですがWinsockを利用して細かいことしようとすると
画面出力で print "ENV= なんてしてるもので作業効率最悪。
どっちかとVCスレの質問かもしれませんがすまそ・・
あと上げてすんま孫
0422nobodyさん
05/01/20 12:35:15ID:???おにぎりの具で言うと何?
0424nobodyさん
05/01/21 01:48:24ID:???C++でCGIはアリかもね
0425nobodyさん
05/01/29 14:17:48ID:???0426nobodyさん
05/01/30 00:03:16ID:???じゃなくて、buffer overflowだと思う。
0427nobodyさん
05/01/30 11:45:02ID:???でも、Cでもバッファオーバーフロー対策なんて面倒という程大層なものじゃないが…
0428nobodyさん
05/01/30 18:51:23ID:???逆に、「C++だからバッファオーバーフローの心配はあまりない」
等と言う人の作ったものの方が、よっぽど危険だよ。
0429nobodyさん
2005/04/03(日) 17:49:44ID:???やっぱり慣れた言語が一番楽チンだね。組むのもデバッグも。
0430nobodyさん
2005/04/03(日) 22:52:40ID:???0431nobodyさん
2005/10/07(金) 11:12:03ID:???0432nobodyさん
2005/10/11(火) 02:40:04ID:???0433nobodyさん
2005/10/17(月) 16:43:58ID:???俺はとある企業で5年ほど、CのCGI開発をしていたよ。
某陸√系のサイトはほとんどがCのCGIで動いてるし。
相当無理なことやってるけど、相当無理ができることも事実だったりする。
0434nobodyさん
2005/10/25(火) 00:31:01ID:???0435nobodyさん
2005/11/03(木) 12:08:29ID:???ディレクトリ一覧をサブディレクトリまで
取得して、htmlタグを付与して出力するとか考えとるんですが。
perlだとおそいorz
0436nobodyさん
2005/11/03(木) 14:26:14ID:???キャッシュくらいしろ。
0438nobodyさん
2006/02/23(木) 13:35:40ID:oh1e7jqDかれこれ10年ぐらいCでWebアプリの開発やってる。
いろんなライブラリを開発してたら、ソースが2MBにもなってしまった。
このライブラリだけでCGIに必要な機能はほぼ提供できるところまで来た。
PHPやPerlと変わらないレベルで開発できる。
このライブラリを公開したら面白いことになりそうだけど、
企業秘密満載だから、さすがに無理か。
0441nobodyさん
2006/05/06(土) 20:21:57ID:FWiKF0Gu>>企業秘密満載だから、さすがに無理か。
CPANとかある方がCからみたら異質なんだろうな。
一からライブラリ作るのは面倒だからAPRでもつかってみるかな。
0442nobodyさん
2006/06/04(日) 14:34:28ID:???そろそろ基本的な所だけでも共有しないか?
0443nobodyさん
2006/06/04(日) 16:22:13ID:???0444nobodyさん
2006/06/07(水) 05:48:07ID:???昔のヤツをひっくり返して見つかったらアップしてみる。
0445nobodyさん
2006/06/07(水) 14:16:56ID:???基本的なライブラリの共有と並行して、
どうすればC言語でcgiが書けるのかという基本の解説がいるね。
hello worldのC言語cgi版みたいなの。
0446nobodyさん
2006/06/08(木) 20:50:36ID:???だけで、
<HTML>
<BODY>
Hello World!
</BODY>
</HTML>
ぐらいは、生成してくれるとかさ。
0448nobodyさん
2006/06/09(金) 16:12:46ID:mYrnmPP60449nobodyさん
2006/06/10(土) 08:37:10ID:???stdio.hには無かった。
0450nobodyさん
2006/06/11(日) 02:28:25ID:???TCP/IPの通信部分から書かなきゃダメかなぁ?
0452nobodyさん
2006/06/11(日) 09:10:11ID:???ドキュメントぐらい読んだら?
0453nobodyさん
2006/06/11(日) 10:43:01ID:???thx!!
0454nobodyさん
2006/06/18(日) 20:19:39ID:???You don't have permission to access /index.cgi on this server.
っていわれてうごかないんだ。
httpd.confに
Options ExecCGI
AddType application/x-httpd-cgi .cgi
って記述してるし、パーミッションも755になってるのにどうして?
0455nobodyさん
2006/06/19(月) 00:00:15ID:???SELinuxとかどうなってる?
使ってないの前提として、パーミッションてどこのパーミッションだ?
ディレクトリの方はどうなってる?
所有権は?
迷ったら777試せ
0456454
2006/06/20(火) 11:17:11ID:???Windowsのxampp上では動くのに・・・
777もやってみたけどダメだった
所有権は777だから別に違っても大丈夫なはず
ディレクトリは見てなかったけど同ディレクトリ以下の
phpは走るし大丈夫なはずじゃ・・・あ
帰ったら試したいことが出来ました。
まだ解決してないけど>>455さんまりがとう('∀`)
0457nobodyさん
2006/08/06(日) 17:59:11ID:???ぐぐったらウェブオブジェクト4.5とか出て来たけど、これはマカ専用?
0458nobodyさん
2006/10/20(金) 15:32:14ID:???使ってる企業は多いだろうけど、
目的の一つとしてソースをクライアントに見られずに済む
というのがあるだろうから、どこも非公開なんだと思う。
0460nobodyさん
2007/04/30(月) 03:27:37ID:???Cだと
たしかに作業量は多いね。
スクリプト系の方がいいのかな。
0461nobodyさん
2007/07/23(月) 21:41:06ID:b9YG4RnE最近、Cで書かれた通販システムを見かけたよ。
0462nobodyさん
2007/07/24(火) 09:29:08ID:???$body = preg_replace('/([0-9]+)/', $hoge_array[\\1], $body);
echo $body;
で「¥」が使えませんってエラーがでるけど、エラーをひょうじしなければ目的の結果は得られる……
どうやってエラーださないようにするか…
0463nobodyさん
2007/11/14(水) 03:29:16ID:???0464nobodyさん
2008/01/08(火) 20:51:35ID:JKoPEtVY0465nobodyさん
2008/01/11(金) 00:42:29ID:???int main()
{
printf("Content-Type: text/html\n\n");
printf("<HTML><BODY>\n");
printf("保守\n");
printf("</BODY></HTML>\n");
return 0;
}
0466nobodyさん
2008/01/28(月) 15:21:41ID:???0467nobodyさん
2008/03/05(水) 00:20:30ID:SOAastXQ無駄?
0468nobodyさん
2008/03/05(水) 03:04:37ID:???かなり大変だという覚悟があるならどうぞ。
自作ライブラリを既に持ってる人じゃないと、
一般的な用途ではメリットは少ないかも。
0469nobodyさん
2008/03/06(木) 01:30:58ID:???大変そうだけど
楽しそうだからやってみようかな
しかしCの人は優しい人が多い気がする
0470nobodyさん
2008/03/09(日) 17:09:46ID:???考えられね;
0471nobodyさん
2008/06/10(火) 14:33:36ID:???とりあえず出力なんだけど、printfとかのf系出力は、stdout
に出せばうまくいくね。でもwrite(fileno(stdout),...はダメみたいだな。
とりあえず今日まで勉強したまとめ。
標準系
content-typeとかのmime header出力\n\n
本文
return 0;
異常系
printf( "status: 番号\n\n");
本文
exit(0);
0472nobodyさん
2008/06/11(水) 20:03:02ID:???エラーの出し方。
printf( "status: 404....\n\n");
0473nobodyさん
2008/06/12(木) 07:23:28ID:???じゃー、私も一つ。
セグメンテーション違反などでCGIが落ちて、
どこで落ちてるか分からない時は、
デバッグ用の表示と fflush(stdout); をちょくちょく実行すると良い。
0474nobodyさん
2008/06/13(金) 16:10:07ID:???なるほどですね。
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でもパフォーマンスあがるかも。
0475普及された人
2009/03/18(水) 02:24:13ID:moAFEnFyC -> 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
特徴として言語自体の速度差が順位を決める
0476普及された人
2009/03/18(水) 02:25:24ID:moAFEnFyC -> 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の洗練された完成度の高さが伺える
0477普及された人
2009/03/18(水) 02:25:58ID:moAFEnFyC -> 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
特徴として、動作の前段階のメモリ上で動作可能な状態になるまでの速度差(レスポンスの良さ)が順位を決める
0478普及された人
2009/03/18(水) 02:26:35ID:moAFEnFyC -> 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
特徴として、提供方法にかなり影響される
0479普及された人
2009/03/18(水) 02:27:14ID:moAFEnFyC -> 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設定&モジュール起動&コード変更)
0480普及された人
2009/03/18(水) 02:28:00ID:moAFEnFymod_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 (モジュール化の手間がかかる)
0481普及された人
2009/03/18(水) 02:29:05ID:moAFEnFy速度やサーバ負荷の観点から、ノーマルな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忘れてました。
0482nobodyさん
2009/03/18(水) 08:07:29ID:???0483普及された人
2009/03/18(水) 14:10:55ID:XMWgki/Qメモリと同等レベルの速度がでるようになれば、
ノーマルCGIもありだと思います。
現在でもRAM Disk化すればそれは実現できます。
特にCPU負荷の大きい処理ではノーマルCGIでも
C言語の選択は効果的です。
それでも、毎回ストレージにアクセスして、
プログラムを読み込み、プロセスを生成し、
実行後プロセスを破棄するノーマルCGIよりも、
プロセス生成済みの状態で、メモリに常駐して、
逐次再利用可能状態でプロセスの破棄が必要の
ないFastCGIの方が相当レスポンスが良いし、
ストレージに全くアクセスせずに動作するし、
プロセス生成や破棄のCPU資源を必要としないので
色々な意味でサーバ負荷も激減するので、
より良い選択肢だと思います。
0484普及された人
2009/03/18(水) 14:11:37ID:XMWgki/Q(日本のサイトでは情報が全くといっていい
ほどないので私は苦労しましたが、手順自体
は簡単です)にできるチューニングですので、
MyServerを持っていて、C言語でCGIを作って
いる人はやるべきだと思います。
PerlならFastCGIよりSpeedyCGIの方がより良い
選択肢だと思いますし、激重のRubyの場合は
FastCGIは必須と言ってもいいでしょう。
moduleタイプはWebServer(apacheなどの
プログラムの方のことです)内部で動作させる
ので、より高速ですが、プログラムのバグが
WebServer全体に影響しますので、危険度を考え
れば、選択肢からはずした方が無難に思えます。
CGIタイプの方が間違いなく絶対に安全です。
0485普及された人
2009/03/18(水) 14:14:04ID:XMWgki/Qサーバサイドプログラミングの中で最も高速
かつ安全な、まさに頂点に立つ方式だと考えます。
もちろん今の時代でC言語が使えるということは、
バッファオーバーフローの回避やコード部分に
おけるアルゴリズムの最適化などができることが
最低限の必要条件だと思いますが。
そうでなければ、高速かつ安全とは言えませんので。
0486普及された人
2009/03/18(水) 14:18:12ID:XMWgki/Q0487nobodyさん
2009/03/18(水) 20:57:18ID:???0488nobodyさん
2009/03/20(金) 05:46:26ID:???メモリ使用量や実効速度が速いというのは変。
あとプロセスを起動するたびに毎回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
0489nobodyさん
2009/03/20(金) 05:50:52ID:???そのCGIでtimeを測ってみても、↓の通り。
ソースコードで2.2MB、バイナリで350KBとかなり大物だけど、
それでもphpの実行バイナリ3Mとかと比べれば、軽いもんだね。
real 0m0.001s
user 0m0.001s
sys 0m0.000s
0490普及された人
2009/03/21(土) 12:48:40ID:yqEMcysT>CGI + C より CGI + Perl / Python / Ruby の方がメモリ使用量や実効速度が速いというのは変。
その通りでした。
間違えて記載してしまいました。
実際は少なくとも CGI + Perl よりも全て上にランキングされます。
FastCGI + ? に関しては状況によるかと思いますが。
>あとプロセスを起動するたびに毎回HDDにアクセスとかありえない。
>キャッシュに残ってるよ。
OSやハードディスクの行うキャッシュに関しては、他の要因で追い出されることが考えられますので、無視して記載しました。
それまで入れてしまうと、CGI自体の動作やFastCGI自体の動作やSpeedyCGI自体の動作やmodule型自体の動作の説明ではなくなってしまいますので。
CGI→エグゼキュートやインタプリタ+スクリプトをストレージから読み込み実行
FastCGI→エグゼキュートやインタプリタ+スクリプトをプロセスとしてメモリに常駐させそれを実行
SpeedyCGI→バイトコードをプロセスとしてメモリに常駐させそれを実行
module型→エグゼキュートやインタプリタをWebServerのModuleとして組み込みメモリに常駐させ、スクリプトはストレージから読み込み実行
という風にそれぞれの機能を説明したかったのでそう記載しました。
0491nobodyさん
2009/03/21(土) 15:47:08ID:???なるほど。
私のCGIもapache moduleかFastCGIにしたいんだけど、
CGI専用にAPI開発したから、メモリ解放が手抜きすぎて無理だw
0492普及された人
2009/03/21(土) 21:30:03ID:yqEMcysTでも、それだけの実力者なら、時間は多少かかるものの簡単にできるのではと思います。
私の場合は、最初はプログラムの中でFastCGI仕様にしようとやっていたのですが修正が多すぎたので、main関数自体を別関数に変えてFastCGI仕様にしたらかなり楽に解決できました。
外部変数さえなければ、この技(というほどのものでもないですが)は有効だと思います。
apache moduleとして組み込むのは、一人で開発してますので、チェック機構(自分自身)に信頼がおけないのでやらないことにしました。
C言語で作る場合、FastCGIとmodule型は速度的にそれほど大差がない(処理速度は同じで、結果をWebServerプロセスに渡す渡し方の差しかない)ので、どちらでも良いのでしたらFastCGIを私はお勧めします。
スクリプト言語で組むなら、圧倒的にSpeedyCGIが抜きん出て、FastCGIのスクリプトを常駐させるアドバンテージとmodule型のスレッド通信のアドバンテージが相殺してあまり大差ないようですが。
いずれにしても、C言語でCGIが組めるのは(その根性があることこそが)大きなアドバンテージですので、お互いに頑張って良いものを作って普及させましょう!
0493nobodyさん
2009/03/22(日) 04:05:46ID:???> 相当大きなものなのでしょうか?
そだねー。
フォーム受け取り、XML-RPC、クッキー、
MD5、各種暗号復元化、base64、文字コード変換、絵文字、
いろいろなDBに対応したモデル、それのコントローラ、HTML埋込ビュー、
画像処理、セッション、ユーザ処理、画像認証、各種ユーティリティとかあるよ。
いくつかはUNIXでメジャーなAPIの呼び出しで実現してる。
もう設計からして、メモリ解放を前提としてないから、
もしやるとしたら、参照カウンタ+ガベージコレクションの実装かな。
0494普及された人
2009/03/22(日) 17:50:13ID:uHOLJ9Dp素晴らしい財産の数々、驚きました。
確かに、これら全てを改変するというのは重労働ですね。
でも、それ以前にこれらを作ってきたことが、とてつもない重労働です。
私には、高い品質で世に(無償)提供したいものがありますので、いくつかのものは作りましたが、かなり多くのそういった財産を作っていかないといけません。
今まで、492さんがやってこられた重労働です。
それをやることに比べたら、一つ一つのコードのメモリ開放型への変更は、基本的にはオブジェクト指向でないC言語で、これまでやってきた492さんにとっては、克服できるのではないでしょうか。
module型やFastCGI用にするとなると、確かにそれ専用で設計した方が良いものが結構ありますので、この際せっかくですので、一括でドン!ではなく、後世に残る財産と思ってチマチマやってみてはいかがでしょうか?
これだけできる人ならきっとすぐにできると思います。
私も始めた当初は、スクリプト言語で同じものを作る100倍以上の時間がかかっていましたが、今では2倍程度の時間しかかかりません。
せっかくのC言語でCGIですので、より高い品質のものを期待しています。
・・・というか、492さんは全盛期のYahoo!にでも勤めてた(る?)のでしょうか???
0495nobodyさん
2009/03/23(月) 02:32:56ID:???私もこのAPIをもうちょい作り込んで、オープンソースででも公開したいんですが、
すでにいくつかの大手サイトで使っちゃってるので、
ソース公開してセキュリティホールが見つかったら怖いので、公開に踏み切れないw
> ・・・というか、492さんは全盛期のYahoo!にでも勤めてた(る?)のでしょうか???
ずっとフリーで活動してますよ。
でも最近は仕事が激減して、暇を持てあまし中 orz
0496nobodyさん
2009/03/23(月) 17:53:50ID:???理解できなくて移行をためらっているので、もし良ければ質問に答えてもらえるとありがたいです。
CGIをFastCGIにすると、プロセスがメモリに常駐してFCGI_Acceptのループでリクエスト待ちになる
みたいだけど、このとき複数のリクエストが同時に来たらどう対応されるの?
1. 一つのFastCGIのプロセスで順番に処理される
2. FastCGIのプロセスが新たに立ち上げられて、並行して処理される
"1" ならアップローダーみたいな処理に時間のかかるものにはFastCGIは向かないって認識でいいのかな?
(そもそも処理に時間がかかるなら起動コストの影響は少ないからノーマルCGIでいいのだろうけど)
"2" ならせっかく常駐するのだから、データの内容をメモリにキャッシュして高速化しようとかすると、
複数立ち上げられたときにメモリを大量に消費しちゃうのでやらないほうがいいのかな?
試してみればいいのだろうけど、FastCGIに興味はあるけど今のところはC言語CGIだけでもCPU負荷で
困ることはなかったので、環境構築するところまでは踏み切れずにいました(^^;
0497nobodyさん
2009/03/25(水) 15:31:05ID:???なければ立ち上げるってだけ。
プロセスの生死自体は親が握っていて、同じインスタンスが同時に動くことがある
ってのを覚えておけば、データをメモリにおいて使いまわすことは可能。
っていうかLinuxとかのOS標準のdevパッケージを使うなら、Hello, worldなcgi自体は
環境構築含めて15分もあれば出来るので、めんどくさがらず試せばよろしい。
0498普及された人
2009/03/26(木) 22:41:51ID:4YbFu+ijこれだけの実力者が暇を持て余しているとは、世の中狂っています。
これだけの実力者なら凡人がRubyで3000ステップの素晴らしいプログラムを作る時間で、10000ステップの同等の機能の素晴らしいプログラムを作るでしょうに。
早く、プログラマのフリーエージェント的な制度が確率すると良いと思います。
力のある人が、それなりの報酬を得られることは必要です。
それがなければ、努力もせずダラダラとIT業界に執着する人が増えるばかりです。
オープンソース化できるのなら是非してもらいたいです!
それこそC言語でCGIの普及になります。
> ソース公開してセキュリティホールが見つかったら怖いので、公開に踏み切れないw
だからこそオープンソースで良いのではないでしょうか?
一人の力には限界がある。
だからこそ、みんなの目で見てもし穴があるのなら、みんなで埋めていけば良いのだと思います。
完璧なものを公開して、威張るためのものがオープンソースではないと思います。
0499普及された人
2009/03/26(木) 22:43:44ID:4YbFu+ij私が自分自身で言っていることと相反するようですが、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/
0500nobodyさん
2009/03/27(金) 13:34:24ID:???ありがとうございます。おかげでFastCGIを使ったときのイメージが理解できました。
FastCGIは興味があったけど、試してみるのが面倒というよりは、試してみるとのめり込んでしまいそうで
目の前にあるやらないといけないことをおろそかにできない状況だったので試せなかったのです。
元々はアセンブラでプログラムを組むのが趣味だったような人間ですので、手間よりも高速化が好きですから
今後は少しずつFastCGIも利用していきたいと思います。
0501nobodyさん
2009/03/31(火) 09:58:41ID:???高速化にこだわるなら、自分でアプリケーションサーバ書くのがいいのでは
Apache臭はするけど、libaprなんかを使えばOSポータブルなdl()とかスレッドとか
メモリプールとか基本データ構造とか入っててお得ですよ。
ま、それなりにデカいけどね。
0502普及された人
2009/03/31(火) 22:35:52ID:Tx3EmaFcCGI部分を作るだけでも創造を絶する時間がかかりますので、アプリケーションサーバから作り始めるのは大変です。
今は情報が出回っていますので、作るに無理なことはないとは思いますが、一人で仕事外の時間利用だけで考えると、私ですと5年以上はかかりそうです。
Webアプリ一つ作るのにそれは効率的ではありません。
それにlibaprは、別にWebアプリケーションが高速になるものでもありません。
遅くなる可能性はあるけれど、作るときに便利で楽になるAPIだと思います。
C++技術者でない純粋なC言語技術者は、あまり使わないAPIだと思います。
使わざるを得ないAPI以外は、基本的に存在を知らなければすぐに自作してしまいますので。
「C言語が使える」ということは、別段便利なAPIを使う必要がないということでもあります。
libaprでメモリプールしなくとも、必要な分だけスレッドを立てて、mallocやcallocだけでしっかりメモリ管理できるということでもあります。(時に失敗しますが)
おまけにlibaprのメモリプールは確保した領域をシステムに対して返却しないと記載されていましたので、逆にかなりコントロールしにくいAPIな気もします。
それだけの手間(時間)をかけ、なおかつメモリ周りも適当な設計で良いのなら、普通にC言語でApache module型Webアプリケーションでも組んだ方が楽で高速で良いのではないでしょうか?
0503nobodyさん
2009/04/01(水) 11:08:56ID:???5年って、アナタたぶん作ったことないから死ぬほど安全に見積もってるよね?
アプリケーションサーバって、そこまで作るの大変じゃないよ。やることは基本的に待つだけだし。
実際は余暇を二週間位でも最初のプロトタイプ位はできるんじゃ...
まぁ、既存の適当にかかれたCGIをスレッド対応にするのは骨がおれると思うけど。
libaprのメモリプールの返却云々については、apr_pool_create の第二引数参照。
作業とか、ループとかにサブプールを作って、必要なメモリはそこから確保して、
終わったらサブプールだけ開放するって感じで。
でも、確かにCGIじゃないのでもうやめます。
fastcgiもCGIじゃないのではって気するけど...
0504nobodyさん
2009/04/02(木) 22:00:32ID:???サーバ台数が抑えられるから、トータルコストが安くて済むような案件だね。
検索サーバとか、2chとか、アクセス数が多いサイトとかね。
0505普及された人
2009/04/04(土) 11:18:37ID:JlRZ3FIjはい、もちろん作ったことはありません。
それに、今までのところでは作る必要性も感じたことはありません。
私が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と同じと考えて良いと思います。
0506nobodyさん
2009/06/05(金) 15:35:04ID:???のtextをtestと打って
2時間もプログラム自体が丸ごと落ちてくる現象に悩まされた
鬱だ
0507nobodyさん
2009/06/08(月) 22:46:07ID:???0508nobodyさん
2009/08/20(木) 02:18:22ID:???ダウンロードサーバには結構いいです。
公開しよと思うんですがいいところはありますか?
CGIというか、必要な所にソース書けばいくらでも
Cで拡張できます。
0509nobodyさん
2010/01/23(土) 12:51:26ID:???DoS攻撃かと思うほどのアクセスかけてやってもC先生は華麗にさばく
しかしまあ、スピードは慣れる
開発はPerlなら普通にある、デコードとか自分でひいこら書くのがめんどくさい
特にヒアドキュメントと連想記憶は欲しかったな
連想記憶はなんとかつくったけど ヒアドキュメントないからPrintfの嵐になる
C++でもいいのかも知れんが なんか道具の大掛かりさに比べてやってる事が間違ってる感じは否めない
それにCのほうがやっぱ早いしメモリも少しで良い
費用対効果で言うとCに比べてちょっとだけ苦労が減る分の物が手に入るとは思えない
0510nobodyさん
2010/01/23(土) 13:03:42ID:???そんなにperlが好きか
0511nobodyさん
2010/01/23(土) 17:41:22ID:???printfはもってのほか
普通にテンプレートエンジン使うか作るかしろや
ClearSilverとかあるだろ
0512nobodyさん
2010/01/23(土) 18:23:11ID:???Cから利用するなら汎用的なテンプレートエンジン使うより、自分のサイトに特化したページ出力するのみなら
自分で書いた短いコードのほうが可読性も高いしバイナリも小さいし、ぜんぜん速いよ(仕組みはだいぶ真似さしてもらったけど)
もちろん規模にもよるから
いちいちそんなコード書いてられないほどサイトが巨大、複雑化したら考えるけど
ヒアドキュメントはつかってないよCだから
マクロでそれっぽいことはしてるけど
0513nobodyさん
2010/01/23(土) 18:46:19ID:???>printfはもってのほか
>テンプレートエンジン使うか作るかしろ
上でも言ったようにテンプレートエンジン的なものは作ってるけど
でもprintfなしでどうしろと? ぜんぶ一度メモリに入れてputs ?
そして使うなという理由は何?
ClearSilverだってprintfとかsprintfとか中できっと使われてると思うんだが
0514nobodyさん
2010/05/13(木) 15:17:05ID:Xm7v6t580515C言語でオラクル
2010/12/02(木) 16:28:59ID:eppaTORw30日間は只なので試してみたら、さくさく動いた。
アパッチの設定も簡単だった。でも、説明がアバウトすぎるかな!
ろじねこさーばーという名前だった。
今までの苦労は、一体なんだったんだろう。
0516nobodyさん
2010/12/07(火) 02:17:17ID:4Sc5N9W90517nobodyさん
2011/01/16(日) 06:23:38ID:???0518nobodyさん
2011/01/17(月) 15:11:49ID:???PHPだとなんかモジュールがどうとかでCGIより負荷が少ないって聞いたんだけど
0519nobodyさん
2011/01/17(月) 16:22:26ID:???0520nobodyさん
2011/03/10(木) 07:17:46.39ID:hTkK9cNu****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
http://sky.geocities.jp/ttl_ttl_ttl_pic/
NASMでC言語を作る NASMで高度な設計書類とNASMの簡単な利用方法のサイトです
C言語のHEADの作り方 DLLファイルの作り方が書いてあります
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
0521戦士カンガイバー ◆DMLinuxPbA
2011/04/30(土) 16:34:39.05ID:???0522CWLK2010
2011/07/05(火) 20:51:09.02ID:uC4ca/AsCGIで操作します。コード生成機能をいれたのでゴタゴタしてますがα版になりました。
使い方少々難しいですがいかがですか?
http://sourceforge.jp/projects/cwlk/
0523nobodyさん
2011/07/05(火) 21:23:31.64ID:???0524nobodyさん
2011/10/24(月) 11:24:39.84ID:???徐々にWEB フレームワークになっていき・・・
可搬性を考慮してインタプリタにしていき・・・
結果スクリプト言語に至る・・・と。
まさに車輪の開発。アホらし
0525nobodyさん
2011/12/04(日) 14:03:48.36ID:uP5znhXd例えばcgiのようにアクセスごとにphpやcなどが起動する仕組みから
いったん起動させておいて常駐させ、
リクエストごとに処理をさせる為の具体的なphp,c側の実装方法について
詳しい方いらっしゃいますか?
0526nobodyさん
2011/12/04(日) 16:46:29.57ID:uP5znhXdttp://www.dreamhope.net/soliloquies/webtec/
ここの住人だったのか。すげー面白い記事でした。
0527当日商品を出しました
2011/12/06(火) 00:55:02.17ID:GHsKaAnV4-7日到着します。
よろしくお願いします
店長:吉田 杏子
0870
http://xua.me/dSB
0528nobodyさん
2012/12/09(日) 01:11:22.01ID:???作り込んでるけど、HTTPプロトコルが面倒臭過ぎて嫌になる。
0529nobodyさん
2012/12/24(月) 20:37:21.15ID:C9oBUMu+■ このスレッドは過去ログ倉庫に格納されています