C/C++ CGIスレッド

このエントリーをはてなブックマークに追加
601nobodyさん
>>597-599
手抜きするためにこれだけライブラリ揃えたんだけどね。
602nobodyさん:2007/09/09(日) 23:55:25 ID:???
そう、よかったねw
603nobodyさん:2007/09/10(月) 01:02:01 ID:???
そういう手抜きをしたきゃ最初からphpで書いた方が早いだろうに・・・
604nobodyさん:2007/09/10(月) 04:09:10 ID:???
>>603
自分でライブラリ書けば、自由が効く。
605nobodyさん:2007/09/10(月) 21:42:08 ID:???
そもそも何に不自由してるのサ
606nobodyさん:2007/09/11(火) 12:54:32 ID:???
自分で全部好きにしたい、というのはわからんではないけど、
デカいライブラリをメンテするのはそれはそれで大変な気がする。
バージョン管理とか面倒そう。

というわけで、自前の奴はPOST/GETとエスケープくらいしかない。
あと、なんかのBSDライクな奴からパクってきた文字列処理と基本データ構造もあるが。
CでCGIってそれほど頻繁に必要になるわけじゃないんで、これで十分。

2.5MBってソースのサイズかね? それともバイナリ?
607nobodyさん: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桁分ランダムに表示させるにはどのように表記したらよいでしょうか?

608nobodyさん:2007/09/12(水) 18:07:22 ID:???
>>607
perlはスレ違いだが・・・まぁいいや。

$numbera =
 ↓
$numbera .=
609nobodyさん:2007/09/13(木) 09:49:44 ID:???
>>608
やさしいねw
610nobodyさん:2007/09/14(金) 08:33:15 ID:???
>>606
> CでCGIってそれほど頻繁に必要になるわけじゃないんで、これで十分。

こっちはメインで使ってるから、メンテとかもさほど気にならない。

> 2.5MBってソースのサイズかね? それともバイナリ?

ソースのサイズ。
バイナリは150〜500KBぐらい。
611nobodyさん:2007/09/14(金) 11:17:14 ID:???
コアとなるPOST,GET,HTTP Header,File uploadとかのCGI固有の入出力部分以外は
適宜外部ライブラリをリンクするのではだめなの?

PHP並の機能っていってもPHPがPHP並の機能をもっているのはPHPの中の人が
全部自分で書いたからじゃなく、たくさんの外部ライブラリとリンクしてるからなわけで。
それともフレームワーク的な機能がたくさんあるのかな?
612nobodyさん:2007/09/14(金) 11:25:57 ID:???
もう放っといてやれ
613nobodyさん:2007/09/14(金) 12:14:06 ID:???
>>611
フレームワーク的な機能が多いかな。
外部ライブラリを使いやすくするための中間層的なライブラリも多い。
614nobodyさん:2007/09/15(土) 00:28:34 ID:???
ぐだぐだいってないでコード公開すればいいんじゃね?
615nobodyさん:2007/09/18(火) 17:36:28 ID:???
>>571-572
http://msdn2.microsoft.com/en-us/library/aa365247.aspx
今更だけど、\\?\はパスの長さの制限をおよそ32000文字に拡張する接頭辞。
616571:2007/10/06(土) 16:16:07 ID:???
>>615
おー、ありがとう
617nobodyさん:2007/11/14(水) 02:10:36 ID:???
dat落ち防止
618nobodyさん: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失敗。
619nobodyさん:2007/11/16(金) 12:49:38 ID:???
IISのログを確認する
フォルダの書き込み権限を確認する
620nobodyさん:2007/11/16(金) 13:18:09 ID:???
google-ctemplate - Google Code
http://code.google.com/p/google-ctemplate/
621nobodyさん:2007/11/18(日) 05:15:45 ID:???
>>620
ClearSilverより速いのか?
622nobodyさん:2007/11/18(日) 23:17:33 ID:???
>>621
ソース見る限りClearSilverよりシンプルだから速そうだけど、機能が全然足りない予感。
まー、本格的に使うには、ClearSilverでも機能/汎用性/拡張性が足りなさそうなんだけどさ。
623nobodyさん:2007/11/23(金) 16:15:53 ID:???
で、本格的に使ってるおまいらはどうしてるの?
PHPで作っちまったほうが速いか?
624nobodyさん:2007/11/25(日) 09:05:24 ID:???
かなり遅レスになるけど>>578は、Lock FreeとかWait Freeなアルゴリズムについて勉強した方が良いと思った。


