いてつくブログ

2ちゃんねるのスレッドをコピペしてまとめてみるブログ

環境

ネット関係【激速】mod_perl SpeedyCGI FastCGI【激速】

1 :nobodyさん:2006/06/05(月) 20:01:09 ID:+YcYjDiD
mod_perl
http://perl.apache.org/

SpeedyCGI
http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod

前スレ
mod_perlを使おう!
http://pc8.2ch.net/test/read.cgi/php/1005122528/

ー二三ヘ( ゜∀゜)ノ

22 :nobodyさん:2006/06/13(火) 22:00:36 ID:???
> mod_perlをはじめて使った時は感動したが、後で愕然とした。
> しかも太る一方。
> topコマンドを叩いたら、10MB超のアパッチプロセスが10個以上並んでいた。

apache の設定がわからんからといって、mod_perl のせいにしてはいかんよね。

23 :nobodyさん:2006/06/13(火) 22:09:37 ID:???
>>22
めちゃくちゃ言うなあ。
mod_perlをoffにしてapache再起動したら、通常のサイズに戻ったが。

逆にそちらではどれくらいのサイズなんだ?

83 :nobodyさん:2006/06/14(水) 14:58:15 ID:???
原理的には、プロセス間通信のないmod_perlは速度的に優位なはずだが、
どこのベンチをみても有意な差がない。
というより、むしろ負け気味。
たとえ原理通りになっても、現実には無意味な程度だと思う。

115 :nobodyさん:2006/06/15(木) 16:04:49 ID:???
>>83
>原理的には、プロセス間通信のないmod_perlは速度的に優位なはずだが、
>どこのベンチをみても有意な差がない。

プロセス間通信がないことは、応答時間の短縮にはつながっても
スループットにはあんまり影響しないってことじゃない?

116 :nobodyさん:2006/06/15(木) 18:41:07 ID:???
>>115
応答時間の短縮≠スループットの向上。
ちょっと理解に苦しむが、どういう意味?

125 :116:2006/06/15(木) 20:35:31 ID:???
こういう事はあまり言いたくないが、スループットの意味を解って使っているのか?
スループットとは単位時間に処理できる量のことだ。
> mod_perlのほうが応答時間は短くなるかもしれないけど、それはスループットには影響を与えないんだろうね、ちうこと。
この話は、mod_perlはメモリを食うのでセッション数を捌けない。
だから、応答時間は短くても単位時間当たりの処理数はあがらない。

こういう意味なんだろうが、それは単純にベンチには出ない。
まずmod_perlへのリクエスト量が多く、mod_perlの処理に支障がある状態のベンチかどうか。
そうでなければ、何の関係もない。

くだらない話だ。

129 :nobodyさん:2006/06/15(木) 22:35:45 ID:??? ?#
http://daemoninc.com/SpeedyCGI/benchmarks/

130 :nobodyさん:2006/06/16(金) 03:06:13 ID:???
>>125
おいおい、今までの話で、「スループット」を誤用したところがあるか?なんでこんな心配されなきゃならん。
まず、
>ベンチの速度の話をしているときに、いきなりスループットは脱線だよ
を説明してくれ。

>こういう意味なんだろうが、それは単純にベンチには出ない。
>まずmod_perlへのリクエスト量が多く、mod_perlの処理に支障がある状態のベンチかどうか。
>そうでなければ、何の関係もない。
あれー、今はmod_perlのベンチマークの話だよね?mod_perlに負荷がかからないようなベンチを勝手に想像されてもなー。

>どういうベンチがいいとかいう問題じゃない。
>ベンチは取った条件を考慮しないと、意味がない。
じゃあどういうベンチマークテストで、どういう条件を考慮すればいいわけ?
おまえの話きいてると、逃げてるだけじゃん。

134 :nobodyさん:2006/06/16(金) 12:44:16 ID:???
>>130
> あれー、今はmod_perlのベンチマークの話だよね?mod_perlに負荷がかからないようなベンチを勝手に想像されてもなー。

「mod_perlに負荷がかからないような」ではなくて、
mod_perlにどれくらいの負荷がかかっていて、mod_perlがセッションさばけるかが問題ってことじゃねえ?
「mod_perlに負荷がかかって」いても>129のような軽い負荷だと関係ないっていうことかな。

139 :nobodyさん:2006/06/16(金) 21:26:06 ID:???
> beか鳥をつけた方がよくね?

beも鳥もつけずにデマだけ並べるといいということ?

170 :nobodyさん:2006/06/16(金) 23:31:31 ID:???
mod_perl と SpeedyCGI どっちがいいの?

218 :nobodyさん:2006/06/17(土) 04:07:05 ID:???
speedyCGI試してみたけど、確かに速いね。

