C/C++ CGIスレッド at PHP
[2ch|▼Menu]
[前50を表示]
100:nobodyさん
04/05/25 17:05 .net
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 とかする */
 }
}

こういう定型処理をラクにするライブラリとかは、いろいろ出回ってるから探すが吉。

101:nobodyさん
04/05/28 21:45 .net
自分もその辺気になりつつも資料見つけられず躊躇してたんですが
挑戦してみようと思います。

/*ただスクリプトの時にはあまり気にしなかったメモリ管理とか不安もあります。
何かしら”C/C++ゆえに気をつけるべき事”とかあるんでしょうか?*/

102:nobodyさん
04/05/29 10:51 .net
C++はあまり詳しくないが、Cについて気を付けるべき事はたくさんありすぎて、とてもここでは書ききれないがな。
漏れが言えるのはこれくらい。レベル的にバラバラの事書いててスマソ。

・取得したメモリリソースは必ず解放せよ
・変数の型には気を付けすぎるくらい気を付けよ(ロジック調べても分からんバグの原因になる)
・ポインタは理解して使え
・コンパイルするので、変数名は長くてもいい、分かりやすいものを!
・同じ理由で、コメントもしつこく書け
・同じ理由で、短く書こうとするな(バグの原因になる事がある)
・1つの関数を長くしすぎるな
・==演算子で定数と変数を比較する時は、定数を左辺に書け(間違って=にしてもすぐ分かる)
・プログラムテストは慎重に細心に、完璧を目指せ


103:nobodyさん
04/05/30 01:08 .net
C++でも入出力系はstdioのほうがやり易いと思う
小さいし

104:nobodyさん
04/05/30 05:37 .net
>>101
Cなら文字列操作とメモリ管理のライブラリをどこかから調達するか、
自作してから取り掛かった方がいいよ。
バッファオーバーフロー対策が一番面倒だから。

105:nobodyさん
04/05/31 18:03 .net
perlとかにあるsplit関数に当たるものがあると便利

106:nobodyさん
04/05/31 19:24 .net
>>102
ありがとうございます。
C/C++以外でも使えそうなTIPSが多くて参考になります。
慎重さは勿論のこと、ちょっとした工夫も大事と再認識しました。
>>104
こちらもありがとうございます。
まずはそういうライブラリを読むところから始めてみますね。

107:nobodyさん
04/06/01 00:28 .net
昔、Lispやっててperlのsplit関数自作したことあったな

108:nobodyさん
04/06/06 21:23 NScYEbPc.net
jcode.plのようなものってありませんか?

109:nobodyさん
04/06/06 21:48 .net
iconv

110:nobodyさん
04/06/07 01:33 H9Q5V/FE.net
C/C++/D用(ってかx86用)のアプリケーションサーバが出たら乗り換えますか?
関数、クラスの単体テストエンジンとかついたようなヤツで。

111:nobodyさん
04/06/11 01:06 .net
スタンドアローンて拡張性無いけど手軽なのよね

112:nobodyさん
04/06/26 15:46 .net
perlやphpに比べて生産性が低くて不利ですな。
mod_perlにスピードで負ける事もあるし。
mod_cobolとかあるのかしら

113:nobodyさん
04/06/26 15:49 .net
( ´_ゝ`)フーン

114:nobodyさん
04/06/27 18:25 EhMRIfAG.net
すまん、CでCGI作るときに便利なライブラリとかってないかな。
探しても探してもでてこないんだが・・・

115:nobodyさん
04/06/27 20:07 .net
( ´,_ゝ`)プッ

116:nobodyさん
04/06/27 20:10 EhMRIfAG.net
こんなに必死に頼んでいるのに教えてくれないなんて、
ここはひどいインターネットですね!

117:nobodyさん
04/06/27 20:21 .net
(・∀・)ニヤニヤ

118:nobodyさん
04/06/27 20:25 .net
2chだからある程度は割り切らないと

119:nobodyさん
04/06/27 20:43 EhMRIfAG.net
// ここはひどい(ry のネタ知らない人がいるっぽ
探してもやっぱり見つからんです。


120:nobodyさん
04/06/27 20:56 .net
いい加減なやつしかいないスレにはいい加減に書き込めばいいんだよ

121:nobodyさん
04/06/27 21:56 .net
>>114
>探しても探してもでてこないんだが・・・

URLリンク(www.gnu.org)
お好きなのをどうぞ。