あと>>564
>自前で簡単なシングルプロセス/マルチスレッドなサーバーを書いて
>apacheでは、必要な時にそのサーバーと交信するmoduleを書いて使う、
>というのが速度的にはベストだろう。

え?って感じ。センス疑う。
625nobodyさん:2007/11/25(日) 09:12:48 ID:???
まぁmod_uploderのコードもどうかと思うが
626nobodyさん:2007/11/25(日) 12:59:10 ID:???
その程度のこと、知らないとでも思っているのかね
627nobodyさん:2007/11/25(日) 19:54:34 ID:???
データの共有手段と排他手段がまったく直行関係にないかのような書き方してる時点でだめなんじゃね?初対面の人がそういうことはなしてたら俺はスキル疑うなぁ
628nobodyさん:2007/12/11(火) 21:11:10 ID:???
>>626
その自信からするとサイボウスラボとかmixiとかその辺のなかの人でしょうか?

>というのが速度的にはベストだろう。
こう言い切る前にはいくつかの前提が必要なはず。
もしかして自分が普段接している前提条件の下でしか考えられない人?
629nobodyさん:2007/12/11(火) 21:18:21 ID:???
文系上がりのプログラマってそういうこと多い。自分が暗黙のうちに想定してる前提を忘れがち。
理系だと卒論/修論書くうちにそのへんはみっちりなおされる。
630nobodyさん:2007/12/12(水) 08:36:13 ID:4x7KYrD1
age
631nobodyさん:2007/12/12(水) 08:46:46 ID:???
>>628
mixiはPerlじゃないっけ?
Yahooと楽天が一部をCで書いてたはず。
632迷う:2007/12/15(土) 08:28:11 ID:???
633迷う:2007/12/16(日) 17:33:32 ID:???
GNU cgicc がよさそう.
634nobodyさん:2007/12/18(火) 18:44:19 ID:vyPDChvS
test
635nobodyさん:2007/12/18(火) 18:52:24 ID:???
GPLはうんこ
636nobodyさん:2007/12/19(水) 23:58:08 ID:???
cgiccはLGPLだが
637nobodyさん:2007/12/20(木) 18:02:10 ID:yjctAQBa
C++ で CGI というときに一番の難関は文字コードだと思うんだが
そういう危機感がこのスレにあまりないのは
やっぱり掲示板とかCMS級のユーザーフレンドリ階層なアプリを誰もC++らないからなのか…

JIS, SJIS, EUCJP, UTF7, UTF8, UTF16, UTF32 と改行コードまで自動判別しつつ
相互変化できるクラスを作ろうとしたら死にかけた
638nobodyさん:2007/12/20(木) 18:58:34 ID:???
babel使ったからそんなもんに苦労しなかったな。
他にもいろいろあるでしょ?
639nobodyさん:2007/12/20(木) 19:10:00 ID:???
Gaucheのソースが文字コード判定は優秀らしい。
それでもある程度バイト数がないと難しいだろうけど。

できればcharset指定とかを認識して、判断するのが正しいけど、
Webブラウザから渡されるのはcharset指定とかが一切ないからなー。
SJISかUTF-8のどっちを渡されたかは、予め決めておくか、
Gaucheのを使って判定するしかない予感。

