1 :
nobodyさん :
04/02/26 08:58 ID:GDAQuNNS
あ、スレッドナンバー入れるの忘れた。part 3かな?
>>2 C/C++統合スレだからPart1でいいよ
スクリプトを検索
相変わらず CGIどまりですか? apache module はやらないんですね…
次は C/C++ Webアプリ全般スレッド かな
>7 いつになることやら
9 :
nobodyさん :04/02/27 01:38 ID:qZWWODH+
#include <cgi>
#include <2c.h>
C/C++のネイティブ感がたまらん。
C++っていいよね。
前スレからC++がいいと言う人が何人かいますが そういう人はどんなコンパイラを使っているのでしょうか?
ふつうにgccじゃないの?
書くときは VC++ 2003。
CGI書くのにわざわざVC++使いますか?
MinGWのGCCは、std::wstring周りがうまくいかない希ガス
>>13 apache modle で blog とか 掲示板とか をつくったりするなら
web prog じゃないかなって思ったんだけどね
cのCGI動かす時、apacheの設定どうしてますか? perlのスクリプトと混在してると perlに送られてエラー500返されちゃうので困ってます。
( ゚д゚)ポカーン
尋ね方がおかしかったでしょうか。 それとも根本的な勘違いでしょうか。 後者なら出直して参ります。
スレ汚し申し訳ありません。 ”とんでもない勘違い”をしていました。 無事動作致しました。
CGIに不正入力はつき物だが その場合戻り値でmainまで報告するか、それともexitを使ってその場で終了か どっちがいいかの。
C++なら例外投げるヨロシ
Cで書いた CGI で画像を表示したいと思ってるんだが、どうもうまく行かない。 鯖は Windows の Apache、C で書いたテキストベースの CGI は問題無く動作してるのだが・・・。 CGI 本体はこんな↓感じ。 infile = fopen( filename, "rb" ); /* もちろんファイルネームは入れてあるよ */ if( NULL != infile ) { i = fread( rbuf, 1, SIZE, infile ); /* SIZE は画像ファイルのサイズだよ */ printf( "Content-Type: image/gif\n\n" ); setmode( _fileno( stdout ), _O_BINARY ); /* Windows だからこうする(涙) */ fwrite( rbuf, 1, SIZE, stdout ); setmode( _fileno( stdout ), _O_TEXT ); /* そして元に戻しておく */ fclose( infile ); } で、MIME タイプを書き出す printf だけをやめて、鯖 PC でこの CGI を直に実行して リダイレクトで画像ファイル作ると、ちゃんと出来てるんだな これが。 呼び出す時は何の変哲も無く img タグによる CGI 呼び出しなんだが、 バッテンしか表示されない・・・。 正直、行き詰まってます。どなたかお助けを・・・。
>>28 img じゃなくて ダイレクトにそのCGIを呼んだらどうなる?
30 :
28 :04/03/11 09:03 ID:???
ごめんなさい呼び出す HTMLが間違ってました吊ってきます・・・ あ、ちなみに上記のよーなソースで、ちゃんと出来ましたですよ。これで Cでも画像出すのはオッケー。
31 :
28 :04/03/11 09:05 ID:???
>>29 えとですね、MIMEタイプで imageにしちゃってるんで、imgタグでないと無理です、たぶん。
吐き出してる内容はバイナリなんで、MIMEタイプを textにするってワケにも行きませんし。
MIMEタイプで imageにしちゃってるんで、imgタグでないと無理
ブラウザのアドレス欄にそのCGIのURL入力でも表示できるだろ。
>>31 試してみた?
>>32 したっかぶりっこ?
MIMEがついてるんだからこそブラウザ側で判断してくれてちゃんと画像として表示されるよん
したっかぶりっこ?
37 :
34 :04/03/11 16:01 ID:???
38 :
28 :04/03/11 19:49 ID:???
>>29 あ、ダイレクトに、ってのは、ブラウザからって意味ですか・・・。
すみません、思い切り勘違いしてました。
(imgタグでない、他の方法で HTMLに記述しろ、という意味かと思ってました・・・ formとか)
試してませんが、たぶん出来ると思います。
>>33 、
>>34 、
>>36 さんの言ってる通りではないかと。
お騒がせしたです・・・。
39 :
sage :04/03/12 01:21 ID:vGYEPhj3
Web製作版から出直しな
書くとこ間違えた_| ̄|○
WindowsでLinux用バイナリを吐くことができる C++コンパイラってありますか?
>>41 答えにはならないけど、LiveCD使うといいのでは?
漏れはLinuxユーザだけど、FreeBSDのサーバで動かすために
FreeBSDのLiveCDを使ったらうまくいった
Lindowsじゃ無理?
CでCGI書くとき、filelockはどうやってます?
fcntl
guest guest/98
>48 mkdir
flock()
fcntl(2) flock(2) lockf(3)
resize.plの C版みたいなの知りませんか? ここ検索すれとか、何か情報キボン。 いちおうググってみたいけど、ロクなのが見つからない・・・ OTL
みたいけど ↓ みたけど
ロクなのが見つからない
58 :
nobodyさん :04/03/21 00:25 ID:NzuooVWx
いかりや長介さん、亡くなっちゃいましたね。 ご冥福をお祈り申し上げますです。
それはいいが なぜこのスレに書き込んだのかが、大きな問題だ。
60 :
nobodyさん :04/03/21 00:47 ID:h03qa3k8
63 :
61 :04/04/01 23:23 ID:???
64 :
nobodyさん :04/04/12 09:09 ID:/q6VLnQf
age
char AtoH( char c ){ if( ('0' <= c) && (c <= '9') ) return c - '0'; if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10; return 0; } // 特殊記号を変換する void form::Escape( char* src ) { if(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'; } } URLエンコード文字列をデコードする関数なんですが、 これがVC2003でうまく動かないんです(VC6ではできたのに)。 原因がわかる人がいらしたら教えてください。 VC2003はほとんど初期設定です。
( ゚д゚)ポカーン
67 :
65 :04/04/15 18:39 ID:???
自力解決しますた… お騒がせスマソ…
なんて過疎
CGI/1.2ドラフトを訳していたのですが、質問です。
http://cgi-spec.golux.com/cgi-120-00a.html 章8.2 のLocationに関する項目を読むと、絶対URIがスクリプトによって返されると、
サーバは'302 redirect' HTTP応答メッセージを発生させるだろう、とあります。
しかし、302はMoved Temporarilyで、307 がTemporary Redirectになります。
これは誤植と解してよいのでしょうか?
>>69 スレ違いな気もするけど…。
307コードがHTTP/1.1以降だからでは。
M$が不要と言うから
1月1日はドラフト記念日
このスレを活気付かせるにはどうしたらいいものか
>74 が C/C++ による CGI 用のフレームワークを作成してくださるそうです。
aprを積極的に利用してみるスレにしたら
巨大なクエリ来た時にどうするのが王道でしょうか
無視する
>>77 >>78 が正解でしょ。
より詳しく書くなら、まず「大量とは、どれだけなのか」を規定し、規定以上のは無視。って事で。
>>65 関係ないが
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
return 0;
}
↓
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
if('a'<=c)&&(c<='f')) return c-'a'+10;
return 0;
}
EzWeb機が%ffみたいに送ってくるから、後々のためにもこの方が。
>>77 if(atoi(getenv("CONTENT_LENGTH"))>=1024000) return 0;
char *buf = new char[atoi(getenv("CONTENT_LENGTH"))+1];
//あとは好きにしる
delete [] buf;
82 :
65 :04/05/06 18:38 ID:???
>81 あるんだそういうの サンクス ちなみに *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src ); ↓ *dst = AtoH(*++src) << 4; *dst = AtoH(*++src); dst++; にしたらうまくいったんすよ なんかやっぱMSだなと思た
>>82 dstの位置変わってないから
*dst = AtoH(*++src) << 4;
の意味がなくなってる気もするんだが。
*dst = AtoH(*++src) << 4;
*++dst = AtoH(*++src);
dst++;
とでもしないと、dstに下位4ビットだけを突っ込んでる気がしてならないんだが。
*dst += AtoH(*++src); だた
85 :
◆Ad8rdfdZgs :04/05/06 21:54 ID:mtQhCRig
>>84 あ、漏れの書いたのが間違ってた・・
こっちのほうがまずいw
納得
>>77 エラートラップ。
>>82 > *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
二箇所の*++srcのどちらが先に処理されるかは未定義。
>>65 >>82 >>86 も言ってるが、今はコンパイラが働き者だから、1行で済ます必要は無いと思うぜ・・・。
恥を忍んで言うが、漏れが *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src ); こんなの書こうとしたら、
数行になってしまう。でも間違いにくいから良いんだと思ってる。勝手に。
副作用とかいちいち憶えてらんないし・・・マクロ書く時に苦しむのもやだし。
>65 >なんかやっぱMSだなと思た 自分のバグを他人のせいにするな。
90 :
65 :04/05/09 16:10 ID:???
ごめn
91 :
nobodyさん :04/05/23 22:40 ID:Mos9rAOM
なんだかどうも、プログラムの引数に「=」の文字を入れると動作がおかしいのです。 というのは、 たとえば Perl の CGI で test.cgi?a=5 とすれば、$ENV{'QUERY_STRING'} の中身は "a=5" になるのに、 C で作った CGI (printfするだけのモノ) だと test.cgi?a=5 としても、main(int argc,char *argv[]) の argc が 1 で引数が受け取れてないのです。 test.cgi?a5 とすれば、argc は 2 になって、argv[1] の中身が "a5" になるのですが。 そういうわけで引数に「=」を使えない理由と対処をキボン願います。
92 :
91 :04/05/23 22:43 ID:???
ちなみに、自宅サーバで Apache HTTP Server 2.0.49 を使ってます。Apacheの設定に問題があるのかな…
釣り…か? Perlの$ENV{QUERY_STRING}に相当するものはstdlib.getenv("QUERY_STRING")なわけだが。
別にC言後とは関係ないけど引数で処理したかったら hoge.cgi?-hoge+true+-fuga+false などとすれば ./hoge.cgi -hoge true -fuga false こうなる あとはgetopt(3)でも使えばオプションの処理ができるかな まあ一般的ではないな
>>91 Cで作る CGI プログラムは、普通のコンソールアプリと基本的には同じだが、
main関数でもらえる「引数」と、CGI で渡される「引数」は、全くの別物だ。
main関数の「引数」は、コマンドラインで与えられるものだが、CGI の方は
サーバから環境変数を経由して与えられる。なので
>>93 が言ってる事を試してみそ。
>>93 釣りにしてはあまりにあまりな・・・・なので、さすがに釣りではないと思うよ。
96 :
91 :04/05/24 23:40 ID:???
>>93-95 なる。基本的なところを忘れてました。環境変数でしたね。
getenvでできましたです。ありがとうございました。
>>96 (・∀・) オメデトウ!コレカラモガンガッテイコウ!
POSTの場合は? ってゆうかそのあたりも含めて楽になるperlのCGIモジュールみたいなのとかあるんでしょうか?
GETも POSTも、環境変数渡しという点ではほとんど同じ。POSTの方がちょっぴり手間が多いだけ。 POSTの場合は、環境変数 CONTENT_LENGTHに、POSTされた文字列長が入っているので、 そのぶんだけ stdinから読み込む。簡単に書くとこんな感じ。 int i; char * env_p; env_p = getenv( "CONTENT_LENGTH" ); if( NULL == env_p ) { /* 何もないです */ } else { for( i = 0 ; i < atoi( env_p ) ; i ++ ) { /* ここで getchar とかする */ } } こういう定型処理をラクにするライブラリとかは、いろいろ出回ってるから探すが吉。
自分もその辺気になりつつも資料見つけられず躊躇してたんですが 挑戦してみようと思います。 /*ただスクリプトの時にはあまり気にしなかったメモリ管理とか不安もあります。 何かしら”C/C++ゆえに気をつけるべき事”とかあるんでしょうか?*/
C++はあまり詳しくないが、Cについて気を付けるべき事はたくさんありすぎて、とてもここでは書ききれないがな。 漏れが言えるのはこれくらい。レベル的にバラバラの事書いててスマソ。 ・取得したメモリリソースは必ず解放せよ ・変数の型には気を付けすぎるくらい気を付けよ(ロジック調べても分からんバグの原因になる) ・ポインタは理解して使え ・コンパイルするので、変数名は長くてもいい、分かりやすいものを! ・同じ理由で、コメントもしつこく書け ・同じ理由で、短く書こうとするな(バグの原因になる事がある) ・1つの関数を長くしすぎるな ・==演算子で定数と変数を比較する時は、定数を左辺に書け(間違って=にしてもすぐ分かる) ・プログラムテストは慎重に細心に、完璧を目指せ
C++でも入出力系はstdioのほうがやり易いと思う 小さいし
>>101 Cなら文字列操作とメモリ管理のライブラリをどこかから調達するか、
自作してから取り掛かった方がいいよ。
バッファオーバーフロー対策が一番面倒だから。
perlとかにあるsplit関数に当たるものがあると便利
>>102 ありがとうございます。
C/C++以外でも使えそうなTIPSが多くて参考になります。
慎重さは勿論のこと、ちょっとした工夫も大事と再認識しました。
>>104 こちらもありがとうございます。
まずはそういうライブラリを読むところから始めてみますね。
昔、Lispやっててperlのsplit関数自作したことあったな
108 :
nobodyさん :04/06/06 21:23 ID:NScYEbPc
jcode.plのようなものってありませんか?
iconv
110 :
nobodyさん :04/06/07 01:33 ID:H9Q5V/FE
C/C++/D用(ってかx86用)のアプリケーションサーバが出たら乗り換えますか? 関数、クラスの単体テストエンジンとかついたようなヤツで。
スタンドアローンて拡張性無いけど手軽なのよね
perlやphpに比べて生産性が低くて不利ですな。 mod_perlにスピードで負ける事もあるし。 mod_cobolとかあるのかしら
( ´_ゝ`)フーン
114 :
nobodyさん :04/06/27 18:25 ID:EhMRIfAG
すまん、CでCGI作るときに便利なライブラリとかってないかな。 探しても探してもでてこないんだが・・・
( ´,_ゝ`)プッ
116 :
nobodyさん :04/06/27 20:10 ID:EhMRIfAG
こんなに必死に頼んでいるのに教えてくれないなんて、 ここはひどいインターネットですね!
(・∀・)ニヤニヤ
2chだからある程度は割り切らないと
119 :
nobodyさん :04/06/27 20:43 ID:EhMRIfAG
// ここはひどい(ry のネタ知らない人がいるっぽ 探してもやっぱり見つからんです。
いい加減なやつしかいないスレにはいい加減に書き込めばいいんだよ
122 :
nobodyさん :04/06/28 16:49 ID:Mb32PIG4
webminなんかがどう関係あるんだろうと小一時間(ry
フォームのデコード&検索クラスがあればあとはどうでもいいけどね 所詮ラインプログラムだし
>>122 gnu.orgの人に聞いてくれたまえ。
gnu.orgの人も大変だな
126 :
nobodyさん :04/06/29 18:42 ID:iEl5sUlF
127 :
大学の宿題だけど意味不明、おしえてけろ :04/07/02 22:30 ID:rGD5/XCW
下記のフォローチャート教えて! 2進数の乗算 シフト演算と加算と減算の繰り返しによって2進数の乗算を行う。 条件 一、乗算と被乗算は符号なしの16ビット整数 二、乗算と被乗算以外の変数は32ビット整数 三、シフトは論理シフト(表記方法:左シフトは<、右シフトは>) 例、 X=X<1 Y=Y>1 参考 一、左シフト⇒nビットシフトは(2のn乗)倍になる 二、右シフト⇒nビットシフトは{1/(2のn乗)}倍になる 一般法則 一、乗数の2の0乗ビットが1の時、被乗数をそのまま加算し、 0の時は何もしない。 二、乗数の2のn乗ビットが1の時、被乗数をnビット左シフト して加算する。0の時は何もしない。 ( 開 始 ) | X = 被乗数 Y = 乗数 Z = 0 ←←乗算結果 |
ローカルルールくらい読んでくれな
129 :
大学の宿題だけど意味不明、おしえてけろ :04/07/02 22:45 ID:rGD5/XCW
下記のフォローチャート教えて! 図形の右90度回転 配列H[Y:1〜7][X:1〜7]は、図のような図形要素が 格納されてます。これを図2のように右に90度回転 した配列要素を配列I[Y:1〜7][X:1〜7]へ作成する。 図1 X軸 1 2 3 4 5 6 7 1■■■■■■■ 2 ■ y 3 ■ 軸 4 ■ ■■■ 5 ■ ■ 6 ■ ■ 7■■■■■■■ 図2 x軸 1 2 3 4 5 6 7 1■ ■ 2■■■■ ■ 3■ ■ 4■■■■■■■ 5■ ■ ■ 6■ ■ ■ 7■ ■
>>129 (Start)
↓
[回転処理]
↓
(End)
$gzip = '/bin/gzip/'; if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /gzip/ && $gzip ne ''){ print "Content-type: text/html;charset=Shift_JIS\n"; if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /x-gzip/){ print "Content-encoding: x-gzip\n\n"; }else{ print "Content-encoding: gzip\n\n"; } open(STDOUT,"| $gzip -1 -c"); }else{ print "Content-type: text/html;charset=Shift_JIS\n\n"; } これのC版はどうすればいいんですかね・・・?
( ゚д゚)ポカーン
133 :
nobodyさん :04/07/05 15:51 ID:/46odsg/
Cで画像のアップロードCGI作ってるんだけど、 データの取得の方法が分からんのよ。 if ( strcmp(method, "POST") == 0 ) { // コンテンツ長の取得 contentLength = getenv("CONTENT_LENGTH"); // バッファサイズの判定 if( atoi(contentLength) > LINE_BUFFER ) { // バッファサイズエラー exit(0); } fgets(Data, (int)contentLength, stdin); } これじゃDataには入らないの?
% man 3 fgets
136 :
nobodyさん :04/07/05 18:14 ID:/46odsg/
>multipart/form-data; boundary=----------hogehogeohogehoge >ってなってるはずだから読み込んだデータを分離する必要あるんじゃない? 色々と試した結果、データ分離前まではできました。 分離させんの大変そうだなぁ。
( ゚д゚)ポカーン
>>137 ageてまで何が言いたいのかわからん。
いいあるなら方法教えてよ。
教えて君ウザイ
いいあるなら
141 :
138 :04/07/05 21:38 ID:???
>>139-140 , -‐−-、 ヽ∧∧∧ // |
. /////_ハ ヽ< 釣れた!> ハ
レ//j け ,fjlリ / ∨∨V ヽ h. ゚l;
ハイイト、"ヮノハ // |::: j 。
/⌒ヽヾ'リ、 // ヾ、≦ '
. { j`ー' ハ // ヽ∧∧∧∧∧∧∨/
k〜'l レヘ. ,r'ス < 初めてなのに >
| ヽ \ ト、 ヽ-kヾソ < 釣れちゃった!>
. l \ `ー‐ゝ-〈/´ / ∨∨∨∨∨∨ヽ
l `ー-、___ノ
ハ ´ ̄` 〈/‐-、
stdinから丸呑みしてファイルにでも保存してみろ。
143 :
138 :04/07/05 23:42 ID:???
144 :
nobodyさん :04/07/06 08:43 ID:LzoVUw8w
CでCGIは既に古典的なんだから 知らない人の手助けでもせんと このスレの意味ないじゃん
% man 2 read % man 3 fread % man 3 fgets
ここは、そんな餌で俺がクマーなインターネッツですね
プログラム板へ書き込んだのですが放置されました。。(涙) マルチで申し訳ないですが再度書き込まさせていただきます。 この度RedHat7.3(@)からRedHat9(A)へ移行したのですが、 @で問題なく動作していたCGIがAの環境で一部動作しなくなりました。 //環境 @RedHat7.3 gcc-2.96-113 apache-1.3.27-2 ARedHat9 gcc-3.2-2-5 httpd-2.0.40-21.9 原因を調べていくとどうも日付計算部分がエラーを起こしているようです。 一般的な日付計算ですが何が問題なのか検討もつきません。 (ググッたのですが・・わかりませんでした。。gccが原因??) どなたか教えていただけないでしょうか?よろしくお願いいたします!! ※apache1.3.31でも同様の現象がおきました。。。 /*-----ソース一部抜粋------*/ #include <stdio.h> #include <time.h> struct tm*ptr; time_t lt; intNowYY, NowMM, NowDD; lt = time(NULL); ptr = localtime(&lt); NowYY = ptr->tm_year + 1900; NowMM =ptr->tm_mon + 1; NowDD = ptr->tm_mday; /*----------------------*/
機種依存文字使うなヴォケ
149 :
147 :04/07/06 11:50 ID:???
書き忘れましたが、Cで作っているプログラムです。コンパイル問題なく通ります。 apacheのエラーログを見ると”premature end of script headers”と出ているので どうもhtmlに出力時にCGIが死んでる見たいです。 同じ現象が出ている人も多いと勝手に思ってるのですが、私だけなんでしょうか?? ググっても perlのことばかりなんで・・・・
150 :
147 :04/07/06 11:53 ID:???
>>148 localtime(&lt);のことですか?
&を大文字で書かないと2ちゃんに書き込むときに
">"に変換されてしまうんで・・・
なんだ、ネタだったのか… 釣られちゃったよ orz
152 :
nobodyさん :04/07/06 12:07 ID:NBQAU1O/
CGIの出力でSSIを使いたいのですが 使えます?使ってる人いますか?
(´-`).。oO(アホか・・・)
154 :
152 :04/07/06 12:23 ID:NBQAU1O/
>>153 なんで?なんでアホなの??
サーバーがパースしてくれないから絶対使えないの??
そんな餌で俺がクマー(AA略
156 :
152 :04/07/06 12:27 ID:NBQAU1O/
マジな質問でも釣りとかいわれるスレなんだね・・・
それ以前にスレ違い
158 :
152 :04/07/06 12:33 ID:NBQAU1O/
なんで?CのCGIでSSIを出力したいんだよ? このスレジャン
こいつはCのCGIで出力するhtmlについてもここで聞くのだろうな・・・
160 :
152 :04/07/06 13:20 ID:NBQAU1O/
釣れますか?
162 :
152 :04/07/06 13:30 ID:NBQAU1O/
くだらない釣りすんなよ・・スレ汚しが・・・
このスレ、なんか臭いな
164 :
152 :04/07/06 13:34 ID:NBQAU1O/
お前が臭くしたんだよ・・・
165 :
147 :04/07/06 13:41 ID:???
>>151 さん
ネタじゃないんですよ。。本気で悩んでます。。
>>152 さん
SSIを使いたいというのはよくわからんのですが
特定のHTMLの一部分に数値等を表示させたいということでいいんですか?
localtime(<);
167 :
152 :04/07/06 14:11 ID:NBQAU1O/
>>165 <!--#include file="他のファイル.html" -->を使って他のhtml
ファイルを取り込んでブラウザーに出力できないかなって思ったんです。
SSIってhttpdがファイルをパースして結果を置き換えますよね・・・
なんで出力をパースさせればいいのかな??
CGIからの出力をパースさせるのはhttpdの設定(apacheなんでhttpd.conf)??
なんて考えてたんですけど実際はどうすればいいのかわからないので
質問してみたんです・・・・・
SSIの基本を理解してないならくだ質スレへどうぞ
169 :
152 :04/07/06 14:35 ID:NBQAU1O/
>>168 はあ?どこがわかってねえっていうんだよボケ!
つーかどこが理解してないかいえねえだろ?
トリアエズくだらねえツッコミばっか入れてるキモイてめえはこんりんざいだまってろ
アホ。
どうもならんな・・・ 己の無知に気がついていない
171 :
152 :04/07/06 14:45 ID:NBQAU1O/
何もいわないで適当に批判すれば頭がよくみられるんだなこのスレでは・・・
もう回答は得られないのだから好きに吠えていろ池沼
174 :
152 :04/07/06 15:03 ID:NBQAU1O/
147みたいなまともな人もいるんだけど、 172みたいなどうしようもない負け犬がわんわん吠えると とたんに堕スレになっちゃうな。
176 :
147 :04/07/06 15:45 ID:???
>>152 あんまりあつくなっても・・・・
SSIうんぬんではなくて
Cでパースして出力すればできるのでは?
AddType
178 :
fff :04/07/06 16:50 ID:???
>>147 とりあえずprintfとかでヘッダーを出力した後にfflushしておけばそのエラーは出ないかも。
180 :
179 :04/07/06 17:08 ID:???
というか、その前に落ちているのか。 おそらく問題は他にある。
ヘッダにいらんもん出力してるって分かってんだから プログラムが出力してる内容を見れば良いだけじゃない・・・
>>181 ヘッダを出力する前に落ちているだけだろ。馬鹿かお前は。
いやいや、違いますよ
>>149 を読んでください
すまそ誤爆った でしゃばってすまぬ
落ちてヘッダを出力していないから「premature end of script headers」になるんだよ。
CGIが出力するhtmlにSSIを書いても動きません。 はい終了。 方法はあるけど152みたいなやつには教えん。
少なくともapache 2.0.50で動くことは今確認できた
でも完全にスレ違いの話題だな
>>152 はこんなところで煽ってる暇があったら自分で調べろよヴォケ
188 :
147 :04/07/06 17:58 ID:???
179さん、黒死犬(魚かも)さん、187さん アドバイスありがとうございます。 プログラムの内容は、 @入力フォームのhtmlの数値を取り込み計算 A計算結果画面のhtmlに計算結果数値を埋め込んでいく という一般的なものなんです。 Time関数を使用している箇所を除くと表示できるのですが。。 187さんの言うとおりapacheの問題かもしれませんね。2.0.50で試してみます。 スレ違いで申し訳ありませんでした。
>>188 シェル上で擬似的なパラメータを渡してテストとかしないの?
>Time関数を使用している箇所を除くと表示できるのですが。。
そこまでわかっているのなら簡単なサンプルでデバッガのお世話
になるとか?
190 :
147 :04/07/06 18:11 ID:???
>>189 うっ・・おっしゃるとおりです。。
問題の部分のみで再度チェックいたします。
>>188 >>187 はSSIのことね
CGIが出力したSSIが動くということ
>>147 は
>>189 タンの書いた通り
まずコマンドラインから実行できるかどうかチェックすべき
あとは、ヘッダを出力する前に落ちているのであれば
原始的な方法だけど、ヘッダを出力する場所を変えてみるとか
最初にヘッダを出力した場合動くかどうか
>>188 機種依存文字を使うなと前にも言われただろ
>>169 こんな暴言吐く人に回答する義理も無いわけで。
漏れはスルーしてたけど、ここの住民さんは意外と優しいのだな・・・。
194 :
152 :04/07/07 08:18 ID:Zb/loxvw
>>176 そうですよね・・・SSIにこだわる理由はないですね・・・
冷静に考えたらオーバーヘットもあるしSSIを出力する意味ないですよね。
素直にCでパースします。ありがとうございました。
>>俺様に暴言を吐いた有象無象ども
おめえら使えねえんだよ、アホ。
たいした知識でもねえのに出し惜しみするチンカスは一生すっこんでろボケ。
なんだ、結局SSIで動かすことができなかったんだな(プ
196 :
152 :04/07/07 10:55 ID:Zb/loxvw
【厨房のための煽り煽られ講座】
言い返せないけど負けは認めたくない
→ ( ´,_ゝ`)プッ
→ 無知白痴は黙ってろ
→ 知能障害をおこす
→ 出来たけどお前には教えない(プ ←
>>152
まぁ夏だからしょうがないのか・・・
暑さはヒトをダメにする
200 :
nobodyさん :04/07/08 10:26 ID:073/5w7j
そもそも今時CでCGIというのが不自然なんだから 変なのが湧いてくるのは仕方がない。 Cの入門者用に掲示板程度のサンプルを提供するのは意味があるかもしれんが それ以上の高機能なものは大人しくperlかPHPで作ればいいんです。 CでCGIを開発出来ても誰も誉めてくれないし一銭にもならないのではないか? ,.. -―-- | ,.' ´ ``´  ̄ ``. .| ,. '´ , 、 .| / , l i ヽ \ .| / ./ /,' !ヽ ヽ ヽ. ヽ.| / / ./ l _⊥ヽ‐ヽ、'T''| |って書き込んだらC信者が何人か釣れるのカナ? {{ | | レ'! ヽ\_\,,-,‐-.| l l l | | |/Tハ |::f;;}|| !ヽN |、 | !` l:リ} ‐'‐'.| `!ヽN ヽ" `ー .| | | | `i - ..,.. '´''.| ! ! l,-┴/ハ | ヽ N,. '´,.=El=、、/|
【厨房のための煽り煽られ講座】
言い返せないけど負けは認めたくない
→ ( ´,_ゝ`)プッ
→ 無知白痴は黙ってろ
→ 知能障害をおこす
→ 出来たけどお前には教えない(プ ←
>>152 → 釣りを始める ←
>>200 (
>>152 )
C++っぽく・・・ bool urldecode(std::string &s){ //省略。} struct form_pair { string name; string value; }; istream &operator >>(istream &is,form_pair &fp) { string s; getline(is,s,'&'); if(is.fail() || is.bad()) return is; string::size_type pos = s.find('='); if(pos == string::npos) { fp.name = s; fp.value = ""; } else { fp.name = s.substr(0,pos); fp.value = s.substr(pos+1,s.length()-(pos+1)); } if(!(urldecode(fp.name) && urldecode(fp.value))) { is.setstate(ios::failbit); } return is; } typedef istream_iterator<form_pair> urldecode_iterator;
( ゚д゚)ポカーン
このスレもうだめぽ゚・(ノД`)・゚・。
なんか、もう、ぬるぽだな
207 :
名無しさん@そうだ選挙に行こう :04/07/11 17:20 ID:8T5rEfNa
保守
210 :
C言語がイイよね? :04/07/28 23:38 ID:UZklF3eT
CでURLエンコードするコードを考えてマス 文字列の中で2バイト文字だけ判別して 判別した文字を16進数にキャストしてやれば 出来ると思うのですが、具体的なコードが浮んできません。 ウマイコードあったら参考にさせてください。
ぬるぽ
C++( string 使いたいだけで )でCGIを組んでいましたが、 エラーログに malformed header from script. Bad header=\x1f\x8b\b: /home/****/hoge.cgi とでます。"Content-type: text/html; charset=EUC-JP\n" を出力する前に何も出力関係の関数は使っていません。 マシン負荷などに関係なくでます。 だいたいは正常に動作していますが、時たま程度のエラーですが気になります。 原因が解る方が居たら、お力を御貸し願いたい。 apache1.3.27、 gcc 2.95.2.1です。
ヘッダ後の改行は2回だがまさか…違うよなぁ。
で、当然、"\x1f\x8b"が何なのかはぐぐってみたんだよな?
>>214 の自己レス
gzipをpopenで出力してた。
mod_gzipにしたら解決しました。
Fast-CGIを利用すると、更に速くなるのかな。
むしろ使わないとPHPとかmod_perlより遅い。
221 :
nobodyさん :04/08/12 14:52 ID:PHf7JWmC
(・∀・)renice!
222 :
nobodyさん :04/08/14 15:00 ID:inflZLdK
>>220 まじで?なんでえ?
プロセス起動コスト
modではないPerlとかRubyよりは早い コードがへたれだとそれよりも遅い
( ゚д゚)ポカーン
言語の違いにおける速さの差は線形だけど、 アルゴリズムの差は簡単に対数以上になっちゃうからね
回るのは遅いけど何か書くと即効でレスが返ってくるんだよなここ 見てる奴は多いのかな
粘着がいるだけだろ
HPでCのCGIを使いたいのですが、 コンパイル時のコマンドは gcc -o test.cgi test.c でよいのでしょうか?
232 :
229 :04/08/15 12:39 ID:???
HPはホームページの略で使いましたが…紛らわしいですね。 ccは使えないんですが…
233 :
229 :04/08/15 13:24 ID:???
とりあえず gcc -o test.cgi test.c でコンパイルして テストしてみたのですが、エラーが出てしまいます。 パーミッションは755でcgi-binディレクトリにも入っているけど エラー500が出てしまいます。 また、ソースも問題ないと思うのですが… #include <stdio.h> int main(void) { printf("Content-type: text/html\n\n"); printf("Hello"); return 0; } 原因は何でしょうか?
( ゚д゚)ポカーン
エラーメッセージも書いてない香具師に釣られるなよ
>>235 Internal Server Errorと言う答えになんの意味があるというのだ。
\n -> \r\n\r\n
Windowsかよ
サーバと違うOSでコンパイルしてるんじゃないのか? テキストモードでうぷしたりしてるんじゃないのか? sshで接続してスタンドアロンで動くかどうかまず確かめろよ。 あとは考えるのマンドクセ。
240 :
229 :04/08/15 15:04 ID:???
確かサーバー側はLINUXだったので違うOSですね。
サーバーでコンパイルするかクロスコンパイルでぐぐってね。 ばいばい。
>>240 で、コンパイルマシンはHP-UXなのか?
243 :
229 :04/08/15 23:43 ID:???
コンパイルマシンはWINDOWSです…
窓のアプリケーションがLinuxで動くわけなかろーがこのバカチンがー マジレスすると、お前には無理なので諦めろ
おまいら釣られすぎ
247 :
229 :04/08/16 00:28 ID:???
もうちょっと勉強してからやります。 Perlと同じような物だと思ってました…
>>247 >もうちょっと勉強してからやります。
>Perlと同じような物だと思ってました…
プロの釣り師だな
>>229 >>247 マジ釣られしてやろう。スクリプト言語は文字ベースの互換性があるが、
コンパイル言語はバイナリベースでの互換性を確保しなければならん。
よって、互換プラットホーム間でなければ動かん。
もっと勉強汁。
WindowsでGCC使ってクロスコンパイルかけたのかもしれないじゃないか。 100%ないけど。
gccを使っているのは確かだ。
253 :
nobodyさん :04/08/22 23:49 ID:OO5ezOdW
でもいかりや長介が逝っちゃったことに 変わりはない。 無念!
UTF-8の掲示板作ったら、出力サイズが2chに比べて2〜3倍になったorz
2chのhtmlを保存してUTF-8に変換してもまだ1.5倍。
マークアップしつこすぎたかな…。
<div class="res">
<div class="data">
<h3 class="name"><span class="number">5</span> <span class="label">投稿者</span> <a href="mailto:
[email protected] " title="この投稿者にメールを送る">名前</a></h3>
<ul>
<li class="time"><span class="label">投稿時刻</span> 2004年08月07日(土)17時54分04秒</li>
<li class="url"><a href="
http://www.w3.org " title="この投稿者のウェブサイトへ">HOME</a></li>
</ul>
</div>
<div class="comment c3 kuma"><p>なんだかんだ</p></div>
</div>
256 :
255 :04/08/24 12:56 ID:???
誤爆すいません
ネタがありませんなあ
カウンタを作ってるのですが 日にちがかわったら今日のカウントを昨日のカウントへコピーして 今日のカウントを初期化するIF分がわかりません 教えてください
( ゚,_ゝ゚)バカジャネーノ
>>264 お前プログラム向いてないよ。サンプル漁る位しれ。
267 :
nobodyさん :04/09/27 21:25:52 ID:yrxaF59A
釣れた!初めてなのに釣れちゃった!(AA略
こんな活きの無い魚でそんなに喜ぶなよ
活きの無い ( ´,_ゝ`)プッ
4日も経ってからsageで煽るなって
271 :
nobodyさん :04/10/01 17:46:36 ID:qscnRJvR
あのーPHPがアパッチのモジュールで動作するから早いって聞いたんですよ・・・ Cで書いてもCGIとして実行してたらプロセスとして実行するから結構負荷がかかっちゃいますかね・・・ でもCGI使わずにモジュールで動作するようにすればCの方が早いんですかね・・・ PHPの開発は日本人が多いから日本国内ではPHPの方が早いってことになってるんですかね・・・ それともベンチマークテストやったら実際に早いんすかね・・・ そこらへんをすっきり説明してくださる方おりませんか?
なんか不勉強で人頼みな奴ほど速度を気にするように思うんだけど、 これってマーフィーの法則ですか。
273 :
nobodyさん :04/10/01 17:52:03 ID:qscnRJvR
はいーわたしはマーフィーの法則にしたがって行動しております。 補足なんですけど〜CGIもモジュールですよね〜 PHPのそれはどんなモジュールなんですかね〜 PHPより高速になるCGIモジュールってありますかあ?
裏が取れないという点ではそうかも 背景としては、本来速度を気にする人ってのはハードなシステムを組まされてる人なんだけど、 この手の輩は四六時中ボトルネックを探してるので、何すれば早くなるかとか、早いってのは どういうことかとか正攻法で理解してて、あんま質問を垂れ流さないってのがあるんだと思う ところで最近はチューンするにしてもApacheのモジュールにしちゃうこと減りましたね ってこのネタもスレ違いかorz
>273 うっぜ 死ねカス
276 :
nobodyさん :04/10/01 18:04:01 ID:qscnRJvR
あれへんだなあ・・ 何言ってるかわかんなくなってきちゃった・・・・ でもさあPHPってHTMLに記述するスクリプト言語ですよねェ〜 それをパースして実行するんですからあきらかにコンパイルしたCの プログラムの方が早そうに思えるんですけどねエエ・・・・
277 :
nobodyさん :04/10/01 18:07:17 ID:qscnRJvR
>>275 ウゼェ じゃないんですかああ?
うっぜってどこの方言ですかアア??
やぱありCGIでPHPを使った方がいいんですかねえ・・・
どうなんですかねええ
優秀なみなさ〜〜ん
phpをネタに持ってきた時点で脳が古い。 センスもなし。
279 :
nobodyさん :04/10/01 18:18:02 ID:qscnRJvR
>>272 あ〜ちなみにおくれつっこみですけどお〜〜
それはマーフィーの法則とはいいませんよ〜
それは272さんとその仲間達(272本人かも・・)の法則ですよ〜〜
それとも次ぎのマーフィーの法則に載るんですかあ〜〜
それともマーフィーの法則っていっとけばカッコイイと思ったんですかあ〜
マーフィーの法則をネタに持ってきた時点で脳が古いですよ〜
扇子あげましょうか?
>>274 2chでのやりとりなんてほとんどマーフィーの法則に嵌ってるだろ。
>>278 昔はPHPなら速度比較と処理負荷だけで飯五杯はいけたんだが・・・
もはや残ってる部分といえばコードキャッシュネタくらいか
Cでおかずになるネタは・・・このスレの伸びが何かを語っているな・・・
たいていがマーフィーの法則に当てはまることが法則ってのじゃ利用価値ないじゃん。 どうでもいいけど昔、マ板かどっかにCのコーディングにありがちな「マーCの法則」スレとか無かったっけ。 田代がまだ只の人だったころの話なのだが。
>>283 そりゃ田代本人が出した本のタイトルじゃないのかw
PHPは旬過ぎたけど user ml がまだまだアツイぜ
286 :
nobodyさん :04/10/19 10:52:37 ID:eOcRyqWU
Apache2のWinネイティブなCGIでActiveXEXEと やりとりってできないんでしょうか? CGIを普通に起動する分にはちゃんとできてるのですが・・・ いちおうApacheのサービスは「デスクトップとの対話を許可」してあります
287 :
nobodyさん :04/10/21 10:38:39 ID:GNUlgmPe
cとphp おれはcの方が早いと信じたい!
アルゴリズムによってはCの方が早くなるんじゃないだろうか url文字列のほうは良いんだがmultipart/form-dataのクラスをどういう構造にしたら分りやすいかちょっと悩む ただの文字列はoperator[]でファイルのときはファイルの情報を持ったオブジェクトを返すでいいかな
車輪の再開発してないで既存のライブラリ使えよ
単純で良い物が無い
単純でよければ自作すればいいじゃーん
だからしてるんじゃないか
このスレはドリフだな
>>289 自分が使いやすい/使いたいように作れば、それで良いと思うよ
C++でCGI作ろうと思ったけど全然ライブラリが揃って無くて駄目だね。 Perlならcpanでサクサク拾えるのに。
298 :
nobodyさん :04/11/30 12:32:26 ID:q4147YdE
レスポンスがあるかわかりませんが..
POSTで受け取った文字が化けるのでiconv使って変換をと思ったんですが
iconv_t icv_hook;
char *inp;
char *outp;
size_t ret_val;
size_t in_buf_left;
memset(out_buf, 0, BUFSIZ);
in_buf_left = strlen(in_buf);
out_buf_left = BUFSIZ;
ret_val = iconv(icv_hook, inp, in_buf_left, outp, out_buf_left);
警告: 互換性のないポインタ型からの引数 2 個の `iconv' を渡しますです
警告: 引数 3 個の `iconv' を渡しますにより、キャストなしで整数からポインタを作りました
警告: 互換性のないポインタ型からの引数 4 個の `iconv' を渡しますです
警告: 引数 5 個の `iconv' を渡しますにより、キャストなしで整数からポインタを作りました
http://docs.sun.com/app/docs/doc/806-2802/6jc0bne4u?l=ja&a=view これの通りにしたのに
どこがおかしいのでしょうか?
300 :
nobodyさん :04/11/30 19:18:07 ID:q4147YdE
どうもありがとうございます。 char *とchar **は違うとはわかりますが、ではどこをどう直せばよいのでしょうか? 宣言時にchar**とやったり、キャストを入れてみてもやはり警告が出ます。 コンパイルは通りますが、実行時に iconv()を呼ぶときに必ず 「セグメンテーション違反です のエラーが出ます
>>300 const char *inp;
char *outp;
(中略)
ret_val = iconv(icv_hook, &inp, in_buf_left, &outp, out_buf_left);
>>301 char *inp;
char *outp;
ret_val = iconv(icv_hook, &inp, &in_buf_left, &outp, &out_buf_left);
なぜか指示どうりではだめでしたがこうやったら正しく実行できたので
とりあえず報告します。
C/C++ CGIで、最初に1回だけユーザ認証をやって、 その後同一の実行ファイル上で、ログイン状態を維持する これを実現するための考え方と、参考になるソースを教えてください。
>>304 同一の実行ファイル上ってのがよくわからない。
言葉通りに解釈すると、Cookieにそのファイルのpathを設定すればいいだけだけど。
PHPのセッション管理のような仕組みを作っちゃえば楽なんだろうけど、作るのは楽じゃない。
>>304 >>305 に1票、もしオレがやるなら、やっぱ Cookie使う。
セッション管理より楽だし。
厳密性を求めるのは厳しいけど、ユーザ認証が目的なら、
同じブラウザを使ったかどうか分かる Cookieは充分有効な手段でしょ。
308 :
nobodyさん :04/12/05 06:40:37 ID:4YEMHaP5
sageるつもりだったがついうっかり・・・ OTL
310 :
305 :04/12/05 10:05:05 ID:???
> C/C++ CGIで、最初に1回だけユーザ認証をやって、
> その後同一の実行ファイル上で、ログイン状態を維持する
通常、CGIプログラムはリクエスト毎に終了してしまうので、
プログラム内の変数にログイン状態のデータを維持する事は出来ない。
そこで、データの永続化。
具体的には、ファイル、データベース、共有メモリでもなんでもいいので、
CGIプログラムが終了してもデータが残るような媒体にデータを記録する事になる。
その際、Process IDやIP address等からユニークなIDを作成し、
このIDをキーとしてログイン状態などの情報を記録する。
同時に、このIDをセッションIDとしてブラウザのCookieに設定させることで、
認証を済ませたユーザかどうかを確認する。これがセッション管理。
一度認証を済ませたあとは、
ブラウザが送ってくるCookie(CGIの場合は環境変数などに設定される)
のセッションIDと一致するキーのデータを引き出し、そのログイン状態を確認すれば良い。
>>306 簡単なセッション管理の実装で、
セッション毎に./session/$SESSION_ID$ ファイルを作成するとかはどうだろう。
>>307 >>305 は、一応、セッション管理を前提に書いてました。
"同じ実行ファイルの上で"が同一URL上でという意味ならCookieのpath設定だけで済むかと思ったので。
普通にクッキーデコーダクラス作ればいいだけの話じゃん。 おいらはurl_decodeクラスとそこからget,post,cookieの継承クラス作ったけど。 データ構造は自作二分木
そういう手続き型のはモジュールでやったほうがいいと思われ
>>313 そうか?
ヘンテコな抽象化だなとは思うが、リクエストとかユーザステートみたいな
他の設計クラスとかち合わなきゃどうでもよくね。
クラス=メソッドってOOとしてはNGだけど、Cppなんだし。
C++はオブジェクトをとるかデータ構造をとるかでよく迷わされる Cでやることも考えるなら、そう迷うこともないけど
おいおいLispスレが立ったぞ。ドンケツ脱出だな。
>>316 ACLかよw
そりゃ間違いなく脱出だが
318 :
304 :04/12/07 09:58:50 ID:???
アドバイスありがとうございます。 色々試してみます。
みんなUTFとか使ってる?
((void *)0)
321 :
nobodyさん :05/01/21 13:43:21 ID:Z6ezIjZ/
ばかばかしい質問かもしれないんですが bluequartz上でC/C++ cgiがどうして動かせなくて困ってます。 gcc バージョン 3.3.2 20031022 (Red Hat Linux 3.3.2-1) もちろんapacheは動いています Server version: Apache/2.0.51 コンパイルしたファイル(xxx.cgi)はコマンドラインからは実行できるのですが、 これをブラウザから見ようとすると、 「xxx.cgi ファイルを保存しますか?」 となってしまいます。 どこがおかしいのでしょうか 何か見落としているかも知れないので指摘いただきたいです
>>321 content-typeが変なのになってるんじゃないでしょうか。
323 :
321 :05/01/21 16:58:47 ID:???
普通に Content-type: text/html です。 テスト用に時刻表示するやつを作ってみましたが 以下のテキストを吐き出すだけです。 Content-type: text/html <html> Fri Jan 21 16:53:21 2005 </html> これもブラウザから見ようとすると やっぱりファイルを保存しますか?となってます
325 :
321 :05/01/21 18:10:27 ID:???
>>324 保存したファイルの中身を見てみましたが実行用のバイナリファイル
そのものだと思います。
出力結果とかが保存されてるわけではない(と思う)です
AddHandlerは?
327 :
321 :05/01/21 18:56:11 ID:???
今のところこうなってます ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ..... AddHandler cgi-script .cgi AddHandler cgi-script .pl
>>321 どっちかと言うと C/C++ に関する問題ではないような。
だってコマンドラインから実効出来るという事は、「Cプログラム」としては正しいわけだろ。
たぶん Apache のディレクティブがきちんと設定されてないのでは?
CGI 実行ディレクトリについて、Options +ExecCGI とかやってる?
ちなみにウチのディレクティブは、CGI 関連はこんな感じ(Win32/Apache 2.0)。
LoadModule cgi_module modules/mod_cgi.so
ScriptAlias /cgi-bin/ 実際のディレクトリ
<Directory "実際のディレクトリ">
AllowOverride None
Options +ExecCGI
Order Allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl
設定してからだいぶ経つので細かい意味は忘れてしまった・・・ウチも色んなトコ見て
コピペを繰り返したので、検索しまくってガンガッてほしい。
>>327 Perl CGIは実行できてるんだよね。
330 :
321 :05/01/22 11:24:45 ID:???
すみません 今確認してみたらPerlCGIも実行できてませんでした...
どこに置いて実行しようとしているんだ?
/cgi-bin/ならデフォルトでAliasが設定されているから
>>328 のように
Options +ExecCGIを追加しないとならないし。
俺は/cgi-bin/のAliasをコメントアウトして全ディレクトリで使えるようにしてある。
DocumentRoot "実際のディレクトリ"
<Directory "実際のディレクトリ">
Options FollowSymLinks MultiViews ExecCGI Includes
AllowOverride ほげほげ
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl
あるいはユーザディレクトリなら別の部分で設定しなきゃならんよ。
333 :
nobodyさん :05/01/25 07:56:51 ID:hWOf15Pd
>>304 さんに便乗して質問です。
ログイン情報を記録する方法はわかったんですが、
クライアントが適切なログオフ処理をしなかったらセッション管理用のファイルは残りますよね?
例えば、クライアントがブラウザを閉じたらサーバ側で勝手にログオフ処理、なんてことは出来ないでしょうか?
絶対無理っしょ。 時間制限でタイムアウトするくらい。
336 :
333 :05/01/25 10:01:05 ID:???
わかりました。一時間リクエストがなかったらログオフするようにしたいと思います。 ありがとうございました。
クッキー使えばええやん
>>337 どうやって?
クッキーつかってもクライアントがブラウザ閉じたかなんてサーバー側では
判らんと思うが?
有効期限を過去に設定すればブラウザを終了させた時点でクッキーが消える。
343 :
nobodyさん :05/01/26 16:11:38 ID:/NT/JEVZ
>>339 クッキーは消えてもサーバのセッションファイルは残るんだよ。
それをどうすればいいかを考えてるの。
ちなみにPHPでは
session.gc_maxlifetime = 1440
とかで時間を指定してガベージコレクションしてる。
>>339 消えても次にアクセスがあった時にクッキーがあるかどうかの
判断に利用できる程度だろ。
そういう話をしてるんじゃないの。
337が言っているのはセッションを使わずに、という意味だと思うが。
349 :
333 :05/01/27 00:23:16 ID:???
なんか種を蒔いちゃったみたいですいません… 自分としてはユーザ毎にデータファイルを必要とするプログラム書こうと思うんで やっぱりタイムアウト処理になると思います
当分はこのスレ下がるばかりか・・
てかもはやCとかC++の話じゃなくてCGI一般の話ジャン
すっかりCGIの話なのでアレだが、 Flash埋め込んでSocket通信させるってのはどうよ。 >ブラウザを閉じたらチェック
cgiでscanf使えますか?
354 :
nobodyさん :05/02/17 07:25:27 ID:27dZ6TGB
質問させて下さい。 フォームから受け取った値をgetcharで読み込んでいるんですが、 「 , 」が%2Cになってしまいます。どうすればいいでしょうか?
356 :
354 :05/02/17 11:16:54 ID:???
>>355 ありがとうございました。
URLエンコードという言葉を今日はじめて知りました。。。
>>353 標準入力に対するものだから、使える事は使えると思う。
が、入力書式が CGI とは合致しないわけだから、
>>354 がトライしているように、
getchar とか使って URL エンコードを自前 or ライブラリでやる方が
モアベターだと思う。
scanfなんてBOF問題バリバリの関数を使うなよ…
ろくに知識がない奴ほど↑みたいな書き込みをするね。
>>358 問題を理解した上で、自分の目的を満たすにはこれが良い、と思ったんなら、
どんどん使えば良い。と思うぞ。
包丁なんて怪我しやすい道具を使うなよ…
なんて言わないべ?フードプロセッサー使ったって良いんだけどさw
質問です 今までPerl,PHP等やってきて最近C言語でCGIスクリプト作成をはじめましたが、排他処理は一般的にはどの手法を使いますか? やはりフォルダを作成する方法ですか?
362 :
nobodyさん :2005/04/24(日) 21:13:21 ID:WkqhPVlv
VCでHelloWorldのテストCGIを作ったところ、111kBでした。 同じくLSICでコンパイルすると17kBでした。(500で動きませんでしたが。) なぜこんなにサイズの差があるのですか?もっと減らす方法はありませんか?
>>362 VC++のほうがデバッグモードになってないか?
>>362 やってみたら
Debugで160k
Releaseで40k
366 :
362 :2005/04/27(水) 21:39:50 ID:???
うわ、本当だ… お騒がせしました
367 :
nobodyさん :2005/05/19(木) 21:48:26 ID:GAjOQJM0
今晩は、スレで度々話題になってるようですが、いまいちわからないので質問させてください。画像ファイルの質問です。 <input type="file">でjpegやGIF、BMP画像をpostで送信した場合、標準入力に他の文字列等と同様name=に画像ファイルデータ が送られているのでしょうか?その画像ファイルはどの様に処理したらいいのでしょうか?ご教授ください
368 :
nobodyさん :2005/05/19(木) 22:14:38 ID:EjA+9pug
>>367 CのCGIライブラリでも使え
検索したらあるはず
370 :
367 :2005/05/20(金) 15:58:18 ID:UC8INN3X
>>369 CGI用のライブラリーってありますけど製作者のあくがつよすぎて理解するのが大変なんですよね・・・
なんで自分で関数から作った方がいいと思ってるんですよ・・・勉強にもなるし。
>>370 だから、そういったライブラリがあるだろ。
アクが強いとか関係無しに、どういう仕組みかが分かってないから
>>367 のような質問をしたんでしょ?
既に動いてるライブラリのソースコードを読めば、そこに答えなりヒントがあるでしょ。
それを応用して自作すればいい。
アクが強いとか理解が大変とか言ってるが、結局、頭悪いだけじゃん。
374 :
367 :2005/05/21(土) 07:08:21 ID:???
やれやれ・・ コード読め? 読むような質問じゃあないだろうに。あほ コード読め、コード読め、って猿の一つ覚えのような回答しかできないんだったらだまってろよ。 そのほうが百倍有益w
aso
だれも「読め」とは言ってないが。 日本語は読めて、理解できるよね?理解の方がおぼつかないのかな? そういうのは十代のうちになんとかしといたほうが良いよ。本当に。
378 :
nobodyさん :2005/06/02(木) 04:47:54 ID:tNFRcCbR
getenv("PATH_INFO")で文字列取る時に 事前に長さが分からないから異常に長いURLでアクセスされたらやばくない? と思うんだけど。 このPATH_INFOの文字列のポインタが分かればstrlenで長さを求めて弾くなり必要量mallocするなり出来るけど、 値しか分からないよね? 普通はどうやってこの問題を回避するの?
getenvを使ったことがある人からは そんな疑問は出ないはずだが
380 :
nobodyさん :2005/07/24(日) 09:53:58 ID:FFgeh8au
話題がないお
>>378 亀さんのレスです
Apache様が長いURLは規制してくれています
382 :
nobodyさん :2005/07/25(月) 23:47:14 ID:bB/wQjJG
自分のサイトがF5アタックにめちゃくちゃ弱いことに気づいた。 セッション管理のためにページを開くたびにMySQLに問い合わせに行ってるのですが、もっと良い方法があるのでしょうか?
防御コード書けばいいじゃん。
>>382 CでMySQLへの問い合わせってどうやるの?
出来るなら今度やってみよ
>>384 MySQL純正の接続ライブラリを利用するなら、
それをラップしてる他の言語で慣れてる人ならアホ程簡単。
>Cで接続 (;´Д`)ハァハァ
ボキもSegmentation faultで泣かされますた
389 :
nobodyさん :2005/08/25(木) 07:40:55 ID:URNXAJj0
以下のプログラムが思惑通りの挙動を示してくれません。 C言語でのCGIでは、forkは使えないのでしょうか? #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> int main(void) { pid_t pid; int status; printf("Content-type: text/html\n\n"); printf("<html>\n"); printf("<head>\n"); printf("<title>test</title>\n"); printf("</head>\n"); printf("<body>\n"); pid = fork(); if(pid == 0){ printf("child<br>\n"); } else{ wait(&status); printf("parent<br>\n"); } return 0; }
390 :
nobodyさん :2005/08/25(木) 07:43:44 ID:URNXAJj0
思惑とは、CGI実行時のHTMLソースで、 <html> <head> <title>show sFlow statistics</title> </head> <body> child<br> parent<br> と、なってほしいのに、実際実行すると、 <html> <head> <title>show sFlow statistics</title> </head> <body> child<br> Content-type: text/html <html> <head> <title>show sFlow statistics</title> </head> <body> parent<br> と、なってしまっております。
stdioのバッファリング
392 :
nobodyさん :2005/08/25(木) 13:08:38 ID:URNXAJj0
>>391 なるほど!
ありがとうございます。
fflushで、解決いたしました。
393 :
nobodyさん :2005/08/26(金) 20:14:39 ID:Tl6OQEOB
最近C/C++CGIって廃れてるよな…
あえて言おう。 廃 れ て な い 時 が あ っ た の か ?
395 :
nobodyさん :2005/08/26(金) 22:30:48 ID:phIbl7Mf
>>393 やっぱライブラリ不足が原因だろう。
cgiccってでかい割にほとんどなんも出来ないし
397 :
nobodyさん :2005/09/22(木) 00:50:59 ID:Lo9GY17f
わけあって初めてC++でCGI組んでみた(普段はPHPとか) 複雑な構造のデータを処理する場合とか、やっぱり速いね。
>>397 bbs.cgiはPerlだよ。mod_perlとかfastcgiとか検討されたけど今はSpeedyCGI使ってる。
read.cgiは2ちゃん閉鎖の危機のときにCのソースが公開されてgzip圧縮が追加された。
Web に向いていないというのはあるけど,Web を趣味でやっている人間の技術 レベルが低いというのも原因の一つでは? # 前に read.cgi のソース見て、そのあまりの汚さに絶句したことあり
はいはいすごすすごす
402 :
nobodyさん :2005/09/22(木) 16:50:45 ID:WZseHGJ/
ついでにage
1つのバイナリで使えるOSが限られるしね。 どうしてもインタプリタ型になってしまう罠。
>>400 2002年ぐらいに一度見たのは、確かにアレだったけど、
その後にちらっと見たのは、新しく書き下ろされたように結構綺麗だった。
今はどうなってるんだろう。
まだソースは転がってるのか!?
今のはもう無理だと思うけど、 古いのは、ネットのどっかに転がってるかも。
読みにくい…
410 :
javaさん :2005/10/06(木) 01:36:36 ID:9/nHwpYz
CGIではなくてJavaでいうServletコンテナのようなものとVelocityのようなテンプレートエンジンを探しています ご存知ないですか?
411 :
nobodyさん :2005/11/20(日) 17:08:19 ID:Va/OuDM7
下がりすぎ
412 :
nobodyさん :2005/11/21(月) 02:40:39 ID:/C8jg8zb
C言語のプログラム作成はどこですか?
>>412 日本語がわからんが単にC言語のこと聞きたいならプログラム板
C言語でCGIを動かす利点は何ですか?
>>414 利点:既にコンパイルされてるから実行が早い。
欠点:一から作るのは死ぬほど面倒。
c++ならそんな面倒でもない
417 :
nobodyさん :2005/11/26(土) 12:19:56 ID:lGwtghir
今日からC始めるぞage
挫折した
はやっ
420 :
nobodyさん :2005/12/13(火) 02:50:45 ID:0HjM7Fv9
windowsでのcgiの扱いの事なのですが、C言語で.作った.exeの拡張子を.cgiに変えると途端に上手く動作しなくなります。
win上ではcgiの拡張子は.exe一択になってしまうのでしょうか?
自分だけアドレスが
http:// 〜/cgibin/testing.exeになるのが恥ずかしいんですけど。。
>>420 httpdに何使ってるのか知らんがハンドラ変えればいいだけの話じゃないのか
普通 .cgi でもうまく動作するはずだけど…… というかネゴシエートすれ。 .exe も .cgi も恥ずかしいことに代わりはないから。
.pdfとかにすれば良い。
424 :
420 :2005/12/14(水) 19:01:11 ID:???
カウンタ作るのも一苦労ですたいorz
>>426 画像なんかはバイナリのまま送られてくるね。
一応rfc2388,rfc2046を参照しておくといいかも。
428 :
nobodyさん :2006/01/13(金) 16:47:51 ID:sdM07NCL
あけましておめでとうございます。
429 :
nobodyさん :2006/01/13(金) 22:23:10 ID:itKm2IBl
431 :
430 :2006/03/19(日) 23:54:56 ID:???
私用でageすいません。 どこに晒せば良いかもわからずです。(ならば晒すなと言わないで) 板違いorスレ違いであれば良い場所教えて下さい。
ム板の方が盛り上がるかも。 ム板は特定スレしか見てないから、分からないけど…。
433 :
430 :2006/03/20(月) 01:18:15 ID:???
ムですか...了解です。 明日にでもム板にマルチポストで叩かれに言ってみます。
保守
guest guest
436 :
nobodyさん :2006/04/18(火) 17:41:56 ID:6Kyc62WF
板違いと言われたのでこちらでも質問させてください。 クライアントプログラムとCGIとの間で通信をやりたいと思っています。 クライアントはソケット通信で最初にポート80(Apache)にconnectするようになっています。 この状態でクライアント側で試しにCGIをシェル上で走らせてみると CGIに書いてあるHTMLは表示されるのですがscanfがまったく無視された形で戻ってきます。 自分としてはCGI上に書いてあるscanfで処理が1回止まり、1度文字の入力ができれば いいなぁと考えていたのですが、この考え方は間違っているでしょうか。 正しいか間違っているか、また間違っているならば後学の為にも正しい処理の概要を 教えて頂ければ幸いです。 言語はC言語、サーバーはRedHatです。よろしくお願いします。
>>436 間違ってる。CGIへの入力はGETまたはPOSTしか無い。
つかCGIをかなり大幅に勘違いしてるようだからちゃんと勉強してからおいで。
CGIに関しては
>>437 の通りなんだけど、
>クライアント側で試しにCGIをシェル上で走らせてみると
http経由じゃなくてシェル実行でもscanfが効かないなら
何か根本的なところが間違ってるんじゃないか?
【質問】
http://ysserve.int-univ.com/susi/Lecture/c2/ ↑のページの【必須CAI課題】のどれかをクリックして適当に学生の番号入力するとオンラインのコンパイラに飛べますが、
このようなC言語のオンラインコンパイラを自分のHPに設置したいのですがどうしたらいいのでしょうか?
ちなみに自分のHPサービス(sakura.ne.jp)にはCGI,PHP,C言語(gcc)等のコンパイラがあり、パスも分かるのですが
そこからどうしたよいのでようか?
ソースが入力された文章を受け取って、次にgccのパスを・・・どうやったらコンパイルできるのでしょうか?教えてください
gccのパス:
http://takaharamayou.sakura.ne.jp/proglang/gcc ちなみにCやVBといった言語やHPビルダーは使えますが、Webプログラミングの勉強はしたことないので、HPビルダーで出来る程度でお願いします。
(さらにこのオンラインコンパイラだとscanf関数等数値のキーボ−ド入力が出来ないので、余裕があれば改善したいです。HTMLだけじゃ無理そうですが・・)
>>439 何か恐ろしいレベルで勘違いしてそうだからあらかじめ言っておくが、
オンラインコンパイラなんて代物は存在しない。
とりあえずCGIというものについてちゃんと勉強してから来なさい。
ちなみにホームページビルダーでは何も出来ない。以上。
>>439 つか本当にC言語使えるのか?
gccの使い方知らん上にインタプリタとコンパイラの区別もついてないように見えるが
C,C++プログラミングスレッドで、反応なかったんで、こっちで聞いてみます。 linux(RedHat4)上のCのcgiのプログラムなんですが、コンパイルしてコマンドラインから実行すると動くんですが、 ブラウザ経由で実行すると、共有ライブラリが無いよ、のエラーになります。 LD_LIBLARY_PATHとか、httpd.confのSetEnvとか、ldconfigとか試しましたが、 現象変わらずです。 ldd というコマンドが有るとわかったので、コンパイルした実行形式をlddしてみると、 問題ないのですが、cgi-binにコピーしてlddすると、無いよと言われる共有ライブラリが、not found になります。 これ、ナニが問題なのでしょうか?
>>442 コンパイルしたディレクトリにライブラリがあるんじゃないの?
444 :
442 :2006/05/01(月) 08:59:47 ID:???
>>443 ライブラリというのは、OracleのOCIなんですが、そこは確認しています。
ライブラリ自体と、ライブラリのあるところのパーミッションも変えてみましたが、
現象変わらずでした。
ちなみに、
>>442 では、LD_LIBRARY_PATHのスペル間違ってますが、
これは書き込みミスです。
>>442 共有ライブラリの参照先が相対パスになっているとか?
lddの結果を見せてもらえるとわかるかも。
446 :
442 :2006/05/01(月) 13:59:54 ID:???
>>445 絶対パスで表示されています。
で、色々いじくり回した結果、SELinux を無効にしたら動きました。
SELinuxの設定でしょうか?
このあたりはスレ違いっぽいので、ほかで聞いてみます。
>>443 さん、
>>445 さん ありがとうございました。
なんか簡単に使えるフレームワークとかライブラリが有ればいいのに。 ejbとmod_jkみたいなのを希望。
そう思ったら、自分で作って公開することをお勧めする。
みんな思いつきそうだけど手は動いてないね。
450 :
nobodyさん :2006/08/07(月) 15:01:57 ID:f+NIkUuU
C/C++界隈には凄い人いっぱいいそうなのになんでだろ? 啓蒙活動には興味ないのかな。 まあ、いまどきC/C++でCGIやるような人が ポピュラーでキャッチーなコードを書いてるわけないか。 自分最適化バリバリっぽいな。
まあ作れるスキルあったら売り物にするからね。 時間もかけてるしビジネスノウハウもつぎ込んでるから無料で公開というのは無い。
サーバーサイドはJavaのserverVMの方が速くて安全でライブラリが揃ってるから、 C,C++で作る意味がない。
CよりJavaの方が速いってありうる?
javaのvmのほうが速いってことは無いよ。 常にCで生成した実行バイナリのほうが桁違いに速い。
速いcで作りたいけど一から作るのマンドクセ。 結局はフレームワークが揃ってるjavaに流れるって罠?
javaは速さがどうとか言うよりもクロスプラットフォームという点が大きいと思う。 まぁ、今更Cを学ぼうという人間もなかなかいないしね。 そのせいか稀に素っ頓狂なjavaソースを目にすることがあるが、これも愛嬌。
javaじゃ遅くてハード代がかかるのでCにするって、身の回りでは多いけどなあ。 特に事業とかコストを考えるとJavaでは苦しくなることが多い。
>>458 javaは動き出しちゃえば(そこそこ)速いんだよね。メモリバカ食いするけど。
今時のハードだと安くてもメモリさえ積めば充分だし。
プラットフォームが確定してればCの方がパフォーマンス良いけど、WebProgって
求められる機能がアホみたいにコロコロ変わるから、Cは向いてないよなぁ。
こんな時代だからこそ C+++CGI なんだと思った
Cばかりが速いとは限らない。 JITコンパイラの最適化能力と、GCの性能は一気に上がった。Javaも実際は一部JITで機械語にコンパイルしたり(いまだに完全インタプリタ言語だと思ってる人が数レス前にも)、メモリを予約するよう工夫されている。言語だけて決め付けるのは古い。 (しかしASP.NETの方がJavaわずかに全体的に速い。純MSの一部アセンブラ言語だから当然か。Win鯖限定) CGIの起動の負荷もある。特に高負荷。 あと技術レベルとコスト。大したやつじゃないなら既存のC/C++をパパッとやって出来上がりだけど、さすがにネトゲの鯖プログラムをCでってのは勘弁してほしい。 JavaでStringを+で連結しまくる困ったちゃんもいるし、やっぱり言語を扱う人間のレベルの方が影響が大きいんじゃないか? チラシの裏 某f〇2のアク解の鯖はOSからhttpdまで完全C++の自作らしい。どれだけさばけるのか気になる。
完全スクラッチを謳う鯖って大概NetBSDのカスタマイズだったりするからなぁ・・・
求められる機能がアホみたいにコロコロ変わるって仕様が十分に練れてないだけじゃん。 普通はハードは減価償却終わるまで替えないから、Cバイナリでも十分。 jit使うならiccやgcc使うのと変わらんだろ。 しかもjitなら全ソース無いとjitの意味ないし。 JbossみたいなJ2EEのワークフレームがCにも欲しい。 完全スクラッチである必要は無いと思うが。 組み込み系なのか?
C言語の依頼ならたまに来るけども(JavaとPHPがほとんどだが)、C++はほとんどない。なんでだろ?
そもそもC++である必要が無い。 マカが絶賛するObjCも必要性無いからマカ以外使われないし。 Javaの客ならサンの高い鯖でも買ってくれで対応出来るだろうけど、phpだと下手にアクセス数増えると大変だよね。 小規模サイトのうちは平和だけど。Javaに移ってくれでハードごと交換してもらえるほど余裕無い場合がほとんどだし。
いつまでも C/C++ なんていってるから散漫になってだめなんだよ。 強い C++ 文化を作らなきゃ。
いやもう正直いまさらつーか
現状ではC++ほどトータルバランスに優れる言語はないと思う。 でもC++の言語ポテンシャルに気づくまでには情報の壁があるよね。 URLデコード処理なんかistringstream使えば死ぬほど単純なのに。 C++に必要なのはC視点から脱却した体系的な解説サイトだな。
C++に必要なのは移植性 Cと違ってコンパイラによって対応度が全然違うから、 g++で通るのに商用UNIXのコンパイラでコンパイルが通らなかったりしてうんこ。
471 :
nobodyさん :2006/08/19(土) 16:03:29 ID:vMxG7enI
質問です。 C++でCGIを書こうと思ってC++勉強してるんですが、 POST methodで受信した文字列をcinでもらったり、 出力をcoutで出したりするのはセキュリティの観点等から見て 適切でしょうか? Cだとfgetsとかputs使ってたんで、何をやってるかよくわからない cinとかcoutはちょっと怖いイメージが…
>>471 せっかく C++ 使うのなら,Apache のモジュールにした方がいいよ.
怖いならソースを読むといいと思うよ
474 :
471 :2006/08/19(土) 21:38:55 ID:???
>>472 標準入出力をモジュールを介して行うということでしょうか?
>>473 そうですね。もう少しC++に慣れたら読んでみようと思います。
そもそもアパッチも自分で作ったほうがいいよ。 アパッチって変なことやり過ぎで変になってるし。mod_rewhiteのところとか。 商用UNIXのコンパイラでコンパイルが通る様に組めないおまいがどう見てもウンコ。 素人なのか? C++なんてイラネ。ANSI Cこそ最強ですよ。
apacheを自分で作る?? httpdじゃなくて?
rewrite のスペルもまともに書けない人間はプログラミング以前に、 中学校レベルの英語から人生やり直した方がいいと思うゾ。
478 :
nobodyさん :2006/09/08(金) 22:30:29 ID:zv3xWmqW
みんな HTML 出力クラスどう設計してる?
どうって言われてもな。 オブジェクトに要素渡して最後にoutputさせるだけだが。
480 :
nobodyさん :2006/09/09(土) 01:07:22 ID:??? BE:106404825-2BP(200)
リホワイトワロタww
>>478 俺はPerlのHTML::TemplateやPHPのSmartyみたいなヤツで出力してる。
C/C++でソース中でレイアウトいじるのはどうなのよ?
いちいちコンパイルしなきゃならんのはめんどくさくね?
でもソース中に埋め込んでないと遅いのでCにした意味がなくなるけどな。 コンパイル面倒ならphpとかperlあたりで作った方が楽だし。
テンプレートなんざオンザメモリですよ
リクエストの度に読み込んでたら遅いしなあ。
やっぱC/C++な人たちは速度に厳しいのかな。 俺はテンプレートくらいって考えちゃうよ。 でもそこまで考えるとやっぱりCGIって枠を抜けたくなってくる。 あーだからみんなCでCGI書かないのか。
80番つかんで自前でリクエスト処理が早いよね。 フロントエンドにアパッチ置いて、ヲレモジュールで繋いだ方が便利だけど。 javaのj2eeのC的アプローチだが。
printfでlocationを実行させようとしたんですが、単にlocation文が出力されるだけなんですが・・・ 制御文と認識させるためには、お呪い前処理が必要なんでしょうか?
- locationを実行って何 - 「単に出力されるだけ」ってどこに何が出るの - 制御文って何 - お呪い前処理って何 総じて意味不明 何をやったのかも何をやりたいのかも伝わってこない
CGIスレだし、Locationでリダイレクトさせたかったんじゃね? でも別の場所でprintfしてる Content-type: text/html が残ってるせいで文字が表示されてるだけとか
まあつまりStatus:302ってこったろうな。 302時にhtmlを返すこと自体は普通だし。確か。
492 :
k ◆WFGp1NZuiw :2006/10/22(日) 15:08:53 ID:EW4822UW
むしろ調べて報告してくれ。 来週までの宿題ってことにする。 再発明でも、いいよ。 まともに業務に使えそうな機能が欲しい。
CGIの質問はここですればいいのですか??
CかC++で作られたものなら。 それ以外のphpとかperlとかjavaとかなら他へ。
そのurlの最後の三文字を声に出して読んでください
拡張子でファイルの種類を判別できるなんて、あなたは超能力者ですか?
権利関係のとこ見れば良いじゃないんか? あれはただ表示してるだけですか
そういや拡張子の無いCGIは .htaccessで <Files test-cgi> ForceType cgi-script </Files> ってやっているけど、これ以外の方法で設定ある?
mod_rewrite
502 :
nobodyさん :2006/12/09(土) 12:15:32 ID:NH9SQeUM
>>491 既にあるものを新しく作ったかのように発表するのは、
プログラマとしてダサイ、
研究者として最低、
会社としては?
それとは別にpreferredのコードがazaracと同等だとしたらダメすぎだろ。
コアは良いのにもったいない
既にあるものがベストでない場合も有る訳だし。 新しく作った方が良ければ評価はされると思う。 プログラマでも研究者でも先駆者だけが評価されるのは視野が狭い証。 コアは再利用するけど、もっと使いやすくするのがオープンソースの醍醐味。
>>503 >新しく作った方が良ければ評価はされると思う。
そりゃそうだけどそれを示してないよね。そんな論文どこにだしてもrejectされるよ。
ちょっと
>>492 にあるやつ見た感じだと示せそうもなさそうだけど。
あえて言えば日本語ドキュメントがあることだけど、それじゃぁね。
まぁ今後に期待。
どこのスレで聞いていいのかわかんないので、ここで聞きます。 カウンターCGIを探しています。(※フリーで配布されているもの) 絶対条件は、GIFアニ画像を使えるカウンターが希望です。 kentのは連結ライブラリを使用するやつしかありませんでした。 他にもいろいろ探しましたが、これといったものが見つかりませんでした。 キリバン機能はあっても無くてもヨシの方向で。 また、ここじゃなくてこっちのスレで聞けやー っていうのがありましたらそのスレ教えてください。
誰かエンドレスバトルのスクリプトうpしてくれる神はいませんか?
507 :
nobodyさん :2006/12/16(土) 19:00:54 ID:nIpz82eR
あげ
509 :
nobodyさん :2007/01/16(火) 18:49:14 ID:xXzalZaX
VCで作ったCGIで、C:\WINDOWS直下に置いてあるINIファイルの設定を取得しようとすると取ってこれないのという現象が発生します 他のディレクトリを指定すると正常に動作するのですが、アクセス権限の設定とか必要なのでしょうか?
>アクセス権限の設定とか わかってて何故確かめない
511 :
509 :2007/01/17(水) 07:25:17 ID:???
IIS、システムフォルダとも確認しました 他に確認する所ありましたっけ? 別のサーバーはちゃんと動いてるんだけどなー
>>509 エラーコードやらメッセージやら確認した?
Cから、INIファイル自体読めるかどうかの確認ぐらいしたら? オラクルとのやり取りはProCってのがあるみたいだけど、HTML生成と、HTTP周りとGET/POSTやセッション管理のライブラリ欲しい。orz
514 :
nobodyさん :2007/02/13(火) 21:17:14 ID:+34QrCfo
C言語用のCGIライブラリで有名なものは何ですか? クエリやHTTPヘッダを解析する程度の、簡単なもので構わないのですが…
515 :
nobodyさん :2007/02/24(土) 19:11:47 ID:eSgsNpz0
質問させてください。 C言語の勉強をしたいので、C言語でCGIを作ろうと思ったのですが CGIのほとんどはPerlで組まれてるようで、そのことを考えたら C言語でCGIを作るのとPerlで作るのではどのくらい作業量が違うのかが気になりました。 CでCGIを作るのとPerlで作るのでは、どのくらい作業量が違うのでしょうか? また、Perlでないと作るのが難しい処理がある、といったことはあるのでしょうか?
516 :
515 :2007/02/24(土) 21:05:09 ID:eSgsNpz0
一応付け加えさせて頂くと C言語は基礎的なことは一通り理解しています。 といっても、まだまだ腕に自身がなく 今後仕事で使うことになるので、あえてPerlではなく C言語で作りたいと思いました。
517 :
515 :2007/02/24(土) 21:08:08 ID:eSgsNpz0
一応付け加えさせて頂くと C言語は基礎的なことは一通り理解しています。 といっても、まだまだ腕に自身がなく 今後仕事で使うことになるので、あえてPerlではなく C言語で作りたいと思いました。
518 :
515 :2007/02/24(土) 21:14:11 ID:???
連続投稿して申し訳ござません。
>>515 PerlはもともとCGI用に作られた言語じゃなくて、文字列処理に強いから適してたってだけ。
正規表現系のライブラリさえ用意できればCでもさほど手間は変わらない。
っていうか本当にCを理解してればこんな質問自体無意味だと気づきそうなもんだが。
520 :
515 :2007/02/26(月) 22:08:57 ID:???
>>519 ありがとうございます。
文字列処理に強いからCGIで使いやすいということだったのですね。
Cでがんばってみようと思います。
たまには保守
初心者ながらも悪戦苦闘しWEB作成してます。 掲示板を動かすのはCGIによるものだというのがわかるのですがどうも掲示板の設置方法がわかりません。 掲示板はCGIパール言語ではじめから組み込まれたものなのですか?それともHTMLである程度(HPのヘッダー部分や上のロゴとか) 作ってから掲示板としてはじめたい行からCGIでプログラムを書き始めるものなのでしょうか? それとも掲示板のページは最初からCGIでヘッダーやロゴの部分もCGIパール言語で書き始める、とういうものなのですか? このばあい、ロゴとかを前のHPから来るレイアウトでCGIにできる方法など簡単に図示、説明してあるWEBなどないでしょうか? ど素人の質問ですがどなたかご回答いただけましたら幸いにございます。
>>522 そのレベルだと何説明されても理解できないだろうから
自分で設置しようとか思わずにまずレンタルの掲示板
借りたほうがいいと思うよ
あとスレ違い
524 :
nobodyさん :2007/03/30(金) 08:27:18 ID:2TKxnanC
>>522 ロゴっていうのがよくわからないが
>それともHTMLである程度(HPのヘッダー部分や上のロゴとか)
>作ってから掲示板としてはじめたい行からCGIでプログラムを書き始めるものなのでしょうか?
この辺はPHPなら出来る
>それとも掲示板のページは最初からCGIでヘッダーやロゴの部分もCGIパール言語で書き始める、とういうものなのですか?
Perlはそう
で、ここは C/C++ のスレです
525 :
nobodyさん :2007/04/21(土) 13:51:12 ID:DYrM8nyl
>>496 画面下に
ずるぽんあぷろだ + レッツ PHP!
となっているから
phpじゃない?
526 :
496 :2007/04/23(月) 20:14:06 ID:???
527 :
496 :2007/04/26(木) 18:01:43 ID:???
ところで、デバッグって みなさんどうやってます?
別に。ふつーにやってる。
529 :
496 :2007/04/27(金) 18:44:00 ID:???
そうですか。 どうも。
530 :
496 :2007/04/28(土) 11:27:25 ID:???
おはようございます。 ここって人いないですね。
531 :
496 :2007/04/28(土) 20:44:43 ID:???
Cで作ったCGIが正常に終了しないで プロセスとして残ってしまったら どうやって終了させればいいんですか?
cgiだとhttpdから呼ばれてるから再起動しか無いね。
535 :
nobodyさん :2007/05/07(月) 00:58:27 ID:WXo0gSV8
独学でC++を使ってcgiを学んでます。 How to Program in C++って本で 「ユーザーが一度注文したアイテムを ショッピング・カートから消せるようにviewcart.cgiを変更しなさい」 って問題があるんですけど、流れ的にはどうやればいいんですか? viewcart.cgiは元々ユーザーが注文したアイテムを表示するだけのcgiです。 各アイテムにボタンは追加しました。 ただ、shopping.cgiからコピーしてきただけなので 押すとアイテムの数が一つずつ増えていきます。_| ̄|○ クッキーをostreamで開いて直接消してやらないとダメですか? でも、途中にあるデータを消すのって大変ですよね… 後ろのを全部コピーしておいてまたペーストとか…。 一般的にはこういうのはどうするんですか? ヒントをください。そしたら、自分でやってみます。
536 :
535 :2007/05/07(月) 01:05:44 ID:WXo0gSV8
いや、ていうかカートの中身をcookieに持つこと自体がまずありえない まずセッションの使い方を学ぶべし
538 :
535 :2007/05/07(月) 05:38:49 ID:WXo0gSV8
>>537 いや、別に実用するわけじゃないんで
「やっつけ」でカートの中身をcookieに持ってていいんですけど。
(client.txtなんてパスワード暗号化なしですしw)
cookieのいじり方も知っててのレスですよね?
cookieのデータの削除の方法を教えてください。
この本には追加する方法しか書いてないんですよ…。
さっきから検索してるけど全然そういうサイトが見つかりません…。
539 :
535 :2007/05/07(月) 05:40:36 ID:WXo0gSV8
ちなみにセッション管理はPHPで少し勉強しました。 この本の他の問題は全部解いたんですよ。 あとはこれだけなんでどうしても終わらせたいんです。
削除つーか上書きすればいいだけの話なんだが。 あと前提があるならちゃんと最初に書こうな。お互い二度手間だ。
「cookie 削除」でググれば速攻で方法見つかるやん
542 :
535 :2007/05/09(水) 22:54:06 ID:AhyOmpI4
>>540 一つの問題にしては時間がかかりすぎたんでもう諦めました。
本に載ってないことをやらそうとするのが悪い。w
ご協力ありがとうございました。
ゆとり教育の効果は素晴らしいですね(棒読み)
544 :
535 :2007/05/09(水) 22:58:36 ID:AhyOmpI4
>>543 速攻ですな。w
いやね、キーを検索して空白やらマーカーやらで上書きまではやっても
削除にまでは至らなかったんですわ。
ちなみに自分は30歳超えてます。wwwwwwwwww
君がやってるのはプログラミングじゃなくてただのテキストコピー作業だ
546 :
535 :2007/05/09(水) 23:40:33 ID:AhyOmpI4
>>545 その通り!異論なし!w
ま、人間何事もコピーから始まるんですよ。
自分は終わりもコピーですが。
guest guest
548 :
nobodyさん :2007/05/10(木) 23:09:33 ID:AA4DnND/
君たち、ちょっと背伸びしてないか?
削除ってリンクに削除したクッキのリンクを貼ればおk。
550 :
nobodyさん :2007/06/07(木) 22:32:05 ID:GrrIKIFJ
EUCからUTF-8などに変換できる関数が掲載されているサイト教えて
551 :
nobodyさん :2007/06/08(金) 00:26:44 ID:WTsEXDzF
iconv
babel
初めてのCGIをCで作るってのは無茶だよねー。
PerlかPHPかで練習してからじゃないと、
ちょっとした掲示板作るのにすら1ヶ月以上はかかるんじゃないかな。
でもアクセスが集中する大規模サイトは、
Cで書かないとサーバ負荷が高くなりすぎて持たない。
なので、yahooとかもCで書いてる。
そしてCで書く人は、本格的に仕事で書いてる人が多いから
>>451 になり、
このスレも伸びない。
>>554 Cで書いたって、CGIとして使うなら、一般的にmod_perl使うよりも遅くなる。
速さを追求するためにCを使うんだったら、apacheのmodule書いて、自分で
リクエストを捌くに限る。
C/CGIって、余程特殊な場合(Cしか出来ないとか、ソースを渡したくないとか)
を除いて、メリット無いのよね。
>>555 2chのような掲示板の場合は確かにそうだけど、
いろいろ複雑な処理をする大規模サイトになってくると、結局C最強。
前に管理系CGIでボタンを押すと、最新のデータをもとに
サイト内のHTMLを更新するシステムを作ったんだが、
HTMLの数が数百レベルになって、
PHPやPerlだと数分待っても処理が終わらないということに。
Cで作り直してチューニングしたら、わずか数秒。
最近はWebアプリにいろんなことをさせようとしてるから、
ますますWebアプリの処理速度が重要になってくると思うな。
単にバグってたんじゃないのかw Perlで毎日400ファイル更新してるけど2秒ぐらいだぞ @Pentium4
>>557 複雑なサイトだから、あちこちで多重ループをかける必要があったり、
レコード数がかなり多かったり。
できるだけ多重ループにならないように工夫もしたんだが、複雑すぎて無理…。
組み方が下手なだけでした。本当にありがとうございました。
>>559 本当に複雑なシステムっていうのを作ったことがないでしょ?
官庁とかから一度受けてみると良いよ。
意味不明な仕様にこだわって、システムが無駄に複雑になる。
えーと、perlは確かに速くはないけど 普通に処理した場合、Cと比較して数倍程度の差しか出ないでしょ。 もちろん、これはそれなりに時間のかかる処理をした場合。 (インタプリタの起動時間と内部コンパイルの時間があるから) で、下手な奴が作ると、無駄な処理をループ内でやってたり (不要な初期化とか正規表現のコンパイルとか)して時間がかかる。 Cならコンパイラが最適化してくれたりする部分でも。
あと、普通は(DBとの交信等も含め)I/Oがそれなりの比重を占めるから、もっと差はつまる。 だけど喜んで連想配列をループ内で初期化しまくったり インデックスで参照できるのに何故かリニアに探索してたり。
>>561-562 確かにCでは最適化したけど、Perlはそこまで最適化したわけじゃないから、
かなりCに有利な比較ではある。
しかしCで作ってると、ウェブサーバにはほとんど負荷がいかないが、
その代わりDBがボトルネックになる。
Javaのレスポンス/オブジェクトキャッシュのように、
CでもDBの負荷を減らせるうまい方法はないものか・・・。
まあその手のキャッシュを使いたい時は、まずCGIってのがネックになるね。 独立したプロセスだから、交信や共有は面倒。 じゃあapache moduleにすれば良いかと言うと、そうでもない。 これも、基本的にシングルプロセスのMPMは無いから 全体で共有することも出来ないし、 プロセス毎にキャッシュするとしても全体でのメモリ使用量等、効率が悪い。 時間が充分にあって自由自在に出来るのであれば 自前で簡単なシングルプロセス/マルチスレッドなサーバーを書いて apacheでは、必要な時にそのサーバーと交信するmoduleを書いて使う、 というのが速度的にはベストだろう。 まあこのやり方は 実際にはapacheにtomcatを組み合わせるのと本質的な差はないけどね。
ところで皆さんコンパイラは何使ってますか?
>>560 「これは○○県警さんでやった方法なんですが」
「では、それとはちょっと変えてください」
いや、別に変えなくても良いものは
無理して変えんでも良いがな...orz
ソースを渡したくないって、飯を食うのには重要だけどな。 毎回ソース渡してたら、いつかは喰えなくなる。 mod_perlが速いってことは無いな。perl自体重いし、perlもCで書かれてるから、perlの構文解析の分遅い。 結局は、常時起動デーモンのトムキャット方式に落ち着くよね。 誰もが通る道なのかと安心した(w 同じ方法だと同じ攻撃に弱いってのはあるから多様性って重要。 古い所のシステムだと、歴史的経緯で非効率な処理を求められることはよくある。 開発費高めでも払ってくれるので好きだけど。他と同じ単価なら受けないけどな。
CからSQL鯖弄るのって、ODBCぐらいしかない? Cには、JDBCみたいなのは無いよね?
>>569 ODBCとか使わなくても、Cならネイティブドライバ使えばいいのでは…。
他のDBへの移植性を上げたいのならODBCを使うしかないかな。
571 :
nobodyさん :2007/07/27(金) 15:06:25 ID:HlWLP/Z4
CGI から,GetModuleFileName を呼び出すと、ドライブ名の前に"\\?\"という文字が付きますが、 これって、なんなのでしょうか?、教えてください。 Windows 2003 Server、 IIS、Visual Studio 6.0 です。
そのPCそのものを表す。 PCローカルURIって言うとちと違うのかな?
573 :
571 :2007/07/28(土) 08:51:56 ID:QYOm8nEM
>>572 回答どうもです
が、エクスプローラで「\\?\共有名\ファイル名」とやっても「見つかりません」となります。
(「\\コンピュータ名\共有名\ファイル名」だとOK)
>>564 共有メモリ使えばいいだけ。mod_uploaderのソース嫁
キャッシュに共有メモリって・・・ 別にいいけど
何処に不満があるの? worker MPM使って、dispatchはApacheに任せ、データはshm/mmapで共有ってのが現実的だと思うなぁ。 >これも、基本的にシングルプロセスのMPMは無いから >全体で共有することも出来ないし、 これミスリーディングだとおもうな。データ共有するのにシングルプロセスである必要なんて全くないだけだし。
577 :
563 :2007/07/31(火) 03:20:02 ID:???
>>574 ,576
私もあれからいろいろ調べてみたら、
やはり共有メモリを使うって方法にたどり着いた。
ただしDBデータをキャッシュする場合、キャッシュの破棄タイミング、
新しいデータのキャッシュへの反映が難しい。
作成したページをキャッシュする場合も、やはり同じ問題が。
SQLサーバを使わない、もしくはSQLiteを使うとかすれば、
可能ではありそうだけど、それだとDBのクラスタリングが出来ないので意味がない。
PostgreSQLやMySQLのプラグインやトリガーという形で、
キャッシュ管理のプロセスに情報を伝える仕組みが要りそう。
さすがにこれだけの仕組みとなると、とても一人で作るのは無理そうだ。
えーと、あなたのところではSHMMAXが、実装メモリに対して充分な値なわけですね。 例えば、1Gのメモリを積んでいてキャッシュ用途に大部分を使いたいと考えた場合 SHMMAXが数十M程度だとおおいに不満なのですけど。 あ、/proc/sys/kernel/shmmaxで充分な大きさに変更できるならば良いですがね。 それとも、細切れにブロックを確保して頑張ってやりくりしますか。 あと、shmではなくmmapを使う場合を含めて、当然排他機構が必要となるわけですが たかがメモリの読み書き程度で重いといわれるプロセス間のロックはたまりませんね。 もちろん、プロセス間通信と比較すればずっと軽いでしょうが ロック期間を短く(こまめにロック/アンロック)という、一般的に推奨される手法には向きませんな。 スピンロックで足りる用途だけならともかく。
SHMMAXについてはおっしゃるとおり。 >たかがメモリの読み書き程度で重いといわれるプロセス間のロックはたまりませんね。 汎用のロックを使わなければ良いだけだと思う。 mod_uploaderがやってるように、共有メモリ領域に対してCPUのatomic命令を使うとか。 ロック期間が短い→CPUのatomic命令 ロック期間が長い→signal で十分対処できるような。そもそもお金かけて高いサーバ使うならともかくその辺の安いPCでサービス提供するなら別にスレッド使わなくても十分なような。 複数プロセス使うのに必ずしも重い汎用のプロセス間ロックを使う必要なんてないし、なんかミスリーディングだとおもう。最初に結論ありきで論じてませんか?
581 :
nobodyさん :2007/08/03(金) 23:31:03 ID:LuhsKnBr
>>578 詳しいことは理解できないけど
>>578 の性格が悪いことだけは分かった。
もっと普通にかけるだろうに。
>>584 それちょっと古いやつね。
前ちょこっとソース読んだ限りでは、完全に2ch用に特化してるから、
汎用性もなにもあったもんじゃないし、ソースも読みにくい。
CGIってPerlのことですよね? Perlっていうのは言語だからC言語でCGIを作るというのは C言語でPerl言語を作るということなんですか?????
ぐぐれ
588 :
nobodyさん :2007/09/06(木) 17:50:36 ID:VY4R4z3/
C言語で掲示板(簡単なもの)を作りたいのですが 入門書2冊読んだ程度でもできるでしょうか…? ちなみにC言語以外の言語はやったことがなく C言語歴も1ヶ月で大きなプログラムも作ったことがありません。
589 :
nobodyさん :2007/09/06(木) 17:51:48 ID:VY4R4z3/
C言語で掲示板(簡単なもの)を作りたいのですが 入門書2冊読んだ程度でもできるでしょうか…? ちなみにC言語以外の言語はやったことがなく C言語歴も1ヶ月で大きなプログラムも作ったことがありません。
CGIを書くには少なくとも文字列を自由にあやつる必要があるけれど、 Cで文字列が自由自在になるには初心者が一ヶ月では少し足りないような。 まぁでもやって出来ないこたぁないよ。うん。
591 :
nobodyさん :2007/09/06(木) 19:22:43 ID:VY4R4z3/
お返事ありがとうございます。 自由自在…今持ってる本で文字列関係?でわかってないのは str全般とcalloc、malloc、reallocぐらいなんですがここら辺を覚えれば結構違ってきますかね…?
とりあえずHTMLを吐くところから始めてみればいいんじゃない? POSTとか絡んでくると色々大変だけど
私は数年のプログラム経験があったけど、 CGIに必要なライブラリを一通り作るだけで2週間かかったよ。 どこからかライブラリを拾ってこないと、全部一から作ってたら結構大変。
594 :
nobodyさん :2007/09/07(金) 06:49:22 ID:NiQeHZNB
595 :
nobodyさん :2007/09/08(土) 17:40:25 ID:vnaZ3dnt
>>592-593 そうですか・・・とりあえずまだ力不足だしそろそろ学校
も始まってたぶん作る暇もなくなると思うので今は
とりあえずもっと勉強してから作ろうと思います。
>>594 英語多すぎてわかりませんw
でもありがとうございます。出来るだけがんばって読んでみます。
>>594 最低限のライブラリって感じだね。
自作のライブラリってどれくらい容量or行数ある?>All
私のはPHP並に機能揃えたから2.5MBぐらい。
人生はどう手抜きで最大限の成果を得るかだろう
>>596 ほとんどphpにwrapperしちゃってるから自分で書いた部分は1MBも無い
599 :
nobodyさん :2007/09/09(日) 12:50:20 ID:2vrQ8w/W
>>596 馬鹿だろ。手動かすまえに頭動かさないやつは死ね。
STLとBoost使えばなんとかなるんかねー
そう、よかったねw
そういう手抜きをしたきゃ最初からphpで書いた方が早いだろうに・・・
そもそも何に不自由してるのサ
自分で全部好きにしたい、というのはわからんではないけど、 デカいライブラリをメンテするのはそれはそれで大変な気がする。 バージョン管理とか面倒そう。 というわけで、自前の奴はPOST/GETとエスケープくらいしかない。 あと、なんかのBSDライクな奴からパクってきた文字列処理と基本データ構造もあるが。 CでCGIってそれほど頻繁に必要になるわけじゃないんで、これで十分。 2.5MBってソースのサイズかね? それともバイナリ?
607 :
nobodyさん :2007/09/12(水) 14:06:22 ID:aBsU5Vcp
8桁のランダム文字列(特定文字A〜Fのみ) をCGI上にて表示させる方法が知りたいのですが @chara = ('A','B','C','D','E','F'); for($i=0; $i<8; $i++) { $numbera = $chara[int(rand($#chara+1))]; } という表記を現在しています。 しかし、1文字しか表示されないのですが 8桁分ランダムに表示させるにはどのように表記したらよいでしょうか?
>>607 perlはスレ違いだが・・・まぁいいや。
$numbera =
↓
$numbera .=
>>606 > CでCGIってそれほど頻繁に必要になるわけじゃないんで、これで十分。
こっちはメインで使ってるから、メンテとかもさほど気にならない。
> 2.5MBってソースのサイズかね? それともバイナリ?
ソースのサイズ。
バイナリは150〜500KBぐらい。
コアとなるPOST,GET,HTTP Header,File uploadとかのCGI固有の入出力部分以外は 適宜外部ライブラリをリンクするのではだめなの? PHP並の機能っていってもPHPがPHP並の機能をもっているのはPHPの中の人が 全部自分で書いたからじゃなく、たくさんの外部ライブラリとリンクしてるからなわけで。 それともフレームワーク的な機能がたくさんあるのかな?
もう放っといてやれ
>>611 フレームワーク的な機能が多いかな。
外部ライブラリを使いやすくするための中間層的なライブラリも多い。
ぐだぐだいってないでコード公開すればいいんじゃね?
616 :
571 :2007/10/06(土) 16:16:07 ID:???
dat落ち防止
618 :
nobodyさん :2007/11/16(金) 00:44:52 ID:vk2sEYR2
visual c++ 2005 expressで,c++でcgiプログラム作ってるんだけど、
Windows 2000のIISの環境でcgiからファイルをオープンしようとすると、オープンに失敗するんだが・・・
何でか誰かわかりますか?
Windows XPのIISの環境ではちゃんとオープンに成功します。
<環境詳細>
仮想ディレクトリ:Scripts
Inetpub/Scripts/cgi/cgi.exe (
http://hostname/Scripts/cgi/cgi.exe )
Inetpub/wwwroot/form/form.htm (
http://hostname/form/form.htm )
form.htmからcgi.exeにPOST。
cgi.exeは、起動されると Inetpub/Scripts/cgi/file/ フォルダにファイルを
作ろうとするんだけど、WindowsXPだとOpen成功、Windows2000だとOpen失敗。
IISのログを確認する フォルダの書き込み権限を確認する
>>621 ソース見る限りClearSilverよりシンプルだから速そうだけど、機能が全然足りない予感。
まー、本格的に使うには、ClearSilverでも機能/汎用性/拡張性が足りなさそうなんだけどさ。
で、本格的に使ってるおまいらはどうしてるの? PHPで作っちまったほうが速いか?
かなり遅レスになるけど
>>578 は、Lock FreeとかWait Freeなアルゴリズムについて勉強した方が良いと思った。
あと
>>564 も
>自前で簡単なシングルプロセス/マルチスレッドなサーバーを書いて
>apacheでは、必要な時にそのサーバーと交信するmoduleを書いて使う、
>というのが速度的にはベストだろう。
え?って感じ。センス疑う。
まぁmod_uploderのコードもどうかと思うが
その程度のこと、知らないとでも思っているのかね
データの共有手段と排他手段がまったく直行関係にないかのような書き方してる時点でだめなんじゃね?初対面の人がそういうことはなしてたら俺はスキル疑うなぁ
>>626 その自信からするとサイボウスラボとかmixiとかその辺のなかの人でしょうか?
>というのが速度的にはベストだろう。
こう言い切る前にはいくつかの前提が必要なはず。
もしかして自分が普段接している前提条件の下でしか考えられない人?
文系上がりのプログラマってそういうこと多い。自分が暗黙のうちに想定してる前提を忘れがち。 理系だと卒論/修論書くうちにそのへんはみっちりなおされる。
630 :
nobodyさん :2007/12/12(水) 08:36:13 ID:4x7KYrD1
age
>>628 mixiはPerlじゃないっけ?
Yahooと楽天が一部をCで書いてたはず。
632 :
迷う :2007/12/15(土) 08:28:11 ID:???
633 :
迷う :2007/12/16(日) 17:33:32 ID:???
GNU cgicc がよさそう.
634 :
nobodyさん :2007/12/18(火) 18:44:19 ID:vyPDChvS
test
GPLはうんこ
cgiccはLGPLだが
637 :
nobodyさん :2007/12/20(木) 18:02:10 ID:yjctAQBa
C++ で CGI というときに一番の難関は文字コードだと思うんだが そういう危機感がこのスレにあまりないのは やっぱり掲示板とかCMS級のユーザーフレンドリ階層なアプリを誰もC++らないからなのか… JIS, SJIS, EUCJP, UTF7, UTF8, UTF16, UTF32 と改行コードまで自動判別しつつ 相互変化できるクラスを作ろうとしたら死にかけた
babel使ったからそんなもんに苦労しなかったな。 他にもいろいろあるでしょ?
Gaucheのソースが文字コード判定は優秀らしい。 それでもある程度バイト数がないと難しいだろうけど。 できればcharset指定とかを認識して、判断するのが正しいけど、 Webブラウザから渡されるのはcharset指定とかが一切ないからなー。 SJISかUTF-8のどっちを渡されたかは、予め決めておくか、 Gaucheのを使って判定するしかない予感。 変換は普通にiconv使ってる。
判別用文字を仕込んどくんじゃないの?
>>637 文字コードなんて問題にしたことは無い。
何もかもUTF-8で済ますように事前にお膳立てをするから。
携帯の絵文字で困ったことになる
そういや絵文字の範囲を丸々シフトしてiconvを騙してるフィルタのコードを見たことあるな。 あれ、C+iconvじゃなくてjavaだったかな。
sendmailer は UTF-7 必須
FileUploadのC/C++用ライブラリを探しています。 どなたかご存じないでしょうか?
サーバから見て、アップロードしたいのか、ダウンロードしたいのかどっち?
クライアントがアップロードしたものをサーバで受け取る際のHTTPプロトコル(RFC1867) を解析するライブラリが欲しいです。 JavaでいうとCommons FileUploadのような
648 :
645 :2008/01/22(火) 19:19:44 ID:???
ちょっとスレチっぽいが cgiをコマンドラインから直接起動したいんだけど POSTやGETで渡す引数を模擬するにはどうしたらいい?
POSTなら標準入力にぶち込むだけでいい
>>651 REQUEST_METHODとかCONTENT_TYPEとかCONTENT_LENGTHとかの
環境変数も設定する必要があるだろ。
654 :
nobodyさん :2008/01/31(木) 15:15:22 ID:4cRt7TvD
スレ違いかもしれないのですが 成分分析のフリーCGIをどなたかご存じないですか?
expatの使いかたがわからん サンプルソースがおいてあるサイトわかる人いる?
本家のリンク先にあるチュートリアルとソースディストリビューション中のexampleで とりあえず使うには十分じゃない?
perlのクックブック(オライリー)を参考にした。
658 :
nobodyさん :2008/02/12(火) 10:17:26 ID:4A4yMdyj
レンサバ使ってて、C言語可なんですけど OSはLINUX系としか教えてくれない。 シェルは使わせてもらえない。 自前のPCでコンパイルして実行形式をUPしろ。 リンクするときにstaticにしないとダメよ。 としか情報が貰えません。 linuxの実行形式ってカーネルやディストリビューション違っても 互換あるんですかね?
それはC言語使用可能とは言わないだろう。 ともかく、作ったバイナリがサーバで動くかどうかはバイナリの形式とか、 libc他のAPI互換性があるかどうかとか、CPUのアーキテクチャとかによる。 ま、フツーに最近のi386ディストリでgccを使ってスタティックリンクな バイナリを作ればたいがい動くんじゃないの。
660 :
658 :2008/02/12(火) 12:14:03 ID:???
>それはC言語使用可能とは言わないだろう。 ボクもそう思うんですが、C言語使用可能と宣伝してたんです。 isleというそれなりに大きいレンサバ屋です。 cpuはxeonだと自慢してたので386系なのは確実なんですが…
661 :
658 :2008/02/12(火) 12:17:32 ID:???
ちなみにこれがisleのFAQ「C言語は利用できますか」の回答です。 C言語で作成されたスクリプトのご利用も可能ですが、 telnet/sshはご利用いただけないため、iクラスタにて利用している Linux系のOSを利用している端末にてコンパイル後に アップロードしていただく作業が必要となります。 他の端末にてコンパイルする場合には、ライブラリを共有できないため、 static オプションつけたコンパイルを行ってください。
PerlのCGIでgccを叩いてみたらどう? パスが通っていることと、負荷の制限が軽いことが条件だけど。 昔のXREAではそうしていた。 今からVirtual PCという手もある。
663 :
658 :2008/02/12(火) 21:59:48 ID:???
>662 telnet.cgiが使えました。 uname -a でfedora3だということもわかりました。 デバッグ用の環境をfedora3で作ります。 みなさんありがとうございました。
フレーム内の監視を行いたいのですが、これにはどういう仕掛けを作れば良いんでしょうか。 インフレームの内部を監視して、表示された中身をソースかキャプチャで保存するCGIを作りたいのです。
666 :
nobodyさん :2008/04/19(土) 14:56:01 ID:TKfwdaTT
もう復旧した様子
668 :
のし図 :2008/04/23(水) 18:51:13 ID:9jK7Jl1u
ハッカーの仕業!?
670 :
nobodyさん :2008/04/27(日) 17:14:11 ID:xxSAA3Zr
最近はやりのIISの問題を突いてるんじゃないの。
不正アクセス禁止法
672 :
nobodyさん :2008/05/21(水) 02:58:51 ID:H73mNdaA
不正アクセス禁止法
668が嘘をついているという可能性が高い 気がしないでもない
674 :
nobodyさん :2008/07/21(月) 11:22:35 ID:p8NBqSCe
ClearSilver++って落とせる?ftp繋がらないんだけど・・・
>>675 見えてるけど答えになってないよ。
いつ何度やっても繋がらないんだけど?
C++ CGI さいきょー
数年前にCで掲示板作ろうとしたが、文字コードであっけなく挫折 最近そのこと思い出してふらっと調べたら、VSで簡単にunicode扱えるようになってるのな ちょいちょい思い出しながら作ってみるかな
679 :
nobodyさん :2008/09/06(土) 21:33:24 ID:Z1+deiQP
なんだかんだ奥が深いよなぁ
680 :
nobodyさん :2008/09/18(木) 15:01:14 ID:/9HVp0RB
CGIでエラーがあった場合エラーページにリダイレクトしてるんですが、 リダイレクトする前のエラー内容のエラーロギング(fprintf(stder,))が 出力されません。(何も出力されない) syslogを使うことや他の方法も考えたのですが、とりあえずなぜ エラー出力がでないか調べています。 なにか解決策あれば教えてください。 ・apacheはver2.0です ・リダイレクトしない場合は、ちゃんとエラー出力される ・リダイレクトはLocation :〜の絶対パス使用(相対パスによる内部リダイレクトだとエラー出力された) ・他の言語(PHP)で試すと、リダイレクト前のはちゃんと出力される
$data = "MAILADDR=<入力したメールアドレス>\n PASSWORD=<入力したPW>\n"; if (open(FH, ">data.bat")) { print FH $data; close(FH); ↑CGIを使用しページを見ているユーザーに入力を求め、<入力したメールアドレス><入力したPW>に代入?させてファイルに書き出したいのですがいい方法ってありますか?
>>683 fflushもしてみましたが、ダメでした。
何が原因なんだろう。
Location: 受信と同時に接続が切られて、そんでmod_cgiからシグナルが飛んでるとか? でもヘッダで指定したサイズまでは読むだろうしなぁ。 デバッガをアタッチして、なんで死んでるか見てみたら。
fprintfとかCライブラリではなくシステムコール直に叩いてみて
stdoutとstderrは親経由で表示とか、ロギングされてるだろうから、 接続が切られると即捨てられる運命にあるのでは? いや、Location: 受信と同時に接続を切るようなクライアントがあるのかどうかしらんけど。 サイズを指定すればそのバイト数までは読むようになるのかも。
688 :
684 :2008/10/16(木) 00:40:29 ID:???
>686 exec系は一通りwaitしたりしつつ試してみましたが、ダメでした。 fflushなりprintなりは終わっているはずなんですが。。。 >686,687 Location時にもContent-lenghtをつける、ということでしょうか? その場合って、stderrの出力分を指定?でしょうか。 ちなみに、複数台のサーバが全部そういう状態で、割と困ってます。。
689 :
nobodyさん :2008/11/23(日) 08:48:19 ID:Zhb3/Rjb
プロセスが毎回生成されるから c++であってもあんまり良くないんじゃない?
690 :
inaba :2008/11/23(日) 21:54:57 ID:eDvTRSVx
EclipseでWebアプリケーションを開発しています。 サーバを起動時コンソールに以下のようなメッセージが出ます。 2008/11/23 21:23:44 org.apache.catalina.core.AprLifecycleListener init 情報: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_01\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.6.0_01\bin\..\jre\bin\client; C:\Program Files\Java\jdk1.6.0_01\bin\..\jre\bin;hnologies\ATI Control Panel;C:\Program Files\Java\jdk1.6.0_01\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin 2008/11/23 21:23:44 org.apache.coyote.http11.Http11Protocol init 情報: Coyote HTTP/1.1を http-8081 で初期化します 2008/11/23 21:23:44 org.apache.catalina.startup.Catalina load 情報: Initialization processed in 562 ms 2008/11/23 21:23:44 org.apache.catalina.core.StandardService start 情報: サービス Catalina を起動します 2008/11/23 21:23:44 org.apache.catalina.core.StandardEngine start 情報: Starting Servlet Engine: Apache Tomcat/6.0.10 SQL failed com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'ecsite.item' doesn't exist データベースにアクセスできません。原因がわかる方お願いいたします。
マルチ?
692 :
nobodyさん :2009/06/17(水) 02:16:44 ID:zEMbuSde
ほっしゅほっしゅ
文字コード面倒だな。決め打ち最強か。
UNICODE
正直、C/CGIとServletってどっちがはやいの? Servletの仕組みvsC自体の速さの対決になるとは思うが。
こんにちわ。 C++でフリーなサーバ作ってます。 そのCGI部分で質問させていただきます。 php-cgiをexecveして、cgi実行させるところまでは出来たのですが、 POSTが取れません。php-cgi実行時に標準入力に POSTメッセージを書き込んでるのですが、php-cgi では見えないようなんです。 またPHP_SELFも設定できません。 REDIRECT_STATUSとSCRIPT_FILENAMEは設定しました。 どこに聞けばいいかとか情報お持ちの方はお願いします。 環境はfedora core 7とg++です。 phpは標準についてくるものだけです。 よろしくお願い申し上げます。
696です。自己解決しました。 POSTという文字列が大文字小文字区別がありました。 まとめておくと、 SCRIPT_FILENAME REDIRECT_STATUS を指定するのが必須。 execve等で/usr/sbin/php-cgi、引数にphpを指定して実行。 POST,GET等はcaseセンシティブということでした。 では。
FastCGI+C が史上最速。
Cでmodにしてしまう方がいいかも
C++&FastCGIでcomet作れるかの
喪主
702 :
nobodyさん :2011/05/24(火) 08:13:53.11 ID:VlEBmKSb
ほす
てす
704 :
中山康幸crue :2011/05/24(火) 20:02:33.72 ID:mRaBHXEo
705 :
nobodyさん :2011/05/29(日) 23:56:49.67 ID:lGKXO+NC
掲示板にレス禁、アク禁を設定出来るcgiって何が必要ですか? 全くの初心者なので教えて下さい
C/C++の開発環境 このスレ的にはね
C#は?