最初、dagのrpmを入れてみたけど、mod_speedycgiが入っていないのでsourceから起こしてみた。
手始めにhello worldを表示するだけのスクリプトで試すと、通常のCGIと、CGI版speedyCGIは
大差が無かったが、mod_speedycgiだと5倍程度のスピードが出た。
次に、上記hello worldにuse CGI; use DBI を付けてみたら、CGI版speedyCGIは、10??20倍程度、
mod_s;peedycgiだと、100??150倍程度のスピードになった。

ちなみに、PHP5.0.4でhello worldを出力すると、mod_speedycgiより、2割位遅い感じ。
PEAR DBをrequireすると、use CGI; use DBIしたCGI版speedyCGIと同程度のスピード。

普通のCGIや、PHP使うのが馬鹿らしくなってきた。

221 :nobodyさん:2006/06/17(土) 09:49:36 ID:???
>>218
> 通常のCGIと、CGI版speedyCGIは大差が無かった

CGI版SpeedyCGIで鯖運用してるが、通常のCGIから劇的に速くなったよ。
どこもそういうことになってるみたいだが。
CGI版SpeedyCGIは1発目の動作は
インタープリタ起動→常駐→コンパイル→キャッシュ→実行
となるから、遅い。
次回からは
最初の4ステップがなくなり実行のみになるので、急激に速度が向上する。

2回以上実行した?

225 :221:2006/06/17(土) 11:29:26 ID:???
ソースは
http://rintaro.dip.jp/program/nicky/index.html
ここを参考に作ったSpeedyCGI版nicky.cgi

ベンチ
ab -n 100 -c 10

     CGI   SpeedyCGI mod_speedycgi mod_perl
1回目  0.54    6.12    74.24    6.93
2回目  0.54    6.38    74.24    7.16
3回目  0.54    6.41    72.25    7.09
4回目  0.53    6.41    73.86    7.15
5回目  0.54    6.45    74.46    7.19

平均   0.538   6.354    73.81    7.104

あり得ない...
速い...

アパッチモジュール版SpeedyCGI最強。
>218は発見者
誰もmod_speedycgiは無視してたからな。

232 :225:2006/06/17(土) 13:40:36 ID:???
追試結果。
ぬかよろこびさせてすまそ。

>225の異常な高スコアはただのファイルとしてアクセスされていたためです。

修正後のベンチです。

      CGI  SpeedyCGI  mod_speedycgi mod_perl
1回目   0.45    5.89    7.36    6.35
2回目   0.45    6.06    7.36    6.34
3回目   0.44    6.05    7.37    6.38
4回目   0.45    6.03    7.18    6.4
5回目   0.44    5.92    7.39    6.12

平均    0.446   5.99    7.332    6.318
(Requests per second)

お騒がせして申し訳ない。

243 :225:2006/06/17(土) 15:40:36 ID:???
まあ、時間ができた時にやってもいいな。
今日はもう時間がない。
無期限でというならやってもいいよ。

245 :nobodyさん:2006/06/17(土) 16:49:21 ID:uEg75/Hh
いろいろ参考になります。ありがトン。
ところで、perlccでperlスクリプトをバイナリにしとくのって
cgiが速くなるのでしょうか。やってみればいいんでしょうけど。

257 :nobodyさん:2006/06/21(水) 07:25:59 ID:vwMWqBxm ?#
perlccってあんまりはやらんですよね。


264 :nobodyさん:2006/06/23(金) 02:29:54 ID:ybv8oJFI
漏れが>>245で、2006/06/17(土) 16:49:21にperlccのこと
質問したのに、無視しといて、>>257が質問したら、急に
レスが付くって、本当にありがとう。

267 :243:2006/06/23(金) 12:38:21 ID:???
>>264
今度、ベンチとるときにperlccもやるつもりだったよ。(-Bオプションのみ)
レスはしなかったが。

274 :267:2006/06/25(日) 22:58:06 ID:???
workerのベンチをある程度とれたので公開。

測定環境
K6-2 475MHz
SDRAM 512MB
Vine3.2最小構成+α
Apache2.0.58、mod_perl、SpeedyCGIはソースからコンパイル。
httpd.conf、コマンドラインスイッチはデフォルトのまま使用(Alias等のみhttpd.confに追加)。

mod_speedycgiはworkerで動かない模様(エラーログにスレッド下で動かしたとでる)なのでとっていない。

ノーマルCGIとperlcc -Bは一度クラッシュすると数分間CPU全開になるため、1回目で×の場合2回目以降はとっていない。
mod_perl、SpeedyCGIはクラッシュ後すぐに回復するのでその後も継続。
mod_perl、SpeedyCGIは1回目に必ず初期化が起こる条件で測定。
(mod_perlはApache再起動、SpeedyCGIはソースをtouch)
(これはリソースの解放の意図も含む)