変換は普通にiconv使ってる。
640nobodyさん:2007/12/20(木) 19:20:22 ID:???
判別用文字を仕込んどくんじゃないの?
641nobodyさん:2007/12/23(日) 12:00:21 ID:???
>>637
文字コードなんて問題にしたことは無い。
何もかもUTF-8で済ますように事前にお膳立てをするから。
642nobodyさん:2007/12/23(日) 20:42:35 ID:???
携帯の絵文字で困ったことになる
643nobodyさん:2007/12/25(火) 14:44:19 ID:???
そういや絵文字の範囲を丸々シフトしてiconvを騙してるフィルタのコードを見たことあるな。
あれ、C+iconvじゃなくてjavaだったかな。
644nobodyさん:2007/12/25(火) 17:02:56 ID:???
sendmailer は UTF-7 必須
645nobodyさん:2008/01/22(火) 12:04:42 ID:???
FileUploadのC/C++用ライブラリを探しています。
どなたかご存じないでしょうか?
646nobodyさん:2008/01/22(火) 13:08:58 ID:???
サーバから見て、アップロードしたいのか、ダウンロードしたいのかどっち?
647nobodyさん:2008/01/22(火) 19:09:37 ID:???
クライアントがアップロードしたものをサーバで受け取る際のHTTPプロトコル(RFC1867)
を解析するライブラリが欲しいです。
JavaでいうとCommons FileUploadのような
648645:2008/01/22(火) 19:19:44 ID:???
>>647 = >>645 です。_(__)_
649nobodyさん:2008/01/23(水) 13:31:01 ID:???
>>632の中から好きなの選べ
650nobodyさん:2008/01/28(月) 13:56:18 ID:???
ちょっとスレチっぽいが
cgiをコマンドラインから直接起動したいんだけど
POSTやGETで渡す引数を模擬するにはどうしたらいい?
651nobodyさん:2008/01/28(月) 14:39:15 ID:???
POSTなら標準入力にぶち込むだけでいい
652nobodyさん:2008/01/28(月) 14:57:11 ID:???
>>651
REQUEST_METHODとかCONTENT_TYPEとかCONTENT_LENGTHとかの
環境変数も設定する必要があるだろ。
653nobodyさん:2008/01/28(月) 15:25:48 ID:???
>>650
つ RFC3875
654nobodyさん:2008/01/31(木) 15:15:22 ID:4cRt7TvD
スレ違いかもしれないのですが
成分分析のフリーCGIをどなたかご存じないですか?

655nobodyさん:2008/02/03(日) 05:14:18 ID:???
expatの使いかたがわからん
サンプルソースがおいてあるサイトわかる人いる?
656nobodyさん:2008/02/04(月) 10:06:40 ID:???
本家のリンク先にあるチュートリアルとソースディストリビューション中のexampleで
とりあえず使うには十分じゃない?
657nobodyさん:2008/02/05(火) 13:31:05 ID:???
perlのクックブック(オライリー)を参考にした。
658nobodyさん:2008/02/12(火) 10:17:26 ID:4A4yMdyj
レンサバ使ってて、C言語可なんですけど

OSはLINUX系としか教えてくれない。
シェルは使わせてもらえない。
自前のPCでコンパイルして実行形式をUPしろ。
リンクするときにstaticにしないとダメよ。

としか情報が貰えません。
linuxの実行形式ってカーネルやディストリビューション違っても
互換あるんですかね?
659nobodyさん:2008/02/12(火) 11:20:20 ID:???
それはC言語使用可能とは言わないだろう。


ともかく、作ったバイナリがサーバで動くかどうかはバイナリの形式とか、
libc他のAPI互換性があるかどうかとか、CPUのアーキテクチャとかによる。

ま、フツーに最近のi386ディストリでgccを使ってスタティックリンクな
バイナリを作ればたいがい動くんじゃないの。
660658:2008/02/12(火) 12:14:03 ID:???
>それはC言語使用可能とは言わないだろう。

ボクもそう思うんですが、C言語使用可能と宣伝してたんです。
isleというそれなりに大きいレンサバ屋です。

cpuはxeonだと自慢してたので386系なのは確実なんですが…
661658:2008/02/12(火) 12:17:32 ID:???
ちなみにこれがisleのFAQ「C言語は利用できますか」の回答です。

C言語で作成されたスクリプトのご利用も可能ですが、
telnet/sshはご利用いただけないため、iクラスタにて利用している
Linux系のOSを利用している端末にてコンパイル後に
アップロードしていただく作業が必要となります。
他の端末にてコンパイルする場合には、ライブラリを共有できないため、
static オプションつけたコンパイルを行ってください。
662nobodyさん:2008/02/12(火) 16:51:07 ID:???
PerlのCGIでgccを叩いてみたらどう?
パスが通っていることと、負荷の制限が軽いことが条件だけど。
昔のXREAではそうしていた。
今からVirtual PCという手もある。
663658:2008/02/12(火) 21:59:48 ID:???
>662
telnet.cgiが使えました。

uname -a でfedora3だということもわかりました。
デバッグ用の環境をfedora3で作ります。

みなさんありがとうございました。
664nobodyさん:2008/02/23(土) 09:06:34 ID:???
フレーム内の監視を行いたいのですが、これにはどういう仕掛けを作れば良いんでしょうか。
インフレームの内部を監視して、表示された中身をソースかキャプチャで保存するCGIを作りたいのです。
665nobodyさん:2008/02/29(金) 11:28:26 ID:???
>>664
無理ぽ。
666nobodyさん:2008/04/19(土) 14:56:01 ID:TKfwdaTT
C++でClearSilver使おうと思ったんですが、素でC++用のAPIが入ってないのでClearSilver++?を使おうと思ったら
http://biology.nmsu.edu/software/clearsilver++/
調べる限りここらしいんですが、繋がりません。
ミラーとか無いんですかね?
667nobodyさん:2008/04/20(日) 15:29:47 ID:???
もう復旧した様子
668のし図:2008/04/23(水) 18:51:13 ID:9jK7Jl1u
スクリプトの事で質問があります。
http://mk-board.net/index.cgi

このスクリプトを抜いて自慢している人がいて、ソースを晒していた人がいるのですが
 どうやってこの
http://mk-board.net/index.cgi
のスクリプトを抜いているかが気になります。
どうやるのですか?
教えて下さい
669nobodyさん:2008/04/24(木) 09:33:08 ID:???
ハッカーの仕業!?
670nobodyさん:2008/04/27(日) 17:14:11 ID:xxSAA3Zr
最近はやりのIISの問題を突いてるんじゃないの。
671nobodyさん:2008/05/01(木) 04:51:52 ID:???
不正アクセス禁止法
672nobodyさん:2008/05/21(水) 02:58:51 ID:H73mNdaA
不正アクセス禁止法
673nobodyさん:2008/05/21(水) 04:31:31 ID:???
668が嘘をついているという可能性が高い
気がしないでもない
674nobodyさん:2008/07/21(月) 11:22:35 ID:p8NBqSCe
ClearSilver++って落とせる?ftp繋がらないんだけど・・・
675nobodyさん:2008/07/24(木) 11:50:25 ID:???
676nobodyさん:2008/07/26(土) 08:58:55 ID:???
>>675
見えてるけど答えになってないよ。
いつ何度やっても繋がらないんだけど?
677nobodyさん:2008/07/26(土) 09:21:58 ID:???
C++ CGI さいきょー
678nobodyさん:2008/07/30(水) 18:56:54 ID:???
数年前にCで掲示板作ろうとしたが、文字コードであっけなく挫折
最近そのこと思い出してふらっと調べたら、VSで簡単にunicode扱えるようになってるのな
ちょいちょい思い出しながら作ってみるかな
679nobodyさん:2008/09/06(土) 21:33:24 ID:Z1+deiQP
なんだかんだ奥が深いよなぁ
680nobodyさん:2008/09/18(木) 15:01:14 ID:/9HVp0RB
CGIでエラーがあった場合エラーページにリダイレクトしてるんですが、
リダイレクトする前のエラー内容のエラーロギング(fprintf(stder,))が
出力されません。(何も出力されない)

syslogを使うことや他の方法も考えたのですが、とりあえずなぜ
エラー出力がでないか調べています。
なにか解決策あれば教えてください。

・apacheはver2.0です
・リダイレクトしない場合は、ちゃんとエラー出力される
・リダイレクトはLocation :〜の絶対パス使用(相対パスによる内部リダイレクトだとエラー出力された)
・他の言語(PHP)で試すと、リダイレクト前のはちゃんと出力される