122:nobodyさん
04/06/28 16:49 Mb32PIG4.net
webminなんかがどう関係あるんだろうと小一時間(ry

123:nobodyさん
04/06/28 18:59 .net
フォームのデコード&検索クラスがあればあとはどうでもいいけどね
所詮ラインプログラムだし

124:nobodyさん
04/06/28 19:14 .net
>>122
gnu.orgの人に聞いてくれたまえ。


125:nobodyさん
04/06/29 15:43 .net
gnu.orgの人も大変だな

126:nobodyさん
04/06/29 18:42 iEl5sUlF.net
URLリンク(www1.harenet.ne.jp)
これに英文の問題を入れたい場合、Word.jsはどのようにいじれば?

127:大学の宿題だけど意味不明、おしえてけろ
04/07/02 22:30 rGD5/XCW.net
下記のフォローチャート教えて!
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    ←←乗算結果
                |

128:nobodyさん
04/07/02 22:40 .net
ローカルルールくらい読んでくれな

129:大学の宿題だけど意味不明、おしえてけろ
04/07/02 22:45 rGD5/XCW.net
下記のフォローチャート教えて!

図形の右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■     ■

130:nobodyさん
04/07/03 00:39 .net
>>129

(Start)
 ↓
[回転処理]
 ↓
(End)


131:nobodyさん
04/07/03 11:52 .net
$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版はどうすればいいんですかね・・・?

132:nobodyさん
04/07/03 11:53 .net
( ゚д゚)ポカーン

133:nobodyさん
04/07/05 15:51 /46odsg/.net
Cで画像のアップロードCGI作ってるんだけど、
データの取得の方法が分からんのよ。

if ( strcmp(method, "POST") == 0 ) {

// コンテンツ長の取得
contentLength = getenv("CONTENT_LENGTH");

// バッファサイズの判定
if( atoi(contentLength) > LINE_BUFFER ) {

// バッファサイズエラー
exit(0);
}


fgets(Data, (int)contentLength, stdin);

}
これじゃDataには入らないの?

134:nobodyさん
04/07/05 16:25 .net
% man 3 fgets

135:nobodyさん
04/07/05 16:27 .net
>>133
>これじゃDataには入らないの?

URLリンク(www2k.biglobe.ne.jp)
参考になるかも。

アップロードの場合、
getenv("CONTENT_TYPE")がapplication/x-www-form-urlencoded
じゃなくて、multipart/form-data; boundary=----------hogehogeohogehoge
ってなってるはずだから読み込んだデータを分離する必要あるんじゃない?

136:nobodyさん
04/07/05 18:14 /46odsg/.net
>multipart/form-data; boundary=----------hogehogeohogehoge
>ってなってるはずだから読み込んだデータを分離する必要あるんじゃない?

色々と試した結果、データ分離前まではできました。
分離させんの大変そうだなぁ。

137:nobodyさん
04/07/05 18:16 .net
( ゚д゚)ポカーン

138:nobodyさん
04/07/05 18:49 .net
>>137

ageてまで何が言いたいのかわからん。
いいあるなら方法教えてよ。

139:nobodyさん
04/07/05 20:15 .net
教えて君ウザイ

140:いいあるなら
04/07/05 21:12 .net
いいあるなら

141:138
04/07/05 21:38 .net
>>139-140
   , -‐−-、  ヽ∧∧∧ //  |
.  /////_ハ ヽ< 釣れた!> ハ
  レ//j け ,fjlリ / ∨∨V ヽ  h. ゚l;
 ハイイト、"ヮノハ     //   |::: j  。
  /⌒ヽヾ'リ、     //     ヾ、≦ '
. {   j`ー' ハ      // ヽ∧∧∧∧∧∧∨/
  k〜'l   レヘ.   ,r'ス < 初めてなのに >
  | ヽ \ ト、 ヽ-kヾソ < 釣れちゃった!>
.  l  \ `ー‐ゝ-〈/´   / ∨∨∨∨∨∨ヽ
  l     `ー-、___ノ
  ハ   ´ ̄` 〈/‐-、

142:nobodyさん
04/07/05 22:36 .net
stdinから丸呑みしてファイルにでも保存してみろ。

143:138
04/07/05 23:42 .net
>>142
またまた釣れた。

144:nobodyさん
04/07/06 08:43 LzoVUw8w.net
CでCGIは既に古典的なんだから
知らない人の手助けでもせんと
このスレの意味ないじゃん

145:nobodyさん
04/07/06 09:27 .net
% man 2 read
% man 3 fread
% man 3 fgets

146:nobodyさん
04/07/06 10:28 .net
ここは、そんな餌で俺がクマーなインターネッツですね

147:nobodyさん
04/07/06 11:39 .net
プログラム板へ書き込んだのですが放置されました。。(涙)
マルチで申し訳ないですが再度書き込まさせていただきます。

この度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;
/*----------------------*/

148:nobodyさん
04/07/06 11:42 .net
機種依存文字使うなヴォケ

149:147
04/07/06 11:50 .net
書き忘れましたが、Cで作っているプログラムです。コンパイル問題なく通ります。
apacheのエラーログを見ると”premature end of script headers”と出ているので
どうもhtmlに出力時にCGIが死んでる見たいです。
同じ現象が出ている人も多いと勝手に思ってるのですが、私だけなんでしょうか??
ググっても perlのことばかりなんで・・・・

150:147
04/07/06 11:53 .net
>>148
localtime(&lt);のことですか?
&を大文字で書かないと2ちゃんに書き込むときに
">"に変換されてしまうんで・・・


151:nobodyさん
04/07/06 12:03 .net
なんだ、ネタだったのか…
釣られちゃったよ orz

152:nobodyさん
04/07/06 12:07 NBQAU1O/.net
CGIの出力でSSIを使いたいのですが
使えます?使ってる人いますか?


153:nobodyさん
04/07/06 12:19 .net
(´-`).。oO(アホか・・・)

154:152
04/07/06 12:23 NBQAU1O/.net
>>153

なんで?なんでアホなの??
サーバーがパースしてくれないから絶対使えないの??

155:nobodyさん
04/07/06 12:25 .net
そんな餌で俺がクマー(AA略

156:152
04/07/06 12:27 NBQAU1O/.net
マジな質問でも釣りとかいわれるスレなんだね・・・

157:nobodyさん
04/07/06 12:29 .net
それ以前にスレ違い

158:152
04/07/06 12:33 NBQAU1O/.net
なんで?CのCGIでSSIを出力したいんだよ?
このスレジャン

159:nobodyさん
04/07/06 12:38 .net
こいつはCのCGIで出力するhtmlについてもここで聞くのだろうな・・・

160:152
04/07/06 13:20 NBQAU1O/.net
>>159

知らないんだろ?w

161:nobodyさん
04/07/06 13:28 .net
釣れますか?

162:152
04/07/06 13:30 NBQAU1O/.net
くだらない釣りすんなよ・・スレ汚しが・・・

163:nobodyさん
04/07/06 13:31 .net
このスレ、なんか臭いな

164:152
04/07/06 13:34 NBQAU1O/.net
お前が臭くしたんだよ・・・

165:147
04/07/06 13:41 .net
>>151さん
ネタじゃないんですよ。。本気で悩んでます。。

>>152さん
SSIを使いたいというのはよくわからんのですが
特定のHTMLの一部分に数値等を表示させたいということでいいんですか?

166:nobodyさん
04/07/06 14:01 .net
localtime(<);

167:152
04/07/06 14:11 NBQAU1O/.net
>>165

<!--#include file="他のファイル.html" -->を使って他のhtml
ファイルを取り込んでブラウザーに出力できないかなって思ったんです。

SSIってhttpdがファイルをパースして結果を置き換えますよね・・・

なんで出力をパースさせればいいのかな??
CGIからの出力をパースさせるのはhttpdの設定(apacheなんでhttpd.conf)??

なんて考えてたんですけど実際はどうすればいいのかわからないので
質問してみたんです・・・・・



168:nobodyさん
04/07/06 14:28 .net
SSIの基本を理解してないならくだ質スレへどうぞ

169:152
04/07/06 14:35 NBQAU1O/.net
>>168

はあ?どこがわかってねえっていうんだよボケ!
つーかどこが理解してないかいえねえだろ?
トリアエズくだらねえツッコミばっか入れてるキモイてめえはこんりんざいだまってろ
アホ。

170:nobodyさん
04/07/06 14:38 .net
どうもならんな・・・
己の無知に気がついていない

171:152
04/07/06 14:45 NBQAU1O/.net
何もいわないで適当に批判すれば頭がよくみられるんだなこのスレでは・・・

172:nobodyさん
04/07/06 14:50 .net
もう回答は得られないのだから好きに吠えていろ池沼

173:nobodyさん
04/07/06 15:00 .net
おまいら、これでも見てモチツケ
URLリンク(www.sweetnote.com)
URLリンク(www.sweetnote.com)

174:152
04/07/06 15:03 NBQAU1O/.net
147みたいなまともな人もいるんだけど、
172みたいなどうしようもない負け犬がわんわん吠えると
とたんに堕スレになっちゃうな。


175:nobodyさん
04/07/06 15:19 .net
>>173
見れないよう

176:147
04/07/06 15:45 .net
>>152
あんまりあつくなっても・・・・
SSIうんぬんではなくて
Cでパースして出力すればできるのでは?

177:黒死犬 ◆EgxBlf8nvc
04/07/06 16:45 .net
AddType

178:fff
04/07/06 16:50 .net
>>SSI
URLリンク(httpd.apache.org)
という感じで、"You can't."だと。しかし、
This is a feature The Apache Group hopes to add in the next major release after 1.3.
で、付加される機能かも知れない。知らないが。

179:nobodyさん
04/07/06 16:56 .net
>>147
とりあえずprintfとかでヘッダーを出力した後にfflushしておけばそのエラーは出ないかも。

180:179
04/07/06 17:08 .net
というか、その前に落ちているのか。
おそらく問題は他にある。

181:黒死犬(魚かも) ◆EgxBlf8nvc
04/07/06 17:18 .net
ヘッダにいらんもん出力してるって分かってんだから
プログラムが出力してる内容を見れば良いだけじゃない・・・

182:nobodyさん
04/07/06 17:19 .net
>>181
ヘッダを出力する前に落ちているだけだろ。馬鹿かお前は。

183:黒死犬(魚かも) ◆EgxBlf8nvc
04/07/06 17:21 .net
いやいや、違いますよ
>>149
を読んでください

184:黒死犬(魚かも) ◆EgxBlf8nvc
04/07/06 17:22 .net
すまそ誤爆った
でしゃばってすまぬ

185:nobodyさん
04/07/06 17:22 .net
落ちてヘッダを出力していないから「premature end of script headers」になるんだよ。


186:nobodyさん
04/07/06 17:32 .net
CGIが出力するhtmlにSSIを書いても動きません。

はい終了。

方法はあるけど152みたいなやつには教えん。

187:nobodyさん
04/07/06 17:40 .net
少なくともapache 2.0.50で動くことは今確認できた
でも完全にスレ違いの話題だな

>>152はこんなところで煽ってる暇があったら自分で調べろよヴォケ

188:147
04/07/06 17:58 .net
179さん、黒死犬(魚かも)さん、187さん

アドバイスありがとうございます。

プログラムの内容は、
@入力フォームのhtmlの数値を取り込み計算
A計算結果画面のhtmlに計算結果数値を埋め込んでいく

という一般的なものなんです。
Time関数を使用している箇所を除くと表示できるのですが。。
187さんの言うとおりapacheの問題かもしれませんね。2.0.50で試してみます。
スレ違いで申し訳ありませんでした。

189:nobodyさん
04/07/06 18:02 .net
>>188

シェル上で擬似的なパラメータを渡してテストとかしないの?
>Time関数を使用している箇所を除くと表示できるのですが。。
そこまでわかっているのなら簡単なサンプルでデバッガのお世話
になるとか?

190:147
04/07/06 18:11 .net
>>189

うっ・・おっしゃるとおりです。。
問題の部分のみで再度チェックいたします。

191:nobodyさん
04/07/06 18:19 .net
>>188
>>187はSSIのことね
CGIが出力したSSIが動くということ

>>147>>189タンの書いた通り
まずコマンドラインから実行できるかどうかチェックすべき

あとは、ヘッダを出力する前に落ちているのであれば
原始的な方法だけど、ヘッダを出力する場所を変えてみるとか
最初にヘッダを出力した場合動くかどうか

192:nobodyさん
04/07/06 18:21 .net
>>188
機種依存文字を使うなと前にも言われただろ

193:nobodyさん
04/07/06 20:57 .net
>>169
こんな暴言吐く人に回答する義理も無いわけで。
漏れはスルーしてたけど、ここの住民さんは意外と優しいのだな・・・。

194:152
04/07/07 08:18 Zb/loxvw.net
>>176

そうですよね・・・SSIにこだわる理由はないですね・・・
冷静に考えたらオーバーヘットもあるしSSIを出力する意味ないですよね。
素直にCでパースします。ありがとうございました。

>>俺様に暴言を吐いた有象無象ども

おめえら使えねえんだよ、アホ。
たいした知識でもねえのに出し惜しみするチンカスは一生すっこんでろボケ。

195:nobodyさん
04/07/07 09:28 .net
なんだ、結局SSIで動かすことができなかったんだな(プ

196:152
04/07/07 10:55 Zb/loxvw.net
>>195

出来たけどお前には教えない(プ

197:nobodyさん
04/07/07 16:01 .net
【厨房のための煽り煽られ講座】

言い返せないけど負けは認めたくない
  → ( ´,_ゝ`)プッ
  → 無知白痴は黙ってろ
  → 知能障害をおこす
  → 出来たけどお前には教えない(プ  ←>>152

198:nobodyさん
04/07/08 02:16 .net
まぁ夏だからしょうがないのか・・・

199:nobodyさん
04/07/08 04:04 .net
暑さはヒトをダメにする

200:nobodyさん
04/07/08 10:26 073/5w7j.net
そもそも今時CでCGIというのが不自然なんだから
変なのが湧いてくるのは仕方がない。

Cの入門者用に掲示板程度のサンプルを提供するのは意味があるかもしれんが
それ以上の高機能なものは大人しくperlかPHPで作ればいいんです。
CでCGIを開発出来ても誰も誉めてくれないし一銭にもならないのではないか?

          ,.. -―-- |
       ,.' ´ ``´  ̄ ``. .|
     ,. '´   ,   、   .|
   /   ,  l  i  ヽ \ .|
   / ./ /,'  !ヽ ヽ  ヽ. ヽ.|
  / / ./ l _⊥ヽ‐ヽ、'T''| |って書き込んだらC信者が何人か釣れるのカナ?
  {{ |  | レ'! ヽ\_\,,-,‐-.|
  l l l  | | |/Tハ    |::f;;}||
   !ヽN |、 | !` l:リ}     ‐'‐'.| 
      `!ヽN ヽ" `ー    .| 
      | | | `i - ..,.. '´''.|
        ! ! l,-┴/ハ   |
       ヽ N,. '´,.=El=、、/|

201:nobodyさん
04/07/08 13:45 .net
【厨房のための煽り煽られ講座】

言い返せないけど負けは認めたくない
  → ( ´,_ゝ`)プッ
  → 無知白痴は黙ってろ
  → 知能障害をおこす
  → 出来たけどお前には教えない(プ  ←>>152
→ 釣りを始める ←>>200(>>152)

202:nobodyさん
04/07/08 19:05 .net
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;

203:nobodyさん
04/07/08 20:14 .net
( ゚д゚)ポカーン

204:nobodyさん
04/07/08 21:03 .net
このスレもうだめぽ゚・(ノД`)・゚・。

205:nobodyさん
04/07/09 13:27 .net
なんか、もう、ぬるぽだな

206:nobodyさん
04/07/11 02:25 .net
>>205
ガッ

207:名無しさん@そうだ選挙に行こう
04/07/11 17:20 8T5rEfNa.net
URLリンク(puppy.cute.tc)の、
ReportBoardのCGIは何処のCGIですか?
似たCGIでもいいです。
わかる人がいたら教えてください。

208:名無しさん@そうだ選挙に行こう
04/07/11 17:34 .net
>>207
板違い

209:nobodyさん
04/07/18 23:47 .net
保守

210:C言語がイイよね?
04/07/28 23:38 UZklF3eT.net
CでURLエンコードするコードを考えてマス
文字列の中で2バイト文字だけ判別して
判別した文字を16進数にキャストしてやれば
出来ると思うのですが、具体的なコードが浮んできません。
ウマイコードあったら参考にさせてください。

211:nobodyさん
04/07/29 05:58 .net
>>210
ここ↓の
URLリンク(www-cms.phys.s.u-tokyo.ac.jp)
「FORMデータの処理」「漢字コードの処理」を参考にしてまつよ。
他にも検索すれば出てくると思う。

212:GROAD ◆4C1MajRa36
04/07/31 11:59 .net
ぬるぽ

213:nobodyさん
04/08/01 14:53 .net
>>212
ガッ

214:nobodyさん
04/08/04 20:03 .net
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です。

215:nobodyさん
04/08/05 18:01 .net
ヘッダ後の改行は2回だがまさか…違うよなぁ。

216:nobodyさん
04/08/06 00:00 .net
で、当然、"\x1f\x8b"が何なのかはぐぐってみたんだよな?

217:nobodyさん
04/08/08 15:16 .net
>>214 の自己レス

gzipをpopenで出力してた。
mod_gzipにしたら解決しました。

218:nobodyさん
04/08/08 20:39 .net
>>217
解決おめ

219:nobodyさん
04/08/11 23:44 .net
Fast-CGIを利用すると、更に速くなるのかな。

220:nobodyさん
04/08/11 23:57 .net
むしろ使わないとPHPとかmod_perlより遅い。

221:nobodyさん
04/08/12 14:52 PHf7JWmC.net
(・∀・)renice!

222:nobodyさん
04/08/14 15:00 inflZLdK.net
>>220

まじで?なんでえ?

223:nobodyさん
04/08/14 17:15 .net
プロセス起動コスト

224:nobodyさん
04/08/14 21:20 .net
modではないPerlとかRubyよりは早い
コードがへたれだとそれよりも遅い

225:nobodyさん
04/08/14 21:23 .net
( ゚д゚)ポカーン

226:nobodyさん
04/08/14 21:28 .net
言語の違いにおける速さの差は線形だけど、
アルゴリズムの差は簡単に対数以上になっちゃうからね

227:nobodyさん
04/08/14 21:41 .net
回るのは遅いけど何か書くと即効でレスが返ってくるんだよなここ
見てる奴は多いのかな

228:nobodyさん
04/08/14 21:42 .net
粘着がいるだけだろ

229:nobodyさん
04/08/15 11:26 .net
HPでCのCGIを使いたいのですが、
コンパイル時のコマンドは
gcc -o test.cgi test.c
でよいのでしょうか?

230:nobodyさん
04/08/15 11:55 .net
>>229
HP-UXだとccだろ。


231:nobodyさん
04/08/15 12:15 .net
>>229-230
ワラタ

232:229
04/08/15 12:39 .net
HPはホームページの略で使いましたが…紛らわしいですね。
ccは使えないんですが…

233:229
04/08/15 13:24 .net
とりあえず
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;
}
原因は何でしょうか?

234:nobodyさん
04/08/15 13:35 .net
( ゚д゚)ポカーン

235:nobodyさん
04/08/15 14:55 .net
エラーメッセージも書いてない香具師に釣られるなよ

236:nobodyさん
04/08/15 14:59 .net
>>235
Internal Server Errorと言う答えになんの意味があるというのだ。

237:nobodyさん
04/08/15 15:00 .net
\n -> \r\n\r\n

238:nobodyさん
04/08/15 15:00 .net
Windowsかよ

239:nobodyさん
04/08/15 15:02 .net
サーバと違うOSでコンパイルしてるんじゃないのか?
テキストモードでうぷしたりしてるんじゃないのか?
sshで接続してスタンドアロンで動くかどうかまず確かめろよ。
あとは考えるのマンドクセ。

240:229
04/08/15 15:04 .net
確かサーバー側はLINUXだったので違うOSですね。


241:nobodyさん
04/08/15 15:10 .net
サーバーでコンパイルするかクロスコンパイルでぐぐってね。
ばいばい。

242:nobodyさん
04/08/15 16:05 .net
>>240
で、コンパイルマシンはHP-UXなのか?

243:229
04/08/15 23:43 .net
コンパイルマシンはWINDOWSです…

244:nobodyさん
04/08/16 00:08 .net
窓のアプリケーションがLinuxで動くわけなかろーがこのバカチンがー

マジレスすると、お前には無理なので諦めろ

245:nobodyさん
04/08/16 00:14 .net
おまいら釣られすぎ

246:nobodyさん
04/08/16 00:18 .net
>>244
Perlと同じ感覚なんじゃないかと

247:229
04/08/16 00:28 .net
もうちょっと勉強してからやります。
Perlと同じような物だと思ってました…

248:nobodyさん
04/08/16 06:26 .net
>>247
>もうちょっと勉強してからやります。
>Perlと同じような物だと思ってました…

プロの釣り師だな

249:nobodyさん
04/08/20 02:03 .net
>>229 >>247
マジ釣られしてやろう。スクリプト言語は文字ベースの互換性があるが、
コンパイル言語はバイナリベースでの互換性を確保しなければならん。
よって、互換プラットホーム間でなければ動かん。
もっと勉強汁。

250:nobodyさん
04/08/21 11:33 .net


251:nobodyさん
04/08/21 12:59 .net
WindowsでGCC使ってクロスコンパイルかけたのかもしれないじゃないか。
100%ないけど。

252:nobodyさん
04/08/21 16:06 .net
gccを使っているのは確かだ。

253:nobodyさん
04/08/22 23:49 OO5ezOdW.net
でもいかりや長介が逝っちゃったことに
変わりはない。

無念!

254:nobodyさん
04/08/23 09:54 .net
>>253
コスモを感じる

255:nobodyさん
04/08/24 12:54 .net
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:tokimushi@yahoo.co.jp" title="この投稿者にメールを送る">名前</a></h3>
  <ul>
   <li class="time"><span class="label">投稿時刻</span> 2004年08月07日(土)17時54分04秒</li>
   <li class="url"><a href="URLリンク(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 .net
誤爆すいません

257:nobodyさん
04/08/24 13:22 .net
>>255
UTF-8の掲示板は重いから嫌

258:nobodyさん
04/08/30 09:03 .net


259:nobodyさん
04/09/07 13:19 .net


260:nobodyさん
04/09/07 22:17 .net
ネタがありませんなあ

261:nobodyさん
04/09/08 00:54 .net
こっちは微妙に伸びとる
スレリンク(php板)


262:nobodyさん
04/09/08 01:07 .net
スレリンク(php板)

263:nobodyさん
04/09/26 01:20:15 .net
遅レス
>>255
うほ、いいdiv厨

264:nobodyさん
04/09/27 13:16:42 .net
カウンタを作ってるのですが
日にちがかわったら今日のカウントを昨日のカウントへコピーして
今日のカウントを初期化するIF分がわかりません
教えてください

265:nobodyさん
04/09/27 14:56:10 .net
(  ゚,_ゝ゚)バカジャネーノ

266:nobodyさん
04/09/27 16:58:41 .net
>>264
お前プログラム向いてないよ。サンプル漁る位しれ。

267:nobodyさん
04/09/27 21:25:52 yrxaF59A.net
釣れた!初めてなのに釣れちゃった!(AA略

268:nobodyさん
04/09/27 23:08:37 .net
こんな活きの無い魚でそんなに喜ぶなよ

269:nobodyさん
04/10/01 15:04:26 .net
活きの無い

( ´,_ゝ`)プッ

270:nobodyさん
04/10/01 16:56:12 .net
4日も経ってからsageで煽るなって

271:nobodyさん
04/10/01 17:46:36 qscnRJvR.net
あのーPHPがアパッチのモジュールで動作するから早いって聞いたんですよ・・・

Cで書いてもCGIとして実行してたらプロセスとして実行するから結構負荷がかかっちゃいますかね・・・
でもCGI使わずにモジュールで動作するようにすればCの方が早いんですかね・・・

PHPの開発は日本人が多いから日本国内ではPHPの方が早いってことになってるんですかね・・・
それともベンチマークテストやったら実際に早いんすかね・・・

そこらへんをすっきり説明してくださる方おりませんか?

272:nobodyさん
04/10/01 17:48:41 .net
なんか不勉強で人頼みな奴ほど速度を気にするように思うんだけど、
これってマーフィーの法則ですか。

273:nobodyさん
04/10/01 17:52:03 qscnRJvR.net
はいーわたしはマーフィーの法則にしたがって行動しております。

補足なんですけど〜CGIもモジュールですよね〜
PHPのそれはどんなモジュールなんですかね〜
PHPより高速になるCGIモジュールってありますかあ?

274:nobodyさん
04/10/01 17:53:56 .net
裏が取れないという点ではそうかも
背景としては、本来速度を気にする人ってのはハードなシステムを組まされてる人なんだけど、
この手の輩は四六時中ボトルネックを探してるので、何すれば早くなるかとか、早いってのは
どういうことかとか正攻法で理解してて、あんま質問を垂れ流さないってのがあるんだと思う

ところで最近はチューンするにしてもApacheのモジュールにしちゃうこと減りましたね
ってこのネタもスレ違いかorz

275:nobodyさん
04/10/01 17:54:54 .net
>273
うっぜ
死ねカス

276:nobodyさん
04/10/01 18:04:01 qscnRJvR.net
あれへんだなあ・・

何言ってるかわかんなくなってきちゃった・・・・
でもさあPHPってHTMLに記述するスクリプト言語ですよねェ〜

それをパースして実行するんですからあきらかにコンパイルしたCの
プログラムの方が早そうに思えるんですけどねエエ・・・・

277:nobodyさん
04/10/01 18:07:17 qscnRJvR.net
>>275

ウゼェ じゃないんですかああ?
うっぜってどこの方言ですかアア??

やぱありCGIでPHPを使った方がいいんですかねえ・・・
どうなんですかねええ
優秀なみなさ〜〜ん

278:nobodyさん
04/10/01 18:09:14 .net
phpをネタに持ってきた時点で脳が古い。
センスもなし。

279:nobodyさん
04/10/01 18:18:02 qscnRJvR.net
>>272

あ〜ちなみにおくれつっこみですけどお〜〜
それはマーフィーの法則とはいいませんよ〜
それは272さんとその仲間達(272本人かも・・)の法則ですよ〜〜

それとも次ぎのマーフィーの法則に載るんですかあ〜〜
それともマーフィーの法則っていっとけばカッコイイと思ったんですかあ〜

マーフィーの法則をネタに持ってきた時点で脳が古いですよ〜
扇子あげましょうか?

280:nobodyさん
04/10/01 18:23:01 .net
>>274
2chでのやりとりなんてほとんどマーフィーの法則に嵌ってるだろ。

281:nobodyさん
04/10/01 18:29:10 .net
>>278
昔はPHPなら速度比較と処理負荷だけで飯五杯はいけたんだが・・・
もはや残ってる部分といえばコードキャッシュネタくらいか
Cでおかずになるネタは・・・このスレの伸びが何かを語っているな・・・

282:nobodyさん
04/10/01 18:31:49 .net
>>280
それ自体もそうでつか

283:nobodyさん
04/10/01 18:35:57 .net
たいていがマーフィーの法則に当てはまることが法則ってのじゃ利用価値ないじゃん。
どうでもいいけど昔、マ板かどっかにCのコーディングにありがちな「マーCの法則」スレとか無かったっけ。
田代がまだ只の人だったころの話なのだが。

284:nobodyさん
04/10/01 18:48:52 .net
>>283
そりゃ田代本人が出した本のタイトルじゃないのかw
PHPは旬過ぎたけど user ml がまだまだアツイぜ

285:nobodyさん
04/10/01 19:01:49 .net
スレリンク(news板)
反応が薄いな

286:nobodyさん
04/10/19 10:52:37 eOcRyqWU.net
Apache2のWinネイティブなCGIでActiveXEXEと
やりとりってできないんでしょうか?
CGIを普通に起動する分にはちゃんとできてるのですが・・・
いちおうApacheのサービスは「デスクトップとの対話を許可」してあります

287:nobodyさん
04/10/21 10:38:39 GNUlgmPe.net
cとphp

おれはcの方が早いと信じたい!

288:nobodyさん
04/10/21 23:49:17 .net
>>286
なにがやりたいのかいまいち不明

289:nobodyさん
04/10/24 21:41:04 .net
アルゴリズムによってはCの方が早くなるんじゃないだろうか

url文字列のほうは良いんだがmultipart/form-dataのクラスをどういう構造にしたら分りやすいかちょっと悩む
ただの文字列はoperator[]でファイルのときはファイルの情報を持ったオブジェクトを返すでいいかな

290:nobodyさん
04/10/24 21:57:41 .net
車輪の再開発してないで既存のライブラリ使えよ

291:nobodyさん
04/10/27 11:54:00 .net
単純で良い物が無い

292:nobodyさん
04/10/27 23:05:12 .net
単純でよければ自作すればいいじゃーん

293:nobodyさん
04/10/27 23:06:32 .net
だからしてるんじゃないか

294:nobodyさん
04/10/28 06:15:52 .net
このスレはドリフだな

295:nobodyさん
04/10/30 02:13:13 .net
>>289
自分が使いやすい/使いたいように作れば、それで良いと思うよ

296:nobodyさん
04/10/30 02:26:46 .net
C++でCGI作ろうと思ったけど全然ライブラリが揃って無くて駄目だね。
Perlならcpanでサクサク拾えるのに。

297:nobodyさん
04/11/02 10:30:42 .net
>>296
Cのライブラリを使えばいいじゃん

298:nobodyさん
04/11/30 12:32:26 q4147YdE.net
レスポンスがあるかわかりませんが..

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' を渡しますにより、キャストなしで整数からポインタを作りました


URLリンク(docs.sun.com)
これの通りにしたのに
どこがおかしいのでしょうか?

299:nobodyさん
04/11/30 13:42:39 .net
>>298
char *とchar **は違う。

300:nobodyさん
04/11/30 19:18:07 q4147YdE.net
どうもありがとうございます。

char *とchar **は違うとはわかりますが、ではどこをどう直せばよいのでしょうか?
宣言時にchar**とやったり、キャストを入れてみてもやはり警告が出ます。

コンパイルは通りますが、実行時に
iconv()を呼ぶときに必ず
「セグメンテーション違反です
のエラーが出ます

301:nobodyさん
04/11/30 19:56:28 .net
>>300
const char *inp;
char *outp;
(中略)
ret_val = iconv(icv_hook, &inp, in_buf_left, &outp, out_buf_left);

302:nobodyさん
04/11/30 20:09:48 .net
>>301

char *inp;
char *outp;
ret_val = iconv(icv_hook, &inp, &in_buf_left, &outp, &out_buf_left);

なぜか指示どうりではだめでしたがこうやったら正しく実行できたので
とりあえず報告します。


303:nobodyさん
04/11/30 20:20:55 .net
>>302
初めて使う関数は、きっちりmanを見たほうがいいよ。
副作用のこともあるし。

URLリンク(www.linux.or.jp)
これはLinuxのだけど。

304:nobodyさん
04/12/03 15:18:44 .net
C/C++ CGIで、最初に1回だけユーザ認証をやって、
その後同一の実行ファイル上で、ログイン状態を維持する

これを実現するための考え方と、参考になるソースを教えてください。


305:nobodyさん
04/12/03 22:30:06 .net
>>304
同一の実行ファイル上ってのがよくわからない。
言葉通りに解釈すると、Cookieにそのファイルのpathを設定すればいいだけだけど。


306:nobodyさん
04/12/04 00:34:37 .net
PHPのセッション管理のような仕組みを作っちゃえば楽なんだろうけど、作るのは楽じゃない。

307:nobodyさん
04/12/05 06:35:51 .net
>>304

>>305に1票、もしオレがやるなら、やっぱ Cookie使う。
セッション管理より楽だし。
厳密性を求めるのは厳しいけど、ユーザ認証が目的なら、
同じブラウザを使ったかどうか分かる Cookieは充分有効な手段でしょ。

308:nobodyさん
04/12/05 06:40:37 4YEMHaP5.net
>>304
ソースくらい検索してほしいが、オレのブックマークにこんなのが入っていたので参考までに。
URLリンク(sometime.minidns.net)

309:nobodyさん
04/12/05 06:41:11 .net
sageるつもりだったがついうっかり・・・ OTL

310:305
04/12/05 10:05:05 .net
> 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設定だけで済むかと思ったので。


311:nobodyさん
04/12/05 11:23:18 .net
URLリンク(sometime.minidns.net)

312:nobodyさん
04/12/05 16:32:23 .net
普通にクッキーデコーダクラス作ればいいだけの話じゃん。
おいらはurl_decodeクラスとそこからget,post,cookieの継承クラス作ったけど。
データ構造は自作二分木

313:nobodyさん
04/12/05 17:12:51 .net
そういう手続き型のはモジュールでやったほうがいいと思われ

314:nobodyさん
04/12/05 17:17:25 .net
>>313
そうか?
ヘンテコな抽象化だなとは思うが、リクエストとかユーザステートみたいな
他の設計クラスとかち合わなきゃどうでもよくね。
クラス=メソッドってOOとしてはNGだけど、Cppなんだし。

315:nobodyさん
04/12/05 17:28:03 .net
C++はオブジェクトをとるかデータ構造をとるかでよく迷わされる
Cでやることも考えるなら、そう迷うこともないけど

316:nobodyさん
04/12/05 17:30:13 .net
おいおいLispスレが立ったぞ。ドンケツ脱出だな。

317:nobodyさん
04/12/05 18:46:29 .net
>>316
ACLかよw
そりゃ間違いなく脱出だが

318:304
04/12/07 09:58:50 .net
アドバイスありがとうございます。
色々試してみます。


319:nobodyさん
04/12/25 01:16:54 .net
みんなUTFとか使ってる?

320:nobodyさん
05/01/19 15:43:33 .net
((void *)0)

321:nobodyさん
05/01/21 13:43:21 Z6ezIjZ/.net
ばかばかしい質問かもしれないんですが
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 ファイルを保存しますか?」
となってしまいます。
どこがおかしいのでしょうか

何か見落としているかも知れないので指摘いただきたいです


322:nobodyさん
05/01/21 15:52:04 .net
>>321
content-typeが変なのになってるんじゃないでしょうか。

323:321
05/01/21 16:58:47 .net
普通に
Content-type: text/html
です。

テスト用に時刻表示するやつを作ってみましたが
以下のテキストを吐き出すだけです。
Content-type: text/html

<html>
Fri Jan 21 16:53:21 2005
</html>

これもブラウザから見ようとすると
やっぱりファイルを保存しますか?となってます


324:nobodyさん
05/01/21 17:39:21 .net
>>323
保存したファイルの中身は?

325:321
05/01/21 18:10:27 .net
>>324
保存したファイルの中身を見てみましたが実行用のバイナリファイル
そのものだと思います。
出力結果とかが保存されてるわけではない(と思う)です



326:nobodyさん
05/01/21 18:44:53 .net
AddHandlerは?

327:321
05/01/21 18:56:11 .net
今のところこうなってます

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
.....
AddHandler cgi-script .cgi
AddHandler cgi-script .pl



328:nobodyさん
05/01/21 22:24:50 .net
>>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

設定してからだいぶ経つので細かい意味は忘れてしまった・・・ウチも色んなトコ見て
コピペを繰り返したので、検索しまくってガンガッてほしい。


329:nobodyさん
05/01/22 07:40:07 .net
>>327
Perl CGIは実行できてるんだよね。

330:321
05/01/22 11:24:45 .net
すみません
今確認してみたらPerlCGIも実行できてませんでした...



331:nobodyさん
05/01/22 13:33:32 .net
どこに置いて実行しようとしているんだ?

/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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

532日前に更新/156 KB
担当:undef