以下、結果レポート。

287 :nobodyさん:2006/06/26(月) 20:13:13 ID:???
-n 20 -c 200って変じゃない?
200並列全体で20回のリクエストでしょ?
更に-c 20以上はmod_perlとかだとワーカを再利用しない初期化速度を計測しているような気がする。

288 :267:2006/06/26(月) 20:30:46 ID:???
> -n 20 -c 200って変じゃない?
http.confはいじってないのでMaxClients150のままです。
MaxClients150でc 200のときにどうなるのか興味があったので、あえて200を試しました。

> 更に-c 20以上はmod_perlとかだとワーカを再利用しない初期化速度を計測しているような気がする。
すいませんが、よく意味がわかりません。
新しくプロセスを起こしてしまっているという意味でしょうか?

私はデータを提供しただけなので、問題があれば自分で反論を証明するデータを提出してください。
少なくとも「気がする」というような反論は勘弁してもらいたいです。



290 :nobodyさん:2006/06/26(月) 22:49:50 ID:???
>>288
>>287 が言っている事は、
-n 20 -c 200 だと、200回の同時接続要求を出すのに、全体のリクエスト数が
それ以下の20回と言うのはおかしい。nの値は、cより大きい筈ではないか、
ではないかと思います。

もし、同時接続200を20回繰り返すという意図なら、-n 4000 -c 20 という感じか
なと。(abが、リクエスト完了の後、すぐに次のリクエストを発行すれば、-n 4000
が、この意図を満たすのに適当な値ではないのですが)

ちなみに、n < c の場合、少なくとも、c回のリクエストは発行する様です。


310 :274:2006/06/29(木) 02:24:13 ID:???
>287氏、>290氏からパラメータの不備を指摘されたので、再測定。
K6-2 475MHz
512MB
Vine3.2最小インストール+コンパイル環境+Apache2.0.58ソース(workerでコンパイル)+mod_perlソース+SpeedyCGIソース+FastCGIソース

今回のパラメータでの結果は、cが大きい時のレスポンスの落ち込みが少ないが、前回のパラメータと併せて再現性確認。
またPerlRunのスコアがCGIより悪いという?な点もあるが、これも再現性確認しているので公開。
perlcc -Bが2回目にクラッシュするパターンは1回目終了時にCPU全開が続いていることを確認。

以下、結果報告。

333 :nobodyさん:2006/06/29(木) 15:15:19 ID:??? ?#
use CGI::Fastとかを加えないと動きもしないの?

355 :310:2006/06/30(金) 23:06:24 ID:???
K6-2 475MHz
512MB
Vine3.2最小インストール+コンパイル環境
+Apache2.0.58ソース(preforkでコンパイル)+mod_perl-2.0.2ソース+PersistentPerl-2.22ソース+fcgi-2.4.0ソース+mod_fastcgi-2.4.2ソース
テストソースnicky.cgi改(約160KB)

1パラメータセット終わる度に、
SpeedyCGI、mod_speedycgiはテストソースをtouch、
fastcgi、Registry、PerlRunはhttpdを再起動してキャッシュをリセット。

Registryは-c 40以降、PerlRunは-c 100以降でswapが発生したため、1パラメータ終わる度にPCを再起動。

以下、結果報告。

367 :355:2006/07/01(土) 12:03:41 ID:???
ソース

hello.html
<HTML>
Hello, world!
</HTML>

hello.pl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "Hello, world!\n";
print "</HTML>";

hello.c
#include <stdio.h>
void main(void)
{
printf("Content-type: text/html\n\n");
printf("<HTML>\n");
printf("Hello, world!\n");
printf("</HTML>");
}

402 :nobodyさん:2006/07/02(日) 03:23:34 ID:???
最後にlighttpd+FastCGI

K6-2 475MHz
512MB
Vine3.2最小インストール+コンパイル環境
+lighttpd-1.4.11ソース+fcgi-2.4.0ソース

テストソース hello world(>367-368)
fast_hello.pl、nicky.cgi改はFastCGIソース
hello.html、nicky.htmlは同等のhtml

以下、結果報告。


429 :nobodyさん:2006/07/02(日) 22:20:09 ID:???
K6-2 475MHz
512MB
Vine3.2最小インストール+コンパイル環境
+lighttpd-1.4.11ソース+fcgi-2.4.0ソース

テストソース
S hello world(>367-368)
L nicky.cgi改

以下、結果報告。

472 :nobodyさん:2006/07/08(土) 16:05:57 ID:???
このスレを見て、MovableTypeでspeedyCGIを使いたいと思って
apache1.3の環境でspeedyCGIを入れ、mt.cgiの先頭を書き換えて実行してみました。