681nobodyさん:2008/09/18(木) 22:43:17 ID:???
$data = "MAILADDR=<入力したメールアドレス>\n PASSWORD=<入力したPW>\n";
if (open(FH, ">data.bat")) {
print FH $data;
close(FH);

↑CGIを使用しページを見ているユーザーに入力を求め、<入力したメールアドレス><入力したPW>に代入?させてファイルに書き出したいのですがいい方法ってありますか?
682nobodyさん:2008/09/18(木) 22:48:21 ID:???
ここはCあるいはC++用のスレなのでperlの質問はスレ違いです。

Perlコーディング初心者質問スレ Part 58
http://pc11.2ch.net/test/read.cgi/php/1218030872/
683nobodyさん:2008/09/24(水) 13:34:55 ID:???
>>680 fflushはしたの?
684nobodyさん:2008/10/09(木) 01:47:06 ID:???
>>683
fflushもしてみましたが、ダメでした。
何が原因なんだろう。
685nobodyさん:2008/10/09(木) 15:17:08 ID:???
Location: 受信と同時に接続が切られて、そんでmod_cgiからシグナルが飛んでるとか?
でもヘッダで指定したサイズまでは読むだろうしなぁ。

デバッガをアタッチして、なんで死んでるか見てみたら。
686nobodyさん:2008/10/11(土) 03:41:33 ID:???
fprintfとかCライブラリではなくシステムコール直に叩いてみて
687nobodyさん:2008/10/15(水) 17:54:06 ID:???
stdoutとstderrは親経由で表示とか、ロギングされてるだろうから、
接続が切られると即捨てられる運命にあるのでは?

いや、Location: 受信と同時に接続を切るようなクライアントがあるのかどうかしらんけど。
サイズを指定すればそのバイト数までは読むようになるのかも。
688684:2008/10/16(木) 00:40:29 ID:???
>686
exec系は一通りwaitしたりしつつ試してみましたが、ダメでした。
fflushなりprintなりは終わっているはずなんですが。。。

>686,687
Location時にもContent-lenghtをつける、ということでしょうか?
その場合って、stderrの出力分を指定?でしょうか。




ちなみに、複数台のサーバが全部そういう状態で、割と困ってます。。
689nobodyさん:2008/11/23(日) 08:48:19 ID:Zhb3/Rjb
プロセスが毎回生成されるから
c++であってもあんまり良くないんじゃない?
690inaba: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

データベースにアクセスできません。原因がわかる方お願いいたします。
691nobodyさん:2008/11/23(日) 22:47:32 ID:???
マルチ?
692nobodyさん:2009/06/17(水) 02:16:44 ID:zEMbuSde
ほっしゅほっしゅ
693nobodyさん:2009/07/04(土) 17:57:16 ID:???
文字コード面倒だな。決め打ち最強か。
694nobodyさん:2009/07/15(水) 12:42:28 ID:???
UNICODE
695nobodyさん:2009/07/15(水) 15:51:36 ID:???
正直、C/CGIとServletってどっちがはやいの?
Servletの仕組みvsC自体の速さの対決になるとは思うが。
696nobodyさん:2009/07/16(木) 11:02:53 ID:???
こんにちわ。
C++でフリーなサーバ作ってます。
そのCGI部分で質問させていただきます。

php-cgiをexecveして、cgi実行させるところまでは出来たのですが、
POSTが取れません。php-cgi実行時に標準入力に
POSTメッセージを書き込んでるのですが、php-cgi
では見えないようなんです。
またPHP_SELFも設定できません。
REDIRECT_STATUSとSCRIPT_FILENAMEは設定しました。
どこに聞けばいいかとか情報お持ちの方はお願いします。

環境はfedora core 7とg++です。
phpは標準についてくるものだけです。
よろしくお願い申し上げます。
697nobodyさん:2009/07/17(金) 12:26:28 ID:???
696です。自己解決しました。
POSTという文字列が大文字小文字区別がありました。
まとめておくと、
SCRIPT_FILENAME
REDIRECT_STATUS
を指定するのが必須。
execve等で/usr/sbin/php-cgi、引数にphpを指定して実行。
POST,GET等はcaseセンシティブということでした。

では。
698nobodyさん:2009/09/01(火) 20:16:45 ID:???
FastCGI+C が史上最速。
699nobodyさん:2009/09/03(木) 10:53:56 ID:???
Cでmodにしてしまう方がいいかも
700nobodyさん:2009/10/22(木) 16:19:37 ID:???
C++&FastCGIでcomet作れるかの