そう、よかったね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作れるかの