1回目は無事表示されるんですが、リロードするとInternalServerErrorが。
何かインストールで失敗してるんでしょうか…?

473 :nobodyさん:2006/07/08(土) 16:45:31 ID:???
ここはそういうスレではないです

474 :nobodyさん:2006/07/08(土) 18:54:22 ID:uy7Z+OsL ?#
>>472
mtの前に、hello.cgiとか動かしてみればいいんでないすか。

476 :472:2006/07/08(土) 19:20:32 ID:???
>>473
質問スレではないかもしれないとは思ったのですが、
皆さんはかなりお詳しいと思い、悩んだのですが思い切って質問させていただきました。
気分を害しましたら、ごめんなさい。

>>474
レスありがとうございます。
「hello.cgi」というのは、要するにテスト用のcgiを作成して、ということでよろしいですか?
googleなどでヒットするhello.cgiを試しに作ってみて、先頭部分を# !/usr/bin/speedyと
書き換えてみましたところ、無事リロードしても表示されました。
となると、問題はmt.cgiなのでしょうか…?

googleでいろいろ調べまくったのですが、どうも有益な情報が見つかりません。
movabletypeでspeedyCGIを動かしている方々、どうぞお知恵を拝借ください…。

477 :nobodyさん:2006/07/08(土) 19:56:46 ID:???
>>476
>1回目は無事表示されるんですが、リロードするとInternalServerErrorが。

グローバル変数の初期化ができてない典型のように思えますが、
そのmtはmod_perlやFastCGIでは正常に動き、SpeedyCGIのみ動かない状態でしょうか?

mtは触ったことがないですが、mod_perlかどうか判定してコードを切り替えているという事は聞いた事があります。
≠mod_perlの判定のためCGI用のコードが実行されている?

後、mtはSpeedyCGIよりFastCGIの方が情報が多いので楽かも。
http://as-is.net/blog/archives/001042.html
ここが有名。

499 :nobodyさん:2006/07/19(水) 15:16:27 ID:???
mod-perlでSSIを使いたく、Apache::SSIをインストしたいんですが、
依存でApache::Constantsがないと言われます。

それで、cpanでApache::Constantsをインストしようとすると、

************* WARNING *************

Your Perl is configured to link against libgdbm,
but libgdbm.so was not found.
You could just symlink it to /usr/lib/libgdbm.so.2.0.0


************* WARNING *************
Enter `q' to stop search
Please tell me where I can find your apache src
[../apache_x.x/src]


と警告が二つ出てしまいます。/apache/src なんてどこにもないんだけど、これはなんでしょか?(-o-;



501 :nobodyさん:2006/07/19(水) 22:46:09 ID:???
全くスレ違いだと思うが、

> ************* WARNING *************
> 
> Your Perl is configured to link against libgdbm,
> but libgdbm.so was not found.
> You could just symlink it to /usr/lib/libgdbm.so.2.0.0

Perlがgdbm前提でビルドされているのに、gdbmの実体がみつからない。
/usr/lib/libgdbm.so.2.0.0に実体へのシンボリックリンクを作れ。

> ************* WARNING *************
> Enter `q' to stop search
> Please tell me where I can find your apache src
> [../apache_x.x/src]
qを入力した後アパッチソースのパスを入力しろ。

以上で間違いないと思うが。

537 :gan:2006/08/19(土) 06:24:16 ID:jPBCnjia
すれ違い課も知れませんが、SpeedyCGIについて教えていただけたら、、。
【環境概要】perl5.8.3、apache、Linux
【状態】speedyCGIのモジュールをCPANのコマンドラインからインストール済み
【使用可能か?】一回目のスクリプト実行は成功、しかし2度目の実行では
エラーになります。スクリプト常駐の寿命を5秒に設定しといて、一回スクリ
プトを実行させると成功、続けて5秒以内に他のページをアクセスすると
エラーとなりますが、5秒以上待てば(スクリプトが死ぬまで待って、新規に
スクリプトを読み込ませれば)成功します。あきらかにメモリ上に
存在するスクリプトを2回目以降呼び出すとエラー、という状況です。
【他にもモジュールを使用しているか?】
Net::amazonのモジュールを使用しており、エラーになる場合はこの
モジュールを利用して searach -> (asin => "xxxxxxxxx")とやると
以下のようなエラーが吐かれます(1度目は正常、2度目からエラー)
【エラーログ】
Premature end of script headers: mr.cgi, referer: http://airrack.jp/
Undefined subroutine &main:: called at /usr/lib/perl5/site_perl/5.8.3/Log/Log4perl.pm line 133.,
referer: http://hogehoge.jp/hoge
【エラーログに出てくるLog4perlについて】
Log4perl.pmというモジュールは、おそらくNet::Amazonがログをはくために
使っていると思われますが、詳細はよく分かりません。どちらのモジュールも最新
に上げています。
Log4perlモジュール内で変なキャッシュが残っているのでしょうか?
その場合モジュールをいじって直すしかないのでしょうか・・・。
googleで1日中検索しましたが情報がありませんでした。
かなり嵌ってしまいました。speedyCGIでNet::Amazon使ってらっしゃる方
で同様の状態になっている方いませんか?よろしければ情報いただけたら。。

