X



C/C++ CGIスレッド
■ このスレッドは過去ログ倉庫に格納されています
0565nobodyさん
垢版 |
2007/06/20(水) 10:18:48ID:???
ところで皆さんコンパイラは何使ってますか?
0567nobodyさん
垢版 |
2007/06/20(水) 22:08:35ID:???
>>560
「これは○○県警さんでやった方法なんですが」
「では、それとはちょっと変えてください」


いや、別に変えなくても良いものは
無理して変えんでも良いがな...orz
0568nobodyさん
垢版 |
2007/07/02(月) 07:03:13ID:???
ソースを渡したくないって、飯を食うのには重要だけどな。
毎回ソース渡してたら、いつかは喰えなくなる。

mod_perlが速いってことは無いな。perl自体重いし、perlもCで書かれてるから、perlの構文解析の分遅い。

結局は、常時起動デーモンのトムキャット方式に落ち着くよね。
誰もが通る道なのかと安心した(w

同じ方法だと同じ攻撃に弱いってのはあるから多様性って重要。

古い所のシステムだと、歴史的経緯で非効率な処理を求められることはよくある。
開発費高めでも払ってくれるので好きだけど。他と同じ単価なら受けないけどな。
0569nobodyさん
垢版 |
2007/07/04(水) 00:35:14ID:???
CからSQL鯖弄るのって、ODBCぐらいしかない?
Cには、JDBCみたいなのは無いよね?
0570nobodyさん
垢版 |
2007/07/04(水) 02:01:41ID:???
>>569
ODBCとか使わなくても、Cならネイティブドライバ使えばいいのでは…。
他のDBへの移植性を上げたいのならODBCを使うしかないかな。
0571nobodyさん
垢版 |
2007/07/27(金) 15:06:25ID:HlWLP/Z4
CGI から,GetModuleFileName を呼び出すと、ドライブ名の前に"\\?\"という文字が付きますが、
これって、なんなのでしょうか?、教えてください。

Windows 2003 Server、 IIS、Visual Studio 6.0 です。

0572nobodyさん
垢版 |
2007/07/27(金) 20:49:30ID:???
そのPCそのものを表す。
PCローカルURIって言うとちと違うのかな?
0573571
垢版 |
2007/07/28(土) 08:51:56ID:QYOm8nEM
>>572
回答どうもです

が、エクスプローラで「\\?\共有名\ファイル名」とやっても「見つかりません」となります。
(「\\コンピュータ名\共有名\ファイル名」だとOK)
0574nobodyさん
垢版 |
2007/07/31(火) 00:21:17ID:???
>>564
共有メモリ使えばいいだけ。mod_uploaderのソース嫁
0575nobodyさん
垢版 |
2007/07/31(火) 01:21:12ID:???
キャッシュに共有メモリって・・・
別にいいけど
0576nobodyさん
垢版 |
2007/07/31(火) 01:39:34ID:???
何処に不満があるの?
worker MPM使って、dispatchはApacheに任せ、データはshm/mmapで共有ってのが現実的だと思うなぁ。

>これも、基本的にシングルプロセスのMPMは無いから
>全体で共有することも出来ないし、
これミスリーディングだとおもうな。データ共有するのにシングルプロセスである必要なんて全くないだけだし。
0577563
垢版 |
2007/07/31(火) 03:20:02ID:???
>>574,576
私もあれからいろいろ調べてみたら、
やはり共有メモリを使うって方法にたどり着いた。

ただしDBデータをキャッシュする場合、キャッシュの破棄タイミング、
新しいデータのキャッシュへの反映が難しい。
作成したページをキャッシュする場合も、やはり同じ問題が。

SQLサーバを使わない、もしくはSQLiteを使うとかすれば、
可能ではありそうだけど、それだとDBのクラスタリングが出来ないので意味がない。

PostgreSQLやMySQLのプラグインやトリガーという形で、
キャッシュ管理のプロセスに情報を伝える仕組みが要りそう。

さすがにこれだけの仕組みとなると、とても一人で作るのは無理そうだ。
0578nobodyさん
垢版 |
2007/07/31(火) 03:22:01ID:???
えーと、あなたのところではSHMMAXが、実装メモリに対して充分な値なわけですね。

例えば、1Gのメモリを積んでいてキャッシュ用途に大部分を使いたいと考えた場合
SHMMAXが数十M程度だとおおいに不満なのですけど。
あ、/proc/sys/kernel/shmmaxで充分な大きさに変更できるならば良いですがね。
それとも、細切れにブロックを確保して頑張ってやりくりしますか。

あと、shmではなくmmapを使う場合を含めて、当然排他機構が必要となるわけですが
たかがメモリの読み書き程度で重いといわれるプロセス間のロックはたまりませんね。
もちろん、プロセス間通信と比較すればずっと軽いでしょうが
ロック期間を短く(こまめにロック/アンロック)という、一般的に推奨される手法には向きませんな。
スピンロックで足りる用途だけならともかく。
0579nobodyさん
垢版 |
2007/07/31(火) 08:34:44ID:???
SHMMAXについてはおっしゃるとおり。

>たかがメモリの読み書き程度で重いといわれるプロセス間のロックはたまりませんね。
汎用のロックを使わなければ良いだけだと思う。
mod_uploaderがやってるように、共有メモリ領域に対してCPUのatomic命令を使うとか。

ロック期間が短い→CPUのatomic命令
ロック期間が長い→signal

で十分対処できるような。そもそもお金かけて高いサーバ使うならともかくその辺の安いPCでサービス提供するなら別にスレッド使わなくても十分なような。


複数プロセス使うのに必ずしも重い汎用のプロセス間ロックを使う必要なんてないし、なんかミスリーディングだとおもう。最初に結論ありきで論じてませんか?
0580nobodyさん
垢版 |
2007/07/31(火) 09:43:21ID:???
>>579
ほほー。

ttp://pc11.2ch.net/test/read.cgi/mysv/1173959386/397
システムコール使ってないし、こんなもんか
0581nobodyさん
垢版 |
2007/08/03(金) 23:31:03ID:LuhsKnBr
>>578
詳しいことは理解できないけど>>578の性格が悪いことだけは分かった。
もっと普通にかけるだろうに。
0582nobodyさん
垢版 |
2007/08/05(日) 18:32:24ID:???
>>578
おまえの頭がかたいことは良くわかった
0583nobodyさん
垢版 |
2007/08/09(木) 02:14:08ID:???
>>578のような人間とは仕事したく無いなぁ
0584nobodyさん
垢版 |
2007/08/11(土) 00:09:14ID:???
2chのread.cgiとかのソース発見!
ttp://www.gedoh.org/aki/2ch/current/bbs/
0585nobodyさん
垢版 |
2007/08/11(土) 10:14:45ID:???
>>584
それちょっと古いやつね。
前ちょこっとソース読んだ限りでは、完全に2ch用に特化してるから、
汎用性もなにもあったもんじゃないし、ソースも読みにくい。
0586nobodyさん
垢版 |
2007/08/19(日) 21:44:36ID:???
CGIってPerlのことですよね?
Perlっていうのは言語だからC言語でCGIを作るというのは
C言語でPerl言語を作るということなんですか?????
0588nobodyさん
垢版 |
2007/09/06(木) 17:50:36ID:VY4R4z3/
C言語で掲示板(簡単なもの)を作りたいのですが
入門書2冊読んだ程度でもできるでしょうか…?
ちなみにC言語以外の言語はやったことがなく
C言語歴も1ヶ月で大きなプログラムも作ったことがありません。
0589nobodyさん
垢版 |
2007/09/06(木) 17:51:48ID:VY4R4z3/
C言語で掲示板(簡単なもの)を作りたいのですが
入門書2冊読んだ程度でもできるでしょうか…?
ちなみにC言語以外の言語はやったことがなく
C言語歴も1ヶ月で大きなプログラムも作ったことがありません。
0590nobodyさん
垢版 |
2007/09/06(木) 18:18:03ID:???
CGIを書くには少なくとも文字列を自由にあやつる必要があるけれど、
Cで文字列が自由自在になるには初心者が一ヶ月では少し足りないような。

まぁでもやって出来ないこたぁないよ。うん。
0591nobodyさん
垢版 |
2007/09/06(木) 19:22:43ID:VY4R4z3/
お返事ありがとうございます。
自由自在…今持ってる本で文字列関係?でわかってないのは
str全般とcalloc、malloc、reallocぐらいなんですがここら辺を覚えれば結構違ってきますかね…?
0592nobodyさん
垢版 |
2007/09/06(木) 20:57:42ID:???
とりあえずHTMLを吐くところから始めてみればいいんじゃない?
POSTとか絡んでくると色々大変だけど
0593nobodyさん
垢版 |
2007/09/07(金) 03:00:06ID:???
私は数年のプログラム経験があったけど、
CGIに必要なライブラリを一通り作るだけで2週間かかったよ。
どこからかライブラリを拾ってこないと、全部一から作ってたら結構大変。
0595nobodyさん
垢版 |
2007/09/08(土) 17:40:25ID:vnaZ3dnt
>>592-593
そうですか・・・とりあえずまだ力不足だしそろそろ学校
も始まってたぶん作る暇もなくなると思うので今は
とりあえずもっと勉強してから作ろうと思います。
>>594
英語多すぎてわかりませんw
でもありがとうございます。出来るだけがんばって読んでみます。
0596nobodyさん
垢版 |
2007/09/09(日) 04:36:43ID:???
>>594
最低限のライブラリって感じだね。

自作のライブラリってどれくらい容量or行数ある?>All
私のはPHP並に機能揃えたから2.5MBぐらい。
0597nobodyさん
垢版 |
2007/09/09(日) 10:12:18ID:???
人生はどう手抜きで最大限の成果を得るかだろう
0598nobodyさん
垢版 |
2007/09/09(日) 12:29:09ID:???
>>596
ほとんどphpにwrapperしちゃってるから自分で書いた部分は1MBも無い
0599nobodyさん
垢版 |
2007/09/09(日) 12:50:20ID:2vrQ8w/W
>>596
馬鹿だろ。手動かすまえに頭動かさないやつは死ね。
0600nobodyさん
垢版 |
2007/09/09(日) 16:00:59ID:???
STLとBoost使えばなんとかなるんかねー
0601nobodyさん
垢版 |
2007/09/09(日) 18:28:43ID:???
>>597-599
手抜きするためにこれだけライブラリ揃えたんだけどね。
0602nobodyさん
垢版 |
2007/09/09(日) 23:55:25ID:???
そう、よかったねw
0603nobodyさん
垢版 |
2007/09/10(月) 01:02:01ID:???
そういう手抜きをしたきゃ最初からphpで書いた方が早いだろうに・・・
0604nobodyさん
垢版 |
2007/09/10(月) 04:09:10ID:???
>>603
自分でライブラリ書けば、自由が効く。
0605nobodyさん
垢版 |
2007/09/10(月) 21:42:08ID:???
そもそも何に不自由してるのサ
0606nobodyさん
垢版 |
2007/09/11(火) 12:54:32ID:???
自分で全部好きにしたい、というのはわからんではないけど、
デカいライブラリをメンテするのはそれはそれで大変な気がする。
バージョン管理とか面倒そう。

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

2.5MBってソースのサイズかね? それともバイナリ?
0607nobodyさん
垢版 |
2007/09/12(水) 14:06:22ID: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桁分ランダムに表示させるにはどのように表記したらよいでしょうか?

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

$numbera =
 ↓
$numbera .=
0610nobodyさん
垢版 |
2007/09/14(金) 08:33:15ID:???
>>606
> CでCGIってそれほど頻繁に必要になるわけじゃないんで、これで十分。

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

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

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

PHP並の機能っていってもPHPがPHP並の機能をもっているのはPHPの中の人が
全部自分で書いたからじゃなく、たくさんの外部ライブラリとリンクしてるからなわけで。
それともフレームワーク的な機能がたくさんあるのかな?
0612nobodyさん
垢版 |
2007/09/14(金) 11:25:57ID:???
もう放っといてやれ
0613nobodyさん
垢版 |
2007/09/14(金) 12:14:06ID:???
>>611
フレームワーク的な機能が多いかな。
外部ライブラリを使いやすくするための中間層的なライブラリも多い。
0614nobodyさん
垢版 |
2007/09/15(土) 00:28:34ID:???
ぐだぐだいってないでコード公開すればいいんじゃね?
0616571
垢版 |
2007/10/06(土) 16:16:07ID:???
>>615
おー、ありがとう
0618nobodyさん
垢版 |
2007/11/16(金) 00:44:52ID: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失敗。
0619nobodyさん
垢版 |
2007/11/16(金) 12:49:38ID:???
IISのログを確認する
フォルダの書き込み権限を確認する
0622nobodyさん
垢版 |
2007/11/18(日) 23:17:33ID:???
>>621
ソース見る限りClearSilverよりシンプルだから速そうだけど、機能が全然足りない予感。
まー、本格的に使うには、ClearSilverでも機能/汎用性/拡張性が足りなさそうなんだけどさ。
0623nobodyさん
垢版 |
2007/11/23(金) 16:15:53ID:???
で、本格的に使ってるおまいらはどうしてるの?
PHPで作っちまったほうが速いか?
0624nobodyさん
垢版 |
2007/11/25(日) 09:05:24ID:???
かなり遅レスになるけど>>578は、Lock FreeとかWait Freeなアルゴリズムについて勉強した方が良いと思った。


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

みなさんありがとうございました。
0664nobodyさん
垢版 |
2008/02/23(土) 09:06:34ID:???
フレーム内の監視を行いたいのですが、これにはどういう仕掛けを作れば良いんでしょうか。
インフレームの内部を監視して、表示された中身をソースかキャプチャで保存するCGIを作りたいのです。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況