よろしくお願いいたします。

539 :nobodyさん:2006/08/19(土) 13:45:18 ID:???
>>537
本人もわかってるようですが、グローバル変数の問題なのは間違いないでしょ。
まず基本的な事から確認。

メインのスクリプトにはグローバル変数の初期化処理がある?

540 :gan:2006/08/19(土) 18:55:37 ID:jPBCnjia
>>539
レスありがとうございます。
>メインのスクリプトにはグローバル変数の初期化処理がある?
グローバル変数の初期化処理があるというのは
メインのスクリプトにてmy $hogeとすることで初期化を行っています。
もしかしてmy $hoge=''とする必要があるのでしょうか?


541 :nobodyさん:2006/08/19(土) 19:18:24 ID:???
>>540
my $hoge;
では初期化されないです。
(通常のCGIならOK)

> もしかしてmy $hoge=''とする必要があるのでしょうか?
そうです。

542 :nobodyさん:2006/08/19(土) 22:02:30 ID:???
mod_perlだと
my $hoge;
でいいはずだけどSpeedyCGIだと違うの?
undefと空文字では意味合いが全く違うと思うんだけど。

543 :541:2006/08/20(日) 01:05:51 ID:???
>>540
>>542
漏れの間違い。
our $hoge;は×
my $hoge;は○

732 :nobodyさん:2008/02/22(金) 07:02:49 ID:???
mod_perlなんすけど、sudoで動かないのはなぜに?

ちゃんとApache権限で呼び出してるんだけど、CGIとして動いてる。
他のも一緒?

733 :732:2008/02/24(日) 01:02:41 ID:9eLfTMt1
うう;;
誰か教えておくれ。

あと、mod_perlって標準出力も違う?
Image::Magickで標準出力しようとして、
$image->Write('jpeg:-');
の部分でエラー。ファイル場所がおかしいって。

指定方法を変えれば標準出力できる?

736 :nobodyさん:2008/02/24(日) 16:59:49 ID:???
>>733
mod_perlだとforkするわけじゃなくevalされるからsudoの入り込む余地は無いんじゃないか。

>ファイル場所がおかしいって。
標準出力はSTDOUTで同じ。カレントディレクトリがルートになってるよ多分。
print `pwd`;とかで調べて絶対パスで指定するか始めにchdir。


http://hibari.2ch.net/test/read.cgi/php/1149505269/l50人気ブログランキングへ

PC等ふらっとC#,C♯,C#(初心者用) Part78

1 :デフォルトの名無しさん:2011/08/03(水) 03:44:18.77
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ

ふらっとC#,C♯,C#(初心者用) Part77
http://hibari.2ch.net/test/read.cgi/tech/1310106189/

■関連スレ
C#, C♯, C#相談室 Part67
http://hibari.2ch.net/test/read.cgi/tech/1308128665/
ミスターサタンのC#相談室 
http://hibari.2ch.net/test/read.cgi/tech/1092656075/
VB.NET質問スレ(Part36)
http://hibari.2ch.net/test/read.cgi/tech/1301828549/
くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/

2 :デフォルトの名無しさん:2011/08/03(水) 03:44:33.02
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてrun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php

34 :デフォルトの名無しさん:2011/08/04(木) 21:19:45.64
System.Windows.Forms.NumericUpDown
で、テキストボックスのテキストが変わるたびに、ValueChanged が起こるようにするにはどうすればいいですか?
数値が変わるたびに、他のコントロールと連携して表示を変えたいです。

45 :34:2011/08/05(金) 13:14:42.77
private void updownPrice_ValueChanged(object sender, EventArgs e)
{
 System.Diagnostics.Debug.Print("Price:{0}", (int)updownPrice.Value);
}
とか、やってみてるんですが、矢印で値を変更するとすぐに呼ばれるのに、
テキストボックス部に数値を直接タイプした場合は、フォーカスを失ったとき(?)でしか呼ばれません...

なにか必要なプロパティの設定とかがあるんでしょうか。

75 :デフォルトの名無しさん:2011/08/06(土) 06:13:00.02
http://ideone.com/uCJ1Q

n2をint型に変換しようとすると
System.Text.RegularExpressions.Match' から 'string' に変換できません
と出ます
int.Parseは元の変数がString型じゃないとできないのは分かるのですが それ以外にint型に変換する方法が分かりません
どうか教えてください


149 :デフォルトの名無しさん:2011/08/13(土) 00:26:21.25
だねえ
16bitマシン上でも一応使える言語だし
まあ16bit環境を今でも使ってるかといえば・・・
組み込みでも32bitが普通なのかな?

150 :デフォルトの名無しさん:2011/08/13(土) 08:43:04.73
>>149
炊飯器とかは16
携帯とかは32

組み込みはオーバースペックなcpu載せる事まず無いから


163 :デフォルトの名無しさん:2011/08/13(土) 13:45:19.17
FormからForm2をshowDialog()で呼ぶ。
Form2内でmessageBox.show(MessageBoxButtons.OKCancel)を呼ぶ。

この時、キャンセルを選ぶと、Form2ごと消えていまいます。
これはForm2をshowDialog()で呼ぶ場合、どうしようもないでしょうか。

166 :デフォルトの名無しさん:2011/08/13(土) 13:56:39.76
>>163
再現しないから答えられない

showDialog読んでるイベントハンドラのコード貼れや

173 :デフォルトの名無しさん:2011/08/13(土) 14:30:12.77
>>166
//form1.cs
private void button8_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.f1 = this;
if (f2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//処理を記述
}

}

///Form2.cs
public Form1 f1
private void button1_Click(object sender, EventArgs e)
{

DialogResult dr = MessageBox.Show("以下で登録します。よろしければOKを押してください。" , "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);

if (dr == DialogResult.OK)
{
//処理を記述
}
}

174 :デフォルトの名無しさん:2011/08/13(土) 14:50:59.01
>>173
>>2をご利用になってお貼り下さいますよう申し上げたじゃねえかこのゴミクズ

再現しない

176 :デフォルトの名無しさん:2011/08/13(土) 14:55:36.69
イデオン使うかどうかはともかく、アホみたいにコード貼り付ける前に
それが問題を再現するかどうかを確認することも怠る人間は、本質的にプログラミングに
向いてないとしか言いようがない。

177 :デフォルトの名無しさん:2011/08/13(土) 15:06:29.37
>>174
たいした量じゃねーから使わなかったんだよ

>>176
現状問題が発生してるから質問してるわけです。

179 :デフォルトの名無しさん:2011/08/13(土) 15:11:54.50
>>177
そのコードで発生するかどうかは真っ白のプロジェクトに同じコードを貼り付けて実行すれば分かるでしょう?
なぜそれをしない?

ここは初心者スレではあるが、手取り足取りスレとは違うぞ

181 :デフォルトの名無しさん:2011/08/13(土) 15:17:06.44
>>179
新規プロジェクトにその部分だけ引っこ抜いて実行したら再現しませんですた。。。

くそ。。。なんでだ。。。

212 :デフォルトの名無しさん:2011/08/14(日) 10:41:44.70
Array.Sort(st, (x, y) => x.number.CompareTo(y.number));

214 :デフォルトの名無しさん:2011/08/14(日) 11:23:30.98
>>212
intだから引き算でよくね?

215 :デフォルトの名無しさん:2011/08/14(日) 11:34:30.98
>>214
アンダーフローするかもしれないよ。

415 :デフォルトの名無しさん:2011/08/22(月) 21:29:58.72
VC#2010 WPF で開発しています。
(内容はC#です)

下記をMainWindow.xaml.cs に記述してProcTest() を
実行すると、notepadを閉じた後に「閉じた」と表示されます。
ですが、下記を別ファイルのクラスCProcMngr に記述して
MainWindow.xaml.cs にて CProcMngr cPm = new CProcMngr; cPm.ProcTest();
としますと、notepad を閉じてもイベントが発火しません。

この理由と、どうすればイベントを発火するようにできるのか
ご教授願えないでしょうか。よろしくお願いいたします。

private void ProcTest() {
Process hProc = new Process();
hProc.StartInfo.FileName = "notepad.exe";
hProc.StartInfo.Arguments = "";

// プロセス終了後にイベントを点火させる
hProc.EnableRaisingEvents = true;
hProc.Exited += new EventHandler(processExited);

// プロセス開始
hProc.Start();
}

private void processExited(object sender, EventArgs e) {
MessageBox.Show("閉じた");
}

416 :デフォルトの名無しさん:2011/08/22(月) 21:41:08.25
GCされてるんじゃないの?
プロセスが終了するまではスタックから辿れる場所で
Processオブジェクトへの参照を掴んどかないと
どうでもいいけど気持ち悪い名前やめろよC++かよ

429 :415:2011/08/23(火) 00:11:39.73
>>416
ありがとうごさいます。
usingでGCしているのがまずいのでしょうか?

名前は、気分を害されたようなら
すみません。
ずっとcppで書いていて急にWPFに
手を出したもので。

431 :デフォルトの名無しさん:2011/08/23(火) 00:47:33.03
継承関係の関係図のようなものがまとめられてるサイトとかありませんか?

432 :デフォルトの名無しさん:2011/08/23(火) 01:04:51.18
>>431
基本クラスライブラリの?
http://msdn.microsoft.com/ja-jp/library/system.object_derivedtypelist.aspx
Objectから派生するクラスだけで最低でもこんだけあるんだけど

458 :デフォルトの名無しさん:2011/08/24(水) 20:33:50.70
一回の処理に0.1秒程度かかるものを一分周期で実行させたいのですが、
Sleepを使ってループさせると、その処理分0.1秒+αずつずれていきます。
何回実行してもずれないような方法なにかありますか?

473 :デフォルトの名無しさん:2011/08/25(木) 11:10:57.71
C++でプログラムしてる奴ら
C#の仕様が頭に入ると混乱しないか?
C#の方が理にかなってるからC++の方で間違ってしまう

484 :デフォルトの名無しさん:2011/08/25(木) 23:01:16.62
>>473
クラスや構造体がnewしなくてもインスタンスが生成されていることに気付かない


486 :デフォルトの名無しさん:2011/08/26(金) 07:41:51.39
ハァ?C#とC++じゃ構造体が一番違うだろが。
お前、ぱっと見ただけでは気づかない、バグ満載のプログラム書いてないか

497 :デフォルトの名無しさん:2011/08/26(金) 21:08:30.73
>>486
構造体は変数自体がインスタンスだけど?

527 :デフォルトの名無しさん:2011/08/27(土) 19:06:42.83
>>497
お前はC++とC#のStructの違いを100万回勉強し直せ

532 :デフォルトの名無しさん:2011/08/28(日) 00:05:51.15
パブリックメンバの引数のチェックにAssertは使うなよ
その場合は普通にif+throwだよ

535 :デフォルトの名無しさん:2011/08/28(日) 04:21:46.27
for (int i = 0; i < nCount; i++){
Console.Write("{0}", BitConverter.ToUInt16(Data, i * 2)*0xff + BitConverter.ToUInt16(Data, 1+i * 2));

Data[]配列の中身を2byteの数字で取り出したいんだけど、もうちょっとマシな書きかたってありますよね?

536 :デフォルトの名無しさん:2011/08/28(日) 05:30:04.07
>>532
意味わからん。

Debug.Assert(), if + throw, if + 戻り値 ... 普通にケースバイケースだと思うが。

542 :デフォルトの名無しさん:2011/08/28(日) 09:19:02.29
>>536
引数に限ってはDebug.Assert()はない
[ConditionalAttribute("DEBUG")]だからリリースビルドに残らない

引数はリリースしても定まった値でないから引数なんであって
どうせif throwを書くことになる

568 :デフォルトの名無しさん:2011/08/29(月) 10:17:23.99
>>542
>引数はリリースしても定まった値でないから引数なんであって
>どうせif throwを書くことになる

定まってないけど、(バグがなけりゃ) ある範囲に入るはずという引数があるだろ。

569 :デフォルトの名無しさん:2011/08/29(月) 10:50:51.30
>>568
だから「パブリックメンバ」なんだろ
アクセスレベルの問題ではなく

570 :デフォルトの名無しさん:2011/08/29(月) 11:38:02.80
>>569
パブリックメンバでも「ある範囲に入るはずという引数」はあるだろ。

571 :デフォルトの名無しさん:2011/08/29(月) 12:03:49.96
>>570
そうだね。
で、それは例外投げろと言ってるんだろ。何が問題?
ArgumentExceptionはキャッチしないもんだ。

576 :デフォルトの名無しさん:2011/08/29(月) 13:44:40.61
>>571
>何が問題?

実行速度に決まってる思うが。
何のために、リリースビルドでわざわざ「残さない」ようにしてると思ってるの?

577 :デフォルトの名無しさん:2011/08/29(月) 15:26:26.34
>>576
だからさ、そもそもの質問が「リリースビルドでAssert残したい」なんだよ。
それに対して、リリース時に残すならTrace.Assertじゃなくて例外投げろと
言ってるわけ。なんでそれが残す残さないの話になるの?

578 :デフォルトの名無しさん:2011/08/29(月) 16:35:30.00
>>577
>それに対して、リリース時に残すならTrace.Assertじゃなくて例外投げろと
>言ってるわけ。

だから、その理由は何だよ。
特に、「パブリックメンバの引数のチェック」にこだわる理由もわからんし。

581 :デフォルトの名無しさん:2011/08/29(月) 17:58:40.30
リリースビルドに残すってことは実行時に間違った状態になったり
間違った引数が来ることを想定してるんだろ?
普通は例外使うよね(場合によっては例外も不適切だが)。
それをあえてTrace.Assert使えって言うんだから理由を示すのは>>578の方だろ。

583 :デフォルトの名無しさん:2011/08/29(月) 19:19:09.90
>>581
>それをあえてTrace.Assert使えって言うんだから理由を示すのは>>578の方だろ。

だれも Trace.Assert 「だけ」使えとは言ってない (>>536 参照)
Assert は、「使うな」と言ってる奴がいるから、理由を示せと言ってるだけ。

584 :デフォルトの名無しさん:2011/08/29(月) 20:46:44.79
>>583
逆に聞きたいんだけどさ
Assertで不正値検出して、その後どうするの??

604 :デフォルトの名無しさん:2011/08/29(月) 23:01:34.20
今更割り込んで悪いけど、「ケースバスケースで Assert 使えばいい場合もある」
とはどうしても思えんなあ。

ちゃんと適切な例外を投げようよ。

605 :デフォルトの名無しさん:2011/08/29(月) 23:16:36.33
>>604
俺もケースバイケースって響きのいい言葉に騙された。
Assertの通知先って"ユーザー"だから、
いかなる状況においても巻き込んじゃいかんだろw

608 :デフォルトの名無しさん:2011/08/29(月) 23:20:22.90
それは、引数の話?
それとも、すべての Assert の話?

665 :デフォルトの名無しさん:2011/09/01(木) 22:34:18.11
縁なき衆生は度し難しってこういう時に言うのかなw

667 :デフォルトの名無しさん:2011/09/01(木) 23:35:36.91
>>665
はいはい、具体的なこと語れないなら、もう出てこないでね。

「引数のチェックにAssertは使うなよ」とか言うから、なんかすごい理由が
あるのかと思ったら、どうも個人の思い込みみたいだったな。

668 :デフォルトの名無しさん:2011/09/01(木) 23:50:13.10
具体的な理由はいくつも出てきてるだろう
君はケースバイケースとしか言ってないよね

669 :デフォルトの名無しさん:2011/09/01(木) 23:54:46.01
>>667
君は自殺しない理由が無ければ自殺○るのか?w

なんかとことん思考様式が倒錯してる人だな。
使ってはダメな理由があるから使わないのではなく、使う積極的理由が何もないから
普通の人は使わないんだよ。

いちおう卑近な例も挙げておくと、メソッド内のローカル変数は、少なくとも機能的には
フィールドで代替できる。

その意味ではローカル変数の変わりにフィールドを使ってはダメな理由はないが、
余程のアホ以外はそんなミスリーディングなことはしない。

684 :デフォルトの名無しさん:2011/09/03(土) 00:52:25.68
>>668
>具体的な理由はいくつも出てきてるだろう

と書く割には、その具体的な理由が書いてあるレス番すら書いてないのはなんで?

>>669
おいおい、使う積極的理由が何もないから「使うな」って言ってるわけ?
マジで頭大丈夫?

> メソッド内のローカル変数は、少なくとも機能的にはフィールドで代替できる。

メソッド再起呼び出しされたらどうするの?
スタックでシミュレートするの?

>>668 は理由があるって書いてるけど、>>669 によると積極的理由はないらしい。
まあ、どっちが正しいのか知らんけど、どっちにしてもまともな答えは返せそうにない
ことだけはわかったよ。

688 :デフォルトの名無しさん:2011/09/03(土) 09:49:30.89
>>684
Publicでなければテストによって引数の妥当性は保証される為、
Debug.Assert、if-throw、if-returnケースバイケースで良いだろう。

Publicは外部に公開され、未知のアセンブリから利用される為、どんな引数で呼ばれるか分からない。
Publicにこだわったのはこのせいで、引数のチェックは必須となる。
この場合、Trace.Assertで済ませるのは間違い。
妥当性のチェックは出来ても、対処方法が強制終了、続行の二択である上に、どちらを選択するかはユーザー任せ。

しかしPublicであっても複数アセンブリから構成されるアプリで、
自アプリからしか呼ばれない場合、ケースバイケースで構わないと思う。

694 :デフォルトの名無しさん:2011/09/03(土) 23:45:51.41
こう言っちゃなんだが、>>688もとてもまともな意見とは思えないけどね。
変則的な方法を、それを選択する積極的な理由もなしに選択するのを肯定してはだめ。

ケースバイケースというが、どんなケースなら「あえて」変則的方法を選択する必然があるというの?
ないでしょそんなケースは。じゃあケースバイケースじゃないじゃんそれ。


http://hibari.2ch.net/test/read.cgi/tech/1312310658/l50人気ブログランキングへ
学ばないブログ
忍者AdMax
記事検索
最新コメント
QRコード
QRコード
  • ライブドアブログ