[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/06 11:55 / Filesize : 186 KB / Number-of Response : 863
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part59



1 名前:デフォルトの名無しさん [2010/05/16(日) 23:13:52 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ 
C#, C♯, C#相談室 Part58
pc12.2ch.net/test/read.cgi/tech/1269261310/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい

39 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 10:59:18 ]
>>35
え?

40 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 11:02:51 ]
>>32
コモンファイルダイアログはシェルの管轄
最後に選択した場所の基本的に実行ファイル名で管理してるな

41 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 11:17:32 ]
>>39
え?

42 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 11:32:16 ]
なにそれこわい

43 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 11:33:34 ]
最近は猿がプログラミングしてるのか。

44 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 13:49:37 ]
×猿がプログラミングしてる
○猿が居着いている

45 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 15:34:42 ]
>>30
つRestoreDirectory

46 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 15:46:27 ]
>>45
それ、ダイアログによって変更されるカレントディレクトリを元に戻すかどうかじゃね?

47 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 16:58:53 ]
>>44
o(´・ω・`)ぶつお



48 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:56:30 ]
EWF周辺をC#で触ってるんだけど、
一箇所C#での書き方があったので教えてください。

typedef struct _EWF_VOLUME_NAME_ENTRY
{
struct _EWF_VOLUME_NAME_ENTRY * Next;
WCHAR Name[1];
} EWF_VOLUME_NAME_ENTRY, *PEWF_VOLUME_NAME_ENTRY;

この構造体の定義をC#で書き直すとどのように書くのですか?

49 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 21:00:58 ]
不定長(を目的とした)構造体は型として記述できない

50 名前:48 mailto:sage [2010/05/21(金) 21:08:40 ]
>>49
んー・・・そうですか。。。
ありがとです。VC++でラップdll作るか…。

51 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 00:18:26 ]
>>37
大人ならやっぱり2次元配偶者だよな

52 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 10:29:05 ]
iPhone SDKのUITableViewみたいに、リストの各項目をカスタマイズできるコントロールってないですか?
ListView + ListViewItemでは無理ですよね。
どこかにオープンソースなライブラリはないものでしょうか。
自前で作ると結構大変そうで・・・

53 名前:デフォルトの名無しさん [2010/05/22(土) 13:40:28 ]
自作するか既存のコントロールのオーナードロー関連を利用して
自分で描画部分を書くか
後はWPFへいくか・・・

54 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:25:03 ]
どぼんの dobon.net/vb/dotnet/process/standardoutput.html のソースを実行しても、
resultに結果を取得できる端末とは空文字列しか拾えない端末があります。
共にDOS窓でdirを実行したら、ディレクトリ情報は表示されます。
何か権限とかあるのでしょうか?


System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();

//ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec");

//出力を読み取れるようにする
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
//ウィンドウを表示しないようにする
psi.CreateNoWindow = true;
//コマンドラインを指定("/c"は実行後閉じるために必要)
psi.Arguments = @"/c dir c:\ /w";
//起動
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
//出力を読み取る
string results = p.StandardOutput.ReadToEnd();
//WaitForExitはReadToEndの後である必要がある
//(親プロセス、子プロセスでブロック防止のため)
p.WaitForExit();

//出力された結果を表示
Console.WriteLine(results);

55 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:41:01 ]
VB.netのStartupNextInstance実装ってどうやってるのかな。
とりあえず、名前付きパイプで同じ事しようと書き始めたけど、
起動中に、名前付きパイプを開っぱなしにしていいものかどうか
気になってきた。

具体的には、二重起動を禁止して、
後から起動されたプログラムのコマンドラインを取得したい。

56 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:45:35 ]
>>55
C#で同じことをやる方法がどこかに公開されてたはずだから、ググれば出てくるよきっと。
会社のブラウザにはブックマークしてあるんだが...

まあでも、スタートアッププロジェクトをVBにすれば妙な技巧を使う必要もないな。

57 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 15:00:03 ]
IpcChannelとか



58 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 15:00:22 ]
同じ事がしたいだけなら、
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBaseの派生クラス作って
IsSingleInstanceとかコンストラクタで設定、
でApplication.Runの代わりにそいつのRunを使えばよい

59 名前:55 mailto:sage [2010/05/22(土) 15:03:32 ]
VBのスタートアップ使うですか。
ちょっと抵抗が・・・w

60 名前:デフォルトの名無しさん [2010/05/22(土) 15:13:16 ]
学校のC言語のレポート課題なんですが、少し知恵を分けてください。
問題:5個の値を入力してその中にひとつでも偶数があれば『偶』、奇数しかなければ『奇』と出力するプログラム
(※複数個の偶数があったとしても『偶』と表示するのは1回だけとする)

途中まではこんな風に書いてみたのですが
#include<stdio.h>
int main(void){

int x[5];
int i;

for(i=0;i<=4;i=i+1){
printf("x[%d]を入力してください。\n",i);
scanf("%d",&x[i]);
}
if (x[i] % 2 == 0){
printf("偶\n");
}
else{
printf("奇\n");
}
return 0;
}

61 名前:デフォルトの名無しさん [2010/05/22(土) 15:16:02 ]
>>60
こちらへどうぞ

C/C++の宿題片付けます 135代目
pc12.2ch.net/test/read.cgi/tech/1269438098/

C言語なら俺に聞け(入門編)Part 64
pc12.2ch.net/test/read.cgi/tech/1273846013/

62 名前:55 mailto:sage [2010/05/22(土) 15:16:26 ]
IpcChannelでググったら、沢山見つかったけど、
内部で名前付きパイプ使ってるとの情報がw

このまま、名前付きパイプでやってみます。
どうもでした。

63 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 16:22:23 ]
.NETのリモーティングは.NETのオブジェクトをプロセス間で受け渡しできるところが
キモなんで、その必要がなければ名前付きパイプでも十分かもね。

64 名前:52 mailto:sage [2010/05/22(土) 18:01:07 ]
>>53
WPFってスレもないようですが、どうなんでしょう?
ひょっとして死亡フラグ立ってますか?

65 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:04:11 ]
>>64
死亡フラグは立ってけど、スレはある
pc12.2ch.net/test/read.cgi/tech/1274423236/

66 名前:52 mailto:sage [2010/05/22(土) 19:45:22 ]
>>65
なんかだめぽな感じですね・・・
こうまでマイクロソフトの凋落が激しいと逆に応援したくなります
Slievrlight3でデスクトップアプリもいける?ようなので、そっちを模索してみます。
結局、.net + C#のコントロールって従来のWindowsAPI準拠のものがほとんどですからね。


67 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 20:10:36 ]
Silverlight3のブラウザ外実行は全く使い物にならん
デスクトップアプリはSilverlight4から



68 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 20:34:35 ]
ドラクエじゃねえんだから3だの4だの短期間にアホみたいにバージョンアップしないで欲しいよw

69 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 20:41:12 ]
糞でかい.NETとは違ってどうせインストール1分だからそんなに問題にならないんでしょ
JavaFXみたいにフェードアウトするよりはマシ

70 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 20:47:19 ]
>>60
#include <stdio.h>
int main(void){
int a,b=1,c;
for(c=0;c<5;c++)
{
printf("値を入力してください。\n");
scanf("%d",&a);
b*=(a%2);
}
printf((b==0)?"偶\n":"奇\n");
return(0);
}

71 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:08:25 ]
>>60
5個全部andしてLSBが0なら偶数

72 名前:52 mailto:sage [2010/05/22(土) 23:24:10 ]
>>67
なるほど。4は開発環境まだRCみたいですが、やってみます。
Silverlightには未来があると信じたい。

73 名前:デフォルトの名無しさん [2010/05/23(日) 11:50:39 ]
HTML5でFlashがいらなくなるって話だけどSliverlightがこの先生きのこるには

74 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 11:52:19 ]
ガキくさ。
2chだからって無理して面白くしようとか(いや全く面白くもなんともないが)
思わなくていいのに。

75 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 14:07:24 ]
>>73
それはない。
HTML5、標準ってのが強みでも弱みでもあって、
弱み的には、機能充実が遅すぎて Flash とか Silverlight の代替にはならない。


76 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:17:56 ]
段々スレチだが、個人的にデスクトップアプリ構築環境として、
・マルチプラットフォーム
・HTMLで画面デザインできる
ものとしてSilverlightに期待したい。
Adobeの開発環境は好きになれない。

特定のプラットフォーム依存のものは、もう未来がないと思う。
C# + .netはマルチプラットフォーム普及に失敗したので、
残念ながら、もう勉強する価値があると思えない。
培った技術は、Silverlightとかに受け継がれればよいけど。


77 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:29:22 ]
お前がそう思うんならそうなんだろう
お前ん中ではな



78 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:33:23 ]
全然外してるけどな。

79 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:41:28 ]
>>76
monoガン無視とは恐れ入る
・HTMLで画面デザインできる
ってのも意味不明だが。

80 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:42:45 ]
今すぐコードを書いて来週には環境依存でもなんでもいいからとにかく動く物を納品しなきゃいけないのに
そんな遠い未来の話やら理想論を真面目に語られてもなあ
まあ学生さんはがんばってねとしか

81 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:49:09 ]
デスクトップアプリでマルチプラットフォームなんてファンタジーまだ信じてる人いたんだ

82 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:56:39 ]
>>80
>まあ学生さんはがんばってねとしか
あるあるw

HTML界隈はそういうの本当に多かった。

83 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 16:12:58 ]
まー標準()笑 に夢みんのは学生までにしとけってこったな
HTML5だってまたどーせブラウザ依存でgdgdだよ
船頭多くて上手く行った例なんか見たことないわ

84 名前:デフォルトの名無しさん [2010/05/23(日) 16:47:43 ]
.NET4の透過セキュリティモデルが分かりません。
例えばFileIOPermissionが制限されたサンドボックスのTransparentコードから
SafeCritical/Criticalのアセンブリへの遷移してFileIOを行う場合に、
遷移したことで自動的に完全信頼になりファイル操作が出来るようになるのか、
Assertが必要なのかこの辺はどうなのでしょう。

85 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 17:10:57 ]
>>83
()笑 

86 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 17:42:47 ]
プリントスクリーンや外部ツールの画面キャプチャで画面を撮られないように、
キャプチャ時にウィンドウに画像を被せるとかのマスク処理をしたいです。
(Acrobatで同じようなことをやってると思います)

.NETで画面キャプチャイベント拾えないかなぁと探してるんですが、
それっぽい情報に見あたらないです。

何かやりようがありますでしょうか。

87 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:02:59 ]
>>86
それ抜け道たくさんあるからやるだけ無駄だよ



88 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:07:55 ]
>>87
例えばどんなのです?

89 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:17:53 ]
デジカメで撮る。

90 名前:デフォルトの名無しさん [2010/05/23(日) 18:22:58 ]
ローレベルなところでフックなんて使われたらどうしようもないしなあ
flashゲームなどのチートの際に使うツールは別プロセスのメモリ
覗き放題だしねえ

windowsで完璧なプロテクトは無理と思ったほうがいいよ

91 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:36:18 ]
>>86
OSが頑張って保護している地デジを表示しているWMCの画面も
キャプチャできるアプリがあるのにどうやってブロックできると思うんだ?

92 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:43:42 ]
>>90
うーん、じゃあ例えば、クローズドな社内システムか何かで、
ユーザが勝手にソフトやツールを追加できないって前提ならどうでしょう。

93 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:46:55 ]
社員にPC使わせなければいいんじゃね?

94 名前:デフォルトの名無しさん [2010/05/23(日) 18:53:16 ]
汎用のOSや汎用の部品使ってるうちは無理だしなあ
それに最近のマシンはディスプレイアウトが高画質だし
それ経由で簡単にキャプチャできちゃうからフック系だけ気に
してればいいわけじゃないしね
あと>>89のようなのもあるしw

95 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 19:03:08 ]
うーん、読み取れるようにするのかあ

96 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 19:10:13 ]
89は最強だよな


97 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 19:15:17 ]
映画ではプロテクト用に人の目には分からないように赤外線も出力して
カメラで撮ったらまともに見れないようにしてるというものがあったと思った。



98 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 19:36:02 ]
>>97
(>_<) …

99 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 20:14:37 ]
>>97
それは実験段階で、導入した劇場はまだなかったはず。

うちの会社はデジカメ持ち込み禁止。カメラ付き携帯も禁止で、入社すると強制的に機種変させられる。

100 名前:デフォルトの名無しさん [2010/05/23(日) 20:20:47 ]
>>99
カメラなし携帯探すの大変じゃね?w

101 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 20:23:36 ]
そういや守秘義務守るために
プリンタ出力禁止とかUSB書き込み禁止するシステムは結構あるけど
デジカメ阻止するようなのはあんまりないね。

102 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 20:37:04 ]
常にモニタの前をWebカムで撮って、デジカメに類する機器を検出したら画面を
切り替えるような仕組みを作ればいいんじゃね?

103 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 20:41:33 ]
レベルの高いスレですね。
僕もいつかは皆さんのような高度な話題を展開できるようになりたいと思います。

104 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 20:47:58 ]
デジカメ対策するなら、
OSやソフトじゃなくモニタにつけるスクリーンやシートの役割じゃね?

105 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 21:35:05 ]
なんとかしてデジカメ阻止したとしても
手書きのメモとか脳内コピーはどうしようもないよな


106 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 21:35:58 ]
>>102
Web カムで顔認識して PC の前に人がくるとメール飛すアプリは公開されてたな。

107 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 21:49:37 ]
>>105
まあ、悪意あるヤツはどう防御線張っても乗り越えて盗むってことだな。
ソフトやハードでは、悪意無く漏洩してしまう場合の対策だろうな。



108 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:26:36 ]
>>100
ものすごく選択肢が狭くなるけど、あることはある。
だから同期はほとんどみんな同じ機種。区別するためにストラップ必須。

109 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:27:20 ]
>>99
まだ導入されてないのか。
映画を見るたびにミスターVTRが出てくるのが鬱陶しく思うんだよね。

110 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:39:14 ]
>>108
もしITの仕事についててスマホが使えないってのは勿体無いと思うんだが、
難しいところだよな。。。

111 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:00:11 ]
標準スクリーンショットを封じたいのならオーバーレイ使えばいいじゃない
と言おうと思ったがAeroだとオーバーレイそのものがなかったでござるの巻

112 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:07:15 ]
>>99
トヨタ?

113 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:20:22 ]
現在C#を使ってWEBページからデータを取得しようと考えています。
urlを指定して取得することはできたのですが、ajaxによって送信されてくるデータを取得できなくて困っています。
post形式でデータを送信していることはfirebugを使ってわかっているのですが、
どうすればそのpostデータを使ってxmlを取得できるのかがわかりません。

WebClient wc = new WebClient();
byte[] res_data = wc.UploadValues(url, post);

こんな感じでやってみたところできませんでした。
たぶん使うメソッドが間違っていると思うのですが、何を使えばいいのかわかりません。
どなたかよろしくお願いします。



114 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:21:08 ]
スクリーンショット封じると無条件で仮想環境リモートデスクトップ不可という
ハメ技に陥るんじゃないか?

115 名前:デフォルトの名無しさん [2010/05/23(日) 23:26:29 ]
その辺はこの辺でやった方がいいかもね
www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html

116 名前:デフォルトの名無しさん [2010/05/23(日) 23:27:34 ]
間入ったか
>>115>>113

117 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:27:46 ]
パケットキャプチャしてみれば?



118 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:31:13 ]
>>113
ajaxって言ってるから、多分JSONかSOAPでWSDLのどちらか。とか知ったかしてみよう。

119 名前:デフォルトの名無しさん [2010/05/23(日) 23:32:31 ]
>>118
その辺だって結局postかgetリクエスト作って通信してるだけでしょ?
>>115で可能だよ

120 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:39:36 ]
>>113
C#でpostして、そのレスポンスが欲しいってことかな?

Ajaxっても、普通のHTTPのpost通信だから、
HTTPリクエストとHTTPレスポンスを使ったらできないかな?

見当違いのこと言ってたらゴメン。

121 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:40:46 ]
>>99
ああ、逆にザルのパターンだなそれ
セキュリティについてまじめに取り組まないからそんな雑なことになってる

122 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:43:59 ]
>>113
POST すれば行けるはずなのに wc.UploadValues で行けない場合、
ひょっとしたら文字コードの問題かも。
WebClient の UploadValue は utf8 でしか URL エンコーディングしてくれない。
sjis とか euc の場合は ↓ とかを参照。
dobon.net/vb/dotnet/internet/webrequestpost.html

123 名前:113 mailto:sage [2010/05/24(月) 00:00:53 ]
>>115,117,118,119,120,122
皆様アドバイスありがとうございました。
無事取得することができました。
どうやら問題は122さんがおっしゃっていた通り文字コードでした。
本当にありがとうございました。

124 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:02:14 ]
セキュリティ対策って結局は対外的なポーズに過ぎないんだろうな。
悪意のある人間に対しては何をやっても無駄な気がする。

125 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:38:11 ]
犯罪者予備軍を諦めさせるための抑止力として相手にセキュリティ対策してるよってことが伝わるだけでいいんだよ
そこから踏み込んでくるやつは仕方ない

126 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:16:14 ]
そうだよね。
そこらへんに落ちてるツールで攻撃してくるようなのをはねるだけでも
充分な効果があると思うぜ

127 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:36:07 ]
で、抑止力としてのプリントスクリーン禁止はどうやりゃいいの



128 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:38:33 ]
キーボードから PrintScreenキーを外す。

129 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:40:42 ]
スクリーンキーボードから PrintScreenキーを外すのってどうやるの?

130 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:41:16 ]
>>127
さがしてきたぞー VB.netだけど
ttp://www.codeguru.com/vb/gen/vb_system/keyboard/article.php/c4831

131 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:44:25 ]
本気でやるならドライバレベルで無効化しようぜ

132 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:47:23 ]
カメラで撮影されたら(ry

133 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 23:10:09 ]
監視カメラ

134 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 00:10:12 ]
さすがC#スレ
れべるのたかいぷろぐらむだんぎですね

135 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:02:51 ]
List<>の全要素中の条件にあう要素を削除したい場合、
foreachじゃなくてforでCount分だけ回して削除した時だけi--するっていうのが一般的ですかね?

136 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:04:19 ]
後ろから削除する

137 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:06:48 ]
RemoveAll



138 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:11:55 ]
後ろから削除する方法もありますね。
どちらにせよforで泥臭くやるんですね。
もっとスマートなやり方が無いのか気になっただけでした。

139 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:13:25 ]
>>138
>>137

140 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:13:48 ]
もいっこList<>作ってforeachで残す奴だけコピーして差し替え。
としているが問題はない。(作りによるかもしれないが)

141 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:16:06 ]
selectしてdeleteとかできないんだっけ。
もしくはdeleteifみたいなのとか。

142 名前:141 mailto:sage [2010/05/26(水) 00:17:18 ]
すまんすまん。137で解決してたわ

143 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:18:42 ]
見逃してました。
>>137さんありがとうございます。

144 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:21:43 ]
RemoveAllってAllって名前が悪いよな
要素全部消すみたいに思えるじゃん

145 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:21:49 ]
会社じゃ未だにVS2005だから匿名メソッドが書きにくくて困る。

146 名前:デフォルトの名無しさん [2010/05/26(水) 00:24:53 ]
>>144
まあClearがあるからなあ

147 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:29:00 ]
「Clearは参照をnullにして実体はGCにおまかせ、RemoveAllは実体も同時に消す」
みたいな機能があるのかな?と思った
それにしてもなんで"All"なんだ



148 名前:デフォルトの名無しさん [2010/05/26(水) 00:31:16 ]
>>147
Clearはリスト全部切り離すはずだよw
Removeは指定した物をRemoveAllは該当するもの全部ってことじゃないの?

149 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:32:44 ]
FindAllと並べたかったんじゃないかな

150 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:38:29 ]
みんなも一度はRemoveRangeしかねーじゃないかといらついた経験があるのか

151 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 00:47:30 ]
>>137
目から鱗です

152 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 01:13:50 ]
>>144
Clearの立場は・・・

153 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 01:41:37 ]
fortranのwhere文みたいのねえのかな

154 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 02:02:53 ]
LINQのWhereじゃダメなん?

155 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 02:05:38 ]
>>148
肝心の「該当するもの」って部分が欠けてるだろw

156 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 02:31:03 ]
ほほう

157 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 04:49:58 ]
RemoveAllは、あとから追加されたHashSetでは反省してか名前がRemoveWhereになってるね。



158 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 05:13:25 ]
IList<T>&IDictionary<TKey, TValue> … RemoveAll
ISet<T>(HashSet&SortedSet) … RemoveWhere
リストと辞書がRemoveAllなのは過去のバージョンとの整合性もあって仕方ないか。

159 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 07:01:46 ]
RemoveIf がよかった

160 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 12:26:42 ]
追加してRemoveAllをobsoluteにすればよかったのにそうしなかったのには何か意図が、、、なさそうだな

161 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 12:37:48 ]
そんなことしたらほとんどのプロジェクトで警告出まくってえらいことになる
ほんとはList<T>のFind**/Exists/TrueForAllあたりも
LINQが無かったころの遺物なので(実際Silverlightでは削除)軒並みObsoleteにするべき

162 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 12:55:07 ]
TrueForAll を素直に LINQ で書くにはどうすればいいの

163 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 13:03:46 ]
Enumerable.All

164 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 20:47:24 ]
>>155
抜けているようには思えないが....

165 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 20:48:46 ]
RemoveAll すべてわすれる

166 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 20:58:42 ]
実際にコード中で使うときは引数込みで意味は通るだろ
でもIndexOfと違ってRemoveAllだけでも意味が通っちゃうから
インテリセンスやMSDNで名前だけ並ぶとわかりづらいな

167 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 00:27:26 ]
Listviewについて質問させて下さい。
やりたい事は、
複数のListViewがあり、それぞれで複数の項目(item)を選択した状態を作りたいです。
4つほどのListViewを作り、それぞれで1,2項目、合わせて6ー8項目を選択して、ボタンを押したら、それに見合うデータを取得するというイメージです。
先程、作ってみた所、ListViewのフォーカスを別のListviewに移すと、それまで選択した項目が ”非選択" になってしまいます。
こうならない方法はないでしょうか?

場違いな質問という事であれば、他のスレッドを紹介していただけると助かります。
microsoft visual c# 2008 expressを使い始めて3日目で、
今までは 簡単なscript(ruby, javascript)を書いた経験があるくらいです。
ピントがずれてるのかもしれませんが、よろしくお願いします。









168 名前:デフォルトの名無しさん [2010/05/27(木) 00:33:43 ]
なにかあったな
保持する設定

169 名前:167 mailto:sage [2010/05/27(木) 00:35:25 ]
>>168
プロパティを探せばありそうですか?探してみます。

170 名前:デフォルトの名無しさん [2010/05/27(木) 00:42:25 ]
あった
HideSelectionをtrueにすると強調表示なし
falseにすると強調表示あり

171 名前:167 mailto:sage [2010/05/27(木) 00:48:04 ]
>>170さん、ありがとうございます。
確かに HideSelection を falseにしたところ、選択した後が残ってました。
今から、listView2.SelectedItemsで選択したitemが取れるか確認します。

172 名前:167 mailto:sage [2010/05/27(木) 00:52:13 ]
ListView3.SelectedItemsで取れてました。 
おかげで一歩前進しました。
ありがとうございました。

173 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 06:09:08 ]
とあるファイルを監視して、そのファイルに変更があった場合、そのファイルを読み取って処理を行いたいと思っています。

しかし、イベントハンドラの中で変更されたファイルを読み取ろうとすると、TargetInvocationExceptionが発生します。
new StreamReader(e.FullPath)の部分で例外が出てしまうのですが、どうすれば読み取れるでしょうか?

■ソース
private void watcher_Changed(System.Object source, System.IO.FileSystemEventArgs e){
 using (StreamReader sr = new StreamReader(e.FullPath)){
 }
}

174 名前:デフォルトの名無しさん [2010/05/27(木) 07:47:04 ]
>>173
ファイルの監視とかなら、FileSystemWatcherじゃないの?
使ったことないけど

175 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 08:34:43 ]
RemoveAll()ってCのcreat()に通じるものを感じるな

176 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 11:05:05 ]
e.FullPathはちゃんと有効なパスになっているのか

177 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 11:12:11 ]
>>173
TargetInvocationExceptionのInnerExceptionは?
ファイルを変更してるプログラムがまだロック中なんじゃない?



178 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:31:18 ]
>>177
できましたありがとう。

using(FileStream fs = new FileStream(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using(StreamReader sr = new StreamReader(fs)){
string strLine = sr.ReadLine();

  以下省略・・・

179 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 18:54:05 ]
鱗から目です

180 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 20:47:53 ]
JaneStyleなどの2ch専ブラの機能の、「>>170」などにマウスホバーすると、>>170の内容が出てきます。
これをlistviewでやりたいんですが、どのように実装すれば良いでしょうか?
VisualStudio2008を使っています。

■イメージ
名前  詳細1  詳細2  詳細3
test1  あ     い     う
test2  か     き     く     ←この行でマウスホバーされたら名前と詳細1の内容から、表示する内容を決める
test3  さ      し     す

181 名前:デフォルトの名無しさん [2010/05/28(金) 20:50:39 ]
>>180
マウス関連のイベントでマウスが乗っかって停止したら〜とかあったはず
それで任意のコントロールで表示すればいいだけちゃうの?

182 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 21:08:22 ]
>>181
自分でマウスホバーと書いておいて申し訳ないんですが
MouseHoverのイベントを使用すると、かなり重いんです。
中で何も処理をしなくてもかなり重くなってしまいます。

183 名前:デフォルトの名無しさん [2010/05/28(金) 21:49:35 ]
>>182
そんなに重かったっけ?
まあ何もしないってのよりはそりゃ処理するので負荷は増えるだろうけどさ

184 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:08:00 ]
普通にToolTip使えばええやん

185 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 23:14:30 ]
>>183
ストレスを感じるくらいには重いです。
ボタン押下時に多少重くなるのはいいんですが、カーソルを移動させただけで重くなるのは避けたいです。

>>184
アドバイスありがとうございます。
わからない点があるので、わかるようでしたら教えてください。

■不明点
・マウスがListViewのどの行の上にあるのか取得できるか?(選択させるわけではないのでselectedではありません
・行ごとに説明文を変える事ができるのか?

186 名前:デフォルトの名無しさん [2010/05/28(金) 23:33:11 ]
>>185
これではどう?
dobon.net/vb/dotnet/control/lvitemtooltip.html

187 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 00:05:14 ]
>>186
完璧です。
ありがとう。



188 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 01:10:17 ]
>>185
はやくリリースビルドで速度を確認する作業に入るんだ。

解決したらしいが。。。

189 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 02:44:47 ]
FreeTrain EX Avという、A列車で行こう4のクローンになりたいゲームを作ってるのですが。
sourceforge.jp/projects/freetrain-exav/
(最新βが2.1.1.5で、ソースは直下trunk/以下が該当します)

パラメータをリアルタイム表示するウィンドウを追加して行ってたら、データセーブ時に特定の
ウィンドウをあけっぱなしているとエラーが起こるようになってしまいました。
>アセンブリ 'FreeTrain.Core, Version=2.1.1.5, Culture=neutral, PublicKeyToken=null' の型
> 'freetrain.world.rail.StationInformationWindow' はシリアル化可能として設定されていません。
データのセーブロードはBinaryFormatterを使ったシリアライズでしています。
ウィンドウのFormをシリアライズしようとしてるわけではなく、パラメータの変化をイベント起こして
もらって表示をリフレッシュするために使ってるイベントハンドラが参照を呼んでこのウィンドウ
のシリアライズをしたがっているみたいなのです。

core/world/rail/Station.csが駅本体部分で、ここでイベントの宣言を
public delegate void StationCounterListener();
public StationCounterListener onStationChange;
とやってて、駅に乗降があったときにonStationChange();してます。

パラメータを表示してるウィンドウはcore/controllers/rail/StationInformationWindow.csで
public StationInformationWindow( Station st ) {
this.station = st;
InitializeComponent();
onUpdate();
station.onStationChange += new StationCounterListener(onUpdate);
}
ここでstation.onStationChange += の行をコメントアウトするとエラーがなくなります。
しかし他にもイベントハンドラでリアルタイム書き換えしてるウィンドウ多数あるのにエラーに
なってなくて、なぜこのウィンドウだけなるのかが分からないのです。

190 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 03:32:30 ]
そのonUpdateがどうなってるかまず晒せ

191 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 03:34:38 ]
ロギングにlog4net使おうかと思ってるんだけど、log4netて使いにくく無いですか?
今まで使ってた自作Loggerクラスはstaticなメソッドを一発呼ぶだけ、みたいな感じにしてたんだけど
log4netだとGetLogger呼ぶ時の引数がやっかいで、簡単に自作クラスでラップできそうにないし・・・

全クラスの先頭に
private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
とかうめこんで
loger.Error("えらー");
とかめんどくさいなぁ。

この辺どうやって解決してます?
それともNLog使ってる人のが多い?

192 名前:デフォルトの名無しさん [2010/05/29(土) 03:56:56 ]
>>191
TraceListenerで十分だから、そんなもん使わん

193 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 07:15:23 ]
参考までに教えて欲しいのですが、>>186でできるのはListViewだけで
checkedListboxではできないのでしょうか?
もしできるようならそっちもいろいろやってみたいのですが
MSDNを見てもそれらしいプロパティが存在しないみたいなんです。

194 名前:デフォルトの名無しさん [2010/05/29(土) 08:36:30 ]
Listbox系のアイテムの管理はstring[]だからなあ
tooltip使ってみたけどcheckedListbox全体ででちゃうな
個別はできなかった

195 名前:デフォルトの名無しさん [2010/05/29(土) 08:42:21 ]
おっと自分の質問忘れるところだった

2chの通信をモニターするだけのソフトを作りたいんですが
参考になるような情報を扱ってるサイトをご存知ないでしょうか?
もしくはヒントでもかまいません

196 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 08:53:49 ]
>>193
>186の1.1以前と同じやり方でやればいいよ
GetItemAtの代わりにIndexFromPoint使って

197 名前:デフォルトの名無しさん [2010/05/29(土) 08:58:15 ]
C++でいう
#include <shobjidl.h>
#include <shlguid.h>
はC#だと何になるのでしょうか?



198 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 09:04:20 ]
>>197
どのインターフェイスを使いたいのさ

199 名前:197 [2010/05/29(土) 09:06:29 ]
>>198
ショートカットのリンク先を取得するのにusingが分かりません

200 名前:デフォルトの名無しさん [2010/05/29(土) 09:09:01 ]
>>199
usingを知りたいのはわかるw
ヘッダーよりどの関数の代わりかで聞いたほうがいいよ

201 名前:189 mailto:sage [2010/05/29(土) 09:29:35 ]
>>190
こんなかんじです

private void onUpdate(){
// initialize the dialog
nameBox.Text = station.name;
label_loaded.Text = string.Format("{0} / {1}",station.LoadedToday,station.LoadedYesterday);
label_unloaded.Text = string.Format("{0} / {1}", station.UnloadedToday, station.UnloadedYesterday);
label_trains.Text = string.Format("{0} / {1}", station.TrainsToday, station.TrainsYesterday);
label_waiting.Text = string.Format("{0} / {1}",station.WaitingPassengers, station.population);
label_entering.Text = string.Format("{0} / {1}",station.WantEntering, station.entering);
label_LastUnloded.Text = station.lastUnloaded.ToString();
}


202 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 10:04:45 ]
簡単なのはShell32.dllをCOMとして参照設定し、
using Shell32;
で、Z:\Hoge.lnkのリンク先を得るコードはこんな感じ。
ShellFolderItemを直接得る方法があればいいんだけど、それは分からん。

Shell sh = new Shell();
Folder f = sh.NameSpace(@"Z:\");
foreach (ShellFolderItem i in f.Items())
{
if (i.IsLink && i.Path == @"Z:\Hoge.lnk")
{
Console.WriteLine(((ShellLinkObject)i.GetLink).Target.Path);
}
}

203 名前:202 mailto:sage [2010/05/29(土) 10:08:38 ]
すまん
>>202>>199な。

204 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 11:28:09 ]
>>201
それに使ってるプロパティのどれかが内部的にシリアライズ使ってるか、
どっかでシリアライズしてるのがたまたま其処で発狂するかのどっちかだな
てか何処でエラー起こってんのよ?
newしてるとこじゃないんだろ

205 名前:197 [2010/05/29(土) 12:12:10 ]
>>202
ありがとうございます
試してみたところ
エラー 1 型または名前空間名 'Shell32' が見つかりませんでした。
とエラーがでてしまいます。

206 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 13:07:35 ]
>>205
ちゃんと参照設定してないだろそれ
usingのことじゃないぞ>参照設定

207 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:51:07 ]
.NET framework 4でoffice 2003のアドイン作れますか??



208 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:21:20 ]
タイプライターのように文字表示したいのですがUIでThreadを使うなと以前書いてあったと思います
どのようにwaitをかければ良いでしょうか
ttp://ideone.com/NZMm7

209 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:42:43 ]
>>208
Dispatcher通せば別スレッドからアクセスできるよ。

210 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:08:07 ]
>>208
System.Windows.Timerを使えばいい。

211 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:54:56 ]
waitを掛けるって発想が大昔のBASICっぽいなw

212 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:56:20 ]
UIでThreadを使うなって
Invokeしろって意味じゃないのか?

213 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:59:38 ]
正しくは「UIスレッドを止めるな」だな
スレッドを止めたいときは別のスレッドを作る

214 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:09:56 ]
208です
BackgroundWorkerを使って別スレッドにしてみましたが結局UIを触るなってことらしく
にっちもさっちも行きません
Thread.Sleepで止めて、その間UIを触れないようにしました

215 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:17:29 ]
タイマ使え
ループはいらん

216 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:42:04 ]
>>214
どこを参照してそのような知識を得たのか晒してみるといいよ

217 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:51:58 ]
タイマーだと、タイプライターのような入力文字列によるインターバルの差や、
入力速度の揺らぎを再現しようとすると、綺麗に纏まらないな

勿論、それくらいやるよね>>208



218 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:55:56 ]
それでもそんなことにスレッド使うのはありえない
短い間隔で頻繁にコールバックかけて時間測るようにするだろ
ゲームみたいに自分でメッセージループ回してもいい

219 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:03:16 ]
>>214
だからDispatcher使えって。
別スレッドから、「UIスレッドでこの処理実行してくれ」ってお願いする機能。


220 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:07:38 ]
いやそもそも普通そんなことにスレッド使わないから

221 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:08:55 ]
>>219
普通DispatcherというとSystem.Windows.Threading.Dispatcherだが、
WinFormの話でそんなんだされても困る

222 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:13:49 ]
208です
さすがに素人でも214の処理はまずいと思いましたのでTimerを使ってみました
ideone.com/za8su
期待通りの動きといえば期待通りなのですがどうでしょうか

223 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:18:26 ]
>>221
あー、Control.Invoke (Delegate) のことね。

224 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 23:19:51 ]
>>222
なんかおかしくね?

225 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:17:46 ]
なんかって何?

クリックするたびにTickのイベントハンドラが増えるとか、
TypeWriter()の引数を使っていないとか、
typewriterは1単語だからケースがおかしいとか?

226 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:20:47 ]
>>225
やさしいなw

227 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:29:16 ]
C#でフォルダを作るときに変数をフォルダ名にすることはできますか?



228 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:35:42 ]
変数を使わずにフォルダを作る方法がわかってるんだったら
フォルダ名を文字列で直接指定する代わりに変数を与えればいいだけ

229 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:35:42 ]
なぜそうしたいんですか?

230 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:44:24 ]
>>228
すいません
それがうまくいかなくて…

>>229
例えば「5」と入力したらフォルダ1、フォルダ2、…、フォルダ5というようにフォルダを作りたいので

231 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:49:00 ]
>>230
for (int i = 1; i <= 5; i++) {
string folder = string.Format("フォルダ{0}", i);
}


232 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:50:03 ]
>>230
それは「変数をフォルダ名にする」じゃ言葉足らずもいいとこだろ。

var path = Path.Combine(basePath, string.Format("フォルダ{0}", i);
Dicretory.CreateDirectory(path);

とかでもダメ?


233 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:54:08 ]
>>231
>>232
ありがとうございます
試してみます

234 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 10:28:12 ]
ゲ製から来た人かなあ
ゲーム作るつもりなら最終的には自分でメッセージループ回すことになると思うぞ

235 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:06:34 ]
C++の__DATE__みたいなコンパイル日付は
どのように取得するのでしょうか?

236 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:41:05 ]
無理
どうしてもやりたかったらビルド前のコマンドでコード生成

237 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:43:21 ]
無いですか・・・残念
ありがとう



238 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:18:02 ]
コード生成っていったって
internal static class VersionInfo { public const string Date = "2010/05/31"; }
こういうのを生成してcsファイルに保存する処理をスクリプトかなんかで書いてビルド前イベントで呼ぶだけ

239 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:56:56 ]
svnのリビジョンを読み取ってソースに書き込む奴とかな。

240 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 04:51:57 ]
わざわざ読み取らなくても勝手に変えてくれるよ

241 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 15:22:12 ]
MSってコード生成とかメタプログラミングとか好きだから
__DATE__みたいなオモチャ使わず各自で好きにやるのが普通だと思ってるんだろうな

242 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:22:49 ]
どうしても必要ならリフレクション。

243 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:50:03 ]
リフレクション使うにしてもコンパイル時に埋めこんどかないと無理
[assembly:CompileDate("2010/05/31")]みたいな
どっちみちコード生成が必要だから>>238の方が楽

244 名前:239 mailto:sage [2010/06/01(火) 19:34:49 ]
>>240
うわあ、今までPerlのスクリプトで処理してた・・・

245 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 19:50:35 ]
>>244
まじかよw
これまでの作業量について考えるのだけはやめておくんだ!これからが大事!な!

246 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 05:36:50 ]
245 のやさしさに泣いた

247 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 08:58:57 ]
まぁ遠回りして勉強になることもあるし・・・
あまりにも調べが足りなさすぎるがこれも勉強だw



248 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 10:55:14 ]
まあデフォルトのままだとかわらないからな

249 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:09:26 ]
相談です。

.NET3.5でWindowsフォームアプリケーションを作成しています。

Webカメラやリモートカメラなどの映像を取り込み、その映像をリアルタイムにフォーム内に表示したいのですが、
可能でしょうか?

「webカメラ キャプチャ」等のワードで検索しても良い資料が見つからなかったので、
どなたか良い方法をご教授ください…

250 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:34:04 ]
>>249
DirectShow辺りに答えがあるんじゃないかな?

あと、ヒントならGraphEditPlusというツールを使うのもありかも。

251 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:51:48 ]
Directshow.NET使ってる。
普通に使える

252 名前:251 mailto:sage [2010/06/02(水) 14:00:17 ]
あーあとOpenCVの.NET版も試したけど使えたよ

253 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 14:38:34 ]
どなたか教えてください。

機器との通信により得られた16進数の浮動小数点データ形式文字列を、
10進数にしてを表示するプログラムを作成したいのですが、よい方法はないでしょうか?
<例>受信データ:42C80000 出力:100.0
といったものを作りたいのです。

なお、受信データを文字列に変換するところまでは、できています。

254 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 14:49:05 ]
16進文字列をintに変換
int n = Convert.ToInt32("42C80000", 16);
intを浮動小数点に変換
float f = BitConverter.ToSingle(BitConverter.GetBytes(n), 0);
100.0のような書式で出力するのはわかるよね?

255 名前:デフォルトの名無しさん [2010/06/02(水) 15:00:18 ]
その前にエンディアンとかの話は大丈夫なんだろうか・・・

256 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 15:01:56 ]
受信データの例を見る限り問題無いでしょ

257 名前:253 mailto:sage [2010/06/02(水) 15:29:16 ]
>254さん
できました。
ようやくConvert.ToInt32の意味がわかりました。
どうもありがとうございます。



258 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 20:34:47 ]
フォーム内のフォーカスを初期表示時と同じにする、もしくは
フォーム内のコントロールで TabIndex が一番若い番号のコントロールを
簡単に知る方法はないでしょうか?

現在複数のフォームを使うアプリを書いているのですが、
インスタンス化の処理が結構重い(DBから情報ひっぱってきてコントロールを沢山つくる)ので
フォームのインスタンスを使いまわすことにしました。

Close() のかわりに Hide() を使ったまではいいのですが、
再度表示したときに当然のごとくフォーカスの位置が前回と同じなままになってしまいます。
ロードイベントあたりで先頭のコントロールに対して Select() を使って対処していますが、
コントロール名をハードコーディングしているのでデザイナでの TabIndex 変更に追従出来ていません。




259 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 20:45:33 ]
>コントロール名をハードコーディングしているのでデザイナでの TabIndex 変更に追従出来ていません。
意味がわかりません

260 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 20:56:45 ]
とてつもないドキュソ実装の香り。
動的なフォーム構築で追加したコントロールのTabIndex再設定ができません、と聞こえる。
手を抜かないでFormのControlsを回して設定し直せばいいんじゃね?

261 名前:258 mailto:sage [2010/06/02(水) 21:04:19 ]
>>259
TabIndex が一番若いコントロールを決めうちして
Load イベントで直接 Select() しちゃっています。
デザイナで順番かえたりした場合は一々 Select() を呼び出すコントローラーを変更しています。

>>260
全部を動的に追加しているわけじゃなく、いくつか固定で置いてあるものもあるんですが、
動的フォーム構築をする場合って全部の TabIndex をコードビハインド側でふりなおすのが普通なんでしょうか?
その場合ってデザイナ側での並び順がかわったら一々コードも修正しないといけないですよね?


262 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:08:09 ]
>>250,251
ありがとうございます

263 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:08:45 ]
LinQで検索でいけるじゃんと思ったけどPanelとか使ってると結構めんどくさいな

264 名前:デフォルトの名無しさん [2010/06/02(水) 21:13:57 ]
USBカメラを使って、動画を
AVIファイル形式での作成の仕方はサンプルみつけたんだけど、
WMVもしくはMP4で作成できる人いる?
AVI形式はサイズが大きすぎて、、、小さくしたいんだよね。

265 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:20:46 ]
スレ違い
そういうのはC#にこだわらずにC++のコードとか漁らないと

266 名前:258 mailto:sage [2010/06/02(水) 21:22:48 ]
自己解決しました。

フォームの VisibleChanged イベントハンドラで自分自身に対して SelectNextControl() を使うことで
希望の動作となりました。



267 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:33:45 ]
フォームインスタンス使いまわしはクリアの処理が汚なくなりがちだからきらいだな



268 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:36:45 ]
きちんと戦略を練られるならいいけど、タブ順の管理すらメンドクサなんていう
子のコードは信じられない。

269 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:50:28 ]
>>268
タブ順はデザイナーで管理したい、って話じゃないの?
俺はそういうのはデザイナ側で完結してないと気持ちわるいけどな。
WPF万歳だよほんと。

270 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:53:20 ]
コードビハインドはどっちかっつーとまだデザインの範疇じゃね?
まータブ順変更しただけでコード書き換えなきゃいけないような実装はタコだと思うけど。


271 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:00:38 ]
WPFありがたがってるのは総じてアホ

272 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:13:29 ]
新しいものを受け付けなくなったら終わりだよ
C#ユーザーってもっとミーハーが多いのかと思ってた

273 名前:デフォルトの名無しさん [2010/06/02(水) 22:16:09 ]
WPF単体だと見切る可能性大だったな
SilverLightがなければやろうと思わなかった

274 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:19:16 ]
>SilverLight
ほんとにやってんの?

275 名前:デフォルトの名無しさん [2010/06/02(水) 22:21:09 ]
xamlという共通な部分があるからね
実装差違とかあるのもわかってるよ

どっちかといえばsilverlightのついでにWPFやる感じ

276 名前:デフォルトの名無しさん [2010/06/02(水) 22:21:36 ]
test

277 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:24:34 ]
xamlがわからない



278 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:26:38 ]
xamlやるぐらいならHTML5とJavaScriptやる

279 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:31:28 ]
たかが設定ファイルに何そんなに騒いでるの
XAMLなんかDesigner.csをXMLにしただけのもの
触りたくなけりゃ触らなくてもデザイナ任せでWinForms程度のUIは作れる

280 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:32:19 ]
なんでか、うちのWindows7じゃWPF動かんし。
動かすと「URLが正しくないため、読み込めませんでした」。
エクスプローラからダブルクリックしても全く動かない。

281 名前:デフォルトの名無しさん [2010/06/02(水) 22:34:02 ]
>>277
winformでも同じような仕組み作れるよ
Formにwebbrowser貼り付けてそこへ起動時にhtmlコード入れて
webbrowserのどれがクリックされたとかイベント処理すればOK

282 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:34:12 ]
何を勘違いしてるのか知らんがプログラミングやるようなレベルじゃないな

283 名前:280 mailto:sage [2010/06/02(水) 22:42:26 ]
あ、すまん勘違い。なんかいじってた設定が悪かった。新規作成したら動いたわ。

284 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 01:14:15 ]
ソフトウェアキーボードを作っています。
タブによって英数字と平仮名のキー分けてをそれぞれ実装しています

ある文字ボタン(ここでは「か」と書かれたボタン)を押すとイベントが発生し、以下のような処理を行います。
private void buttonH_SA_Click(object sender, EventArgs e) {
 SendKeys.SendWait("ka"); //"平仮名の「か」を送りたい
}

このようにして、ソフト上でキーボードを実現したいのですが、
例えばメモ帳アプリケーションに対してこのような処理を実行すると、"か"ではなく"ka"としか表示されません。

なんとかして、メモ帳に"ka"ではなく"か"と表示させることはできないのでしょうか?
対象テキストボックスのImeModeプロパティが弄れたらいいのだけれどもそれは無理ですし…

何か良い方法があればご教授下さい。
よろしくお願いします。


285 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 07:01:55 ]
SendKeys.Send("か");
でいかんのか?


286 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 10:42:43 ]
>>285
それは試しましたが、確かに「か」と出力されます。

しかし未変換の状態で出力されてほしいのです。(文字に下線がついて出力されるように)

その方法では既に確定した状態で出力されてしまいます。

287 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:06:27 ]
DLLのAPI呼び出しでもいい?



288 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:55:11 ]
>>287
大丈夫です

289 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 14:22:47 ]
>>288
ならWin32 APIのSendInputを呼び出すんだな。
IMEがMS IMEなら下線付きで送信される。でも残念ながらATOKは確定済みで送信される

290 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 14:27:22 ]
Imm〜で何とかできそうな

291 名前:デフォルトの名無しさん [2010/06/03(木) 15:43:17 ]
cs2ch.blogspot.com/2010/04/blog-post_10.html
これにIMEの制御つけるだけじゃないの?

292 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 16:14:03 ]
多分「詳細なテキストサービス」の出番ではなかろうか
Imm系がそれだったような気もするが詳しくは知らん
てか情報なさ過ぎ

293 名前:デフォルトの名無しさん [2010/06/03(木) 16:17:15 ]
>>292
それより問題なのがOSがvista以降くらいになると
IME関連の制御が違うとかどうのって記述を見かけたたんだよな・・・

294 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 17:53:48 ]
>>293
これだな ttp://social.technet.microsoft.com/forums/ja-JP/windowsvistasoftwareja/thread/973a7407-5ddb-4b34-9aea-0fb36f762cf4/
VistaからTextServicesFramework、略してTSFなるものに変わったらしい
まったく毎度毎度要らんことしてくれるわM$さんはよう

295 名前:デフォルトの名無しさん [2010/06/03(木) 18:06:11 ]
>>294
それそれ
MS関連でタッチパネル系デバイスが普及しないのは
そういうところなんだよね〜

296 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 18:39:37 ]
>>295
かんけーねーし、
そもそも携帯電話以外で巷にあふれているタッチパネルのデバイスの大半はMSのOS使っているだろ。

297 名前:デフォルトの名無しさん [2010/06/03(木) 18:42:34 ]
業務用で終わってる内は普及したとはいわねーよw



298 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 18:49:58 ]
>>297
ニートは言うことが面白い。

299 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 19:07:43 ]
>>296
WindowsMobileを無視するとは。

300 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 19:16:50 ]
>>298
自分の家が世界の全てだからな。

301 名前:デフォルトの名無しさん [2010/06/03(木) 19:18:38 ]
普及したって定義は実際はどうなの?

302 名前:デフォルトの名無しさん [2010/06/03(木) 19:47:37 ]
なんか一気に雰囲気悪くなったな

303 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 19:51:54 ]
まあネタに真面目に突っ込むのもアレだけど、
>>294>>295もどっちもどっちではある。

Windowsでサポートされてたタッチパネルってほとんどマウスエミュレーション系じゃない?
ああいうのを今日的な感覚でタッチパネルって言っていいのかどうか。

304 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 21:56:45 ]
いきなりネガキャンされたらいい気しない人も結構いるってことじゃないの?

305 名前:280 mailto:sage [2010/06/03(木) 22:06:50 ]
かといって、タップ&ホールドを持ち込まれるとついていけない子がいっぱい。
でもないのか、iPhoneとかでも使われてるし。

306 名前:294 mailto:sage [2010/06/03(木) 23:33:13 ]
>>303
ちょwww俺もかよwwwwww
アンカーミスだよな?

307 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 01:11:12 ]
MSILのリファレンスってどこで見れますか?



308 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 01:12:45 ]
XmlSerializerでデシリアライズをやろうとしてるんですが、
一つの要素に配列の様に複数の値が入ってる場合にちょっと困ってます。

↓こんな要素があって、colorをRGBAで読み込みたいんです。
<ambient>
<color>0.50000 0.50000 0.50000 1</color>
</ambient>

とりあえず文字列としてはcolorがデシリアライズできましたが、
public class ambient
{
public string color;
}

使い勝手が悪いのでfloat4つのR,G,B,Aを持ったcolorクラスとして、
もしくはfloat[4]として読み込みたいです。

public class color
{
public float r, g, b, a;
// public float[] rgba;
}

何かいい方法ないでしょうか?



309 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 01:17:48 ]
<ambient>
<color a="0" r="0" g="0" b="0"/>
</ambient>
とか

<ambient>
<color>
<a>0</a>
<r>0</r>
<g>0</g>
<b>0</b>
</color>
</ambient>
とか

310 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 01:19:19 ]
xmlの方は変えられないのならsplitでバラすとか

311 名前:デフォルトの名無しさん [2010/06/04(金) 01:35:51 ]
xmlの方は変更出来ません。
文字列で読み込んでから分割するしかないですかね。

312 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 01:38:15 ]
無いんじゃないかな

313 名前:デフォルトの名無しさん [2010/06/04(金) 01:40:04 ]
XmlSerializerの都合もあるだろうしね・・・
というか何でできないの?

最悪の場合は変換前のxmlに正規表現の置換でもかけて
XmlSerializer向けに直してやるとかは?

314 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 02:04:40 ]
google earth用のモデルファイルなんで、モデルファイル自体には変更無しで読み込もうとしてました。


315 名前:デフォルトの名無しさん [2010/06/04(金) 02:08:25 ]
普通にxmlをreadさせて解析するのじゃだめなのかね?

316 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:44:26 ]
Google はその辺りすごい evil だからなぁ。
他社との連携とかほんと無視。

317 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:56:28 ]
単純にsoapの方を使ってシリアライズしたらいいじゃん
フィルタ書けてそう言うのも簡単に読み書きできるし



318 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 12:17:33 ]
>>307
最も完全なのはecmaのCLI
オペコードのリファレンスとしてわかりやすいのはMSDNのSystem.Reflection.Emit.OpCodes

319 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 14:51:38 ]
>>316
それを悪とするあつかましさが醜い

320 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:48:13 ]
XmlSerializer 便利だけど結構こまかい制約あるしなあ

321 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:58:47 ]
邪悪なxxコンテストとか今時のヤツはやらんのか・・・

322 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:38:21 ]
Soapってまだ使われてる??

323 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:41:16 ]
全国どこにでもありますが

324 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:13:47 ]
駅前のは本番ないから気をつけような

325 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:26:36 ]
知らんかった(岐阜県民)

326 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:49:38 ]
質問です。
VC2008 C#の、イミディエイトウィンドウ内で
IEnumerable実装クラスなどを列挙させるのに
いい方法はないでしょうか。

327 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:02:08 ]
.ToArray()



328 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:19:07 ]
その後、[0], [1] とか自力でやりますか?

329 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:29:27 ]
イミディエイトウィンドウって使う?
全部ウォッチウィンドウで済ませちゃってるんだけど。

330 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:33:08 ]
たまに使う。
副作用のあるメソッド呼び出しとか。

331 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:35:07 ]
>>328
試せよ
配列なら自動的に中身が表示される

332 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 03:09:17 ]
なるほど

333 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 07:37:53 ]
>>329結構使う
ブレイクさせて関数への引数変えて返り血みてみたいとか
変数の値直で変えたり、デバッグ用のテストコードにすりゃいいんだろうけど、その場限りの時はつかうかなぁ

334 名前:デフォルトの名無しさん [2010/06/05(土) 07:40:06 ]
痛そう

335 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 07:59:58 ]
イミディエイトウィンドウでの実行の仕方がなかなかわからなくて
結構こまってた。
インテリセンスするためだけのウィンドウだと思ってたよ・・・

336 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 10:12:47 ]
>>329
あそこでバグ修正用コードとか
半分コーディングしにかかるレベル

337 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 10:51:59 ]
>>333
そのあたりはクイックウォッチからもできるから。
イミディエイトウィンドウじゃないとできないことって何だろう?



338 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:23:40 ]
object o = null;

(クイック)ウォッチでやるとこんなメッセージがでる
> 宣言ステートメントは、イミディエイト ウィンドウでのみ許可されています


339 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:13:04 ]
当たり前だっ

340 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 14:42:48 ]
なにおいっているのら・・・・

341 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:56:08 ]
プロパティでクラスを返す時読み取り専用に
する方法はありますか?

class a : ICloneable {
int value = 0;
//以下略
}
class b {
private a = new _a();
public a REF {
get{ return _a; }
set{ _a = value; }
}
public a CLONE {
get{ return _a.Clone(); }
set{ _a = value; }
}
}
b = new obj();
b.REF = new a(); //更新をこれだけにしたい(CLONEも)
b.REF.value = 5 //禁止したい
b.CLONE.value = 5 //意図しない動作なので禁止したい



342 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:05:00 ]
ない
中身を変更できないようにクラスを作る
あとICloneableを重視してらっしゃるようだけど今は非推奨になってるから実装しなくていいよ

343 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:06:44 ]
aクラスに読み取り専用のValueプロパティを作る

344 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:18:37 ]
aを変更不可にしてしまえばいいんだが一般にはそれよりも
bにpublic int AValue { get { return a.value; } }を付けた方がいい
もちろん場合によるけどbを利用する側がaを知らなくて済む

345 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:21:36 ]
>>342, 343
ありがとう
簡単にはいかなそうですね・・。
場所によっては変更が必要なのでprivate protectedを
駆使して試して見ます
てか、ICloneableが非推奨というのは驚きました。




346 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:24:41 ]
blogs.msdn.com/b/brada/archive/2004/05/03/125427.aspx
これだな
Cloneとだけ書かれてもどんなコピーが返ってくるのか全くわからん。
むしろわけのわからないネーミングを助長するだけ。DeepCopyとか自分で実装してくれ。ということらしい。

347 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:03:23 ]
LabelのAutosizeをtrueにした時の伸びしろを最小限に抑えることってできないのかな?

labelを密に横並びに配置しているのだけれど、どうも隣と被さって文字が見えなくなってしまう。
Autosizeをfalseにして文字を限界まで詰めると隣のラベルとかぶることはなくなるけどなぜか文字が途中までしか表示されなくなるし。





348 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:14:31 ]
>>347
悪いけど全体的に何をいいたいのかよくわからん。
てか「なぜか」ってそれのどこが疑問なのか意味わからんし。

349 名前:デフォルトの名無しさん [2010/06/05(土) 20:46:00 ]
久しぶりに逆襲のシャアみてたのでニュータイプになったつもりで
回答してみるとだな・・・

>>347
適当なコンテナで制御するのが一番かもね

350 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:12:58 ]
C井の質問もここでよろしいのでしょうか。

351 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:17:38 ]
なにそのイニシャルトーク

352 名前:デフォルトの名無しさん [2010/06/05(土) 23:21:37 ]
逆シャアって最後のところでアムロとシャアって
死んだとされてるけどMSが弾き飛ばされてる
はずなのに軌道がそれるのが確定したときに
二つ何かが飛び去るシーンがあるんだよね・・・

スレチ

353 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:42:28 ]
二人が自由になるための作戦
死んだ事にして別人を名乗って気楽に生きていくために

354 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 00:28:16 ]
嬉し恥ずかしボーイズラブですね

355 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 02:23:22 ]
>>347
たぶんそこら辺面倒なくしたければテーブルを使うのが気楽でよいよ

356 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 04:01:34 ]
Datagridviewの使い方が解りません。だからラベルをチマチマ貼ってます。
マウスで綺麗に配置した積りだけど、どうも隣と被さってる気がします。
とエスパーしてみる。

357 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 07:02:30 ]
ほぼ正解



358 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 09:15:18 ]
>>347
TableLayoutPanelコントロールを使えばOK

359 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 12:33:22 ]
入力チェックについて相談させてください。
フォーム内に登録されているコントール全ての Validating イベントを発生させるには
どうしたらよいのでしょうか?

現在、それぞれの項目の入力チェックは Validating イベントの中で処理し、
内容が正しくない場合は ErrorProvider を使用してアイコンを表示するようにしています。

このままですと一度もフォーカスを得ないままのコントロールは入力チェックがなされないままになってしまいます。

なので、登録ボタンを押下したタイミングでも全ての項目の入力チェックを行なおうと考えたのですが
うまい方法が思いつきませんでした。
ContainerControl の Validate メソッドで子コントロール全てを Validate できるのかと思ってためしたのですが
だめでした・・・

360 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:06:01 ]
つValidateGroup

361 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:37:35 ]
>>360
ValidatingGroup ですね。
ASP.NET 用ですか・・・ Windows Form では使えなさそうですね。

362 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:46:57 ]
ContainerControl.ValidateChildrenは?

363 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:20:58 ]
>>362
おおお! まさしくそれです
ありがとうございます
実装してみたところ期待通りの動作となりました


しかし・・・
なぜか自分ところの環境(VSEE2008)だと
ValidateChildren がインテリセンスにもオブジェクトブラウザにも出てこない・・・
ターゲットは .NET 2.0 にしてるしビルド自体は通るから問題なさそうなんだけどなんでなんだろう


364 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:24:10 ]
Browsable(false)属性付きだから
なんでそうしてるかは.NETの中の人に聞かないといけないが

365 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:34:56 ]
なるほど。
Form の方では Browsable(true) になっていました。
メソッドの性質を考えるとなるべく上位で使って欲しいからとかそんなとこなんでしょうかね。

重ね重ねありがとうございます。

366 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:38:40 ]
やるな

367 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:01:44 ]
ADO.NETで質問なんですが、
DataRow一行だけを編集するような画面を作る場合でも
TextBoxとかComboBoxにバインドするのが一般的な作り方なんでしょうか?
それとも一々内容を移しかえるやり方が一般的なんでしょうか?



368 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:15:30 ]
たった1行でも入力項目が多ければバインドする〜

369 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:02:49 ]
ADOは見通しが悪いよね

370 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:07:50 ]
手書きのADO.NETはそう悪くないんだけど
ウィザード生成の型付きデータセットが意外と解り辛くて不評。


371 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:06:03 ]
WebRequestでのFTPPUTはたまにリモートサーバーに接続できないエラーになるけど、
やはり、ソケットで作らないとだめなのかしら?

372 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:11:05 ]
んなことはない。

373 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:18:06 ]
IEのHTTP/GETだってたまにリモートサーバーに接続できないエラーになるぜ

374 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 04:51:02 ]
いやそれはルータが腐ってるw

375 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 09:11:05 ]
ルーターも然り、相手の環境のせいも然りってことでしょ。
いろんな環境原因も含めてHTTPやFTP、その他の通信でも失敗することはある。

376 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 12:12:39 ]
FFFTPとかのいい加減枯れてるツールでも結構なるしな
そう言うモンだと思って回復手段作り込むしかあんめ

377 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 12:21:13 ]
タイムアウト、リトライ、リジュームあたりを実装したら、
FTPはまともな動きになるだろう。



378 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:51:14 ]
そこまで望む場合は自分で作ればいい。
FTPなんてチョー簡単だし。(PASV実装とかチョイ面倒くさい程度)

379 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:33:36 ]
>>378
.net frameworkだけで手軽に実装できるだろ。

380 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:19:51 ]
Windowsアプリケーションにて、画像の上に透過的な四角い枠線(色付き)を重ねたいのですが、
どのように実装したらよいでしょうか?
宜しくお願いします。

381 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:50:40 ]
>>380
Panelでできないっけ。
今もPanelあるんだっけ。

382 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:02:47 ]
>>380
現状ではコントロールは親コントロールに対してしか透過してくれないんだよね。
まぁ動かしたりするんなら糞重たくなるけど、その枠が乗る範囲が対象の画像のどこにあたるかを計算してその部分の画像データを枠を描画するコントロールの背景に描画とか。

まぁサクサク動いて透過もできてってなるといっそのことDirectXやOpenGLに2次元的な描画をするしかない。

383 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:58:16 ]
PictureBoxの子に枠線のPictureBoxなり追加すりゃいんでね

384 名前:デフォルトの名無しさん [2010/06/08(火) 08:05:10 ]
>>383
WinFormだと透過を扱うのは面倒だよ

385 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:31:38 ]
OnPaintの内部で好きなように描けばいい。

386 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:13:32 ]
PictureBoxをはみ出す可能性があるなら厄介
OnPaintだったら一切コントロール使わずに重なる可能性のあるもの全部
自分で描かないといけない

387 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:32:26 ]
どのレベルの運用なんだろう?

例えばユーザーがドラッグドロップした部分に枠を描画してそれを消したりすることが出来なければいけないなら
自分でレイヤーみたいなデータを順番に記憶してクリックされたら枠線描画して移動できるようにする

とかいろいろ考えられるけど




388 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:33:45 ]
透明なウィンドウを重ねるのが確実
そういうの多用するんだったら努力するだけ時間の無駄だからさっさとWPFへ

389 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:31:04 ]
FtpWebRequestのAbort忘れかも。

390 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 02:02:52 ]
枠引くくらいなら枠線用のPictureBoxなどを配置して上に置いて
Regionで内側を切り出すのがほどほど楽だと思うよ。

391 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 05:21:48 ]
コントロールの重ね合わせは数が増えると重くなるからスピードが必要ならDirectX

392 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 09:55:17 ]
C#2.0 マルチスレッドで質問です

short型の変数Aがあるとします。
メインスレッドはある変数Aを読み込むだけ
サブスレッドはある変数Aを書き換えるだけ

上記のような状態で通常
書き込み時に適当なオブジェクト等を使用してロック・読み込み時もロック
するような気はするんですが

仮に
両方ロックしない場合で

サブスレッドで
変数Aが 0(16bit全てOFF)の値になっている時に
変数Aを65535(16bit全てON)に変更したとします。

この場合変数Aは限りなく瞬間的に全てのビットを順番にONしていくと思うのですが、
その途中にメインスレッドが読み取りを行った場合に例えば8bitだけONになったりしている状態を読み取る場合ってあるのでしょうか?

ちょっと質問の仕方が微妙かもしれませんがお願いいたします。



393 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:18:11 ]
CPU命令の最小単位考えたらわかるべ

394 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:21:15 ]
>>392
> この場合変数Aは限りなく瞬間的に全てのビットを順番にONしていくと思うのですが、
> その途中にメインスレッドが読み取りを行った場合に例えば8bitだけONになったりしている状態を読み取る場合ってあるのでしょうか?
32bitプロセスでは32bitまでならアトミック
そんなの気にするよりvolatile

395 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:28:13 ]
>>392
download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol3_i.pdf
この資料のp.258に
> インテルPentium 4 プロセッサ、インテルXeon プロセッサ、P6 ファミリ・プロセッサ、
> インテルPentium プロセッサ、Intel486 プロセッサでは、キャッシュ可能メモリへのア
> クセスで、バス幅、キャッシュ・ライン、ページ境界をまたがっているものは、アト
> ミック操作が保証されない。
とあるので、そういう状況が起こる可能性はゼロじゃない。
本当にアトミック操作が必要な場合は、あなたの言うとおり、ロックするなりアトミック操作
命令をつかうなりする。

396 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 23:29:37 ]
shortの変数がそれらをまたがる可能性があるということか

397 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 23:46:29 ]
C#の場合はアライメント境界整列は保証されるとどっかで読んだ記憶が
まあ将来に渡って保証されてる訳でもないだろうけどな



398 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 00:46:26 ]
MSDNのInterlocked.Readとか読んでると保証されるとも取れるようなことが書いてあるよ

399 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 01:13:01 ]
StructLayoutした構造体でも適用されるのだろうか・・・
マーシャリング機構が魔法を使ってくれてるかもしれないから否定しているわけじゃない。

400 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:10:54 ]
>>392
それやると大抵は読み込むだけのスレッド側の処理は最適化で消えて読み込まなくなるから
中途半端に読み込む状態を仮定する以前の動作になるよ。

401 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:52:11 ]
volatileぐらいわかるよバカやろう

402 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:34:05 ]
>>392
なんでそういう事をわざわざ考えるのかよくわからないけど
ReaderWriterLockつかえば解決とか言う話でもないの?

403 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:38:57 ]
アトミックな操作が本当にそうなのかについて疑問に思ったんじゃないの?
いいことだと思うよ。

404 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:40:13 ]
なんでそうなるのかとかは知っといた方がおもしろいよね。

405 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:34:40 ]
GCが配置する時に8バイト境界にするってどこかで見た覚えがあるんだがどこだったかな

406 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:42:42 ]
レジスタのビット書き換えフェーズ中に割り込みか同時読み込みできる
そういうすごいCPUの話じゃないの?


407 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:36:17 ]
>>392
short型ならすべてのビットが同時に書き換えられる。1ビットずつ順番ではない。
もちろんプログラムが1ビットずつ書き換えるように作ってあれば話は別だけど、単純に

A = 0;
A = 65535;

のように代入するだけならすべてのビットが同時に変更される。
もし中途半端な状態が発生したら、それはメモリの故障。



408 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:51:19 ]
>>406
物理コアが複数だと、そう言い切れなかったりする
上でも何回か出ているアライメント境界の問題で、
複数回フェッチが起こる可能性があるからだ
ここらはキャッシュコヒーレンシとか色々関係しててややこしい

409 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:08:02 ]
横レスなんだけど
>>407
いろいろ読む限り仮にこれが32bitOSでLongだったら書き換えは複数回に分割されてしまうということなんだろうか?


410 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:28:17 ]
仕様としてはどうなっているんだ?

411 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:50:08 ]
5.5 変数参照の分割不能性
bool、char、byte、sbyte、short、ushort、uint、int、float の
各データ型および参照型の読み取りと書き込みは分割不可能です。
また、上記の型を基になる型に持つ列挙型の読み取りと書き込みも
分割不可能です。long、ulong、double、decimal などのその他の
データ型、およびユーザー定義型の読み取りと書き込みは、分割不可能
であることが保証されていません。この目的で設計されたライブラリ関数を
除いて、インクリメントやデクリメントの場合などでの分割不可能な
読み取り/変更/書き込みは保証されていません。


412 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 19:34:34 ]
>>411
CPUレベルではともかく、CLRレベルでは保証されてるってことか。

413 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:38:48 ]
32bit以上での実装を事実上想定しているわけだ。

414 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:36:58 ]
16ビットCPUだったらintも16ビット長じゃね?
.netが16ビットでも動くかは知らんけど

415 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:41:29 ]
intは32bitと決められている。

416 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:50:44 ]
intが可変な言語って数えるほどしかない

417 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:52:51 ]
CLRは32ビットプロセスなら32ビット境界に、64ビットプロセスなら64ビット境界に整列することを保証してる。
もちろんライアウトを変えた場合は別。

だから、少なくとも32ビット以下のプリミティブ型の読み書きはアトミック保障。




418 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:53:06 ]
そういう言語では組み込み型はそのまま使わずにtypedefしてサイズを固定するという
アホらしいノウハウが定着してる事実

419 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:53:57 ]
ああ書き方おかしかった。
ライアウト→レイアウト。
で、そういうことやってない限りは保障されてる。


420 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:56:44 ]
>>402
何のためだよw


421 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:58:16 ]
つうわけで現実的には、32ビット以下ならvolatil変数、
32ビットを超えるものはlockするのが簡単。


422 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 22:09:14 ]
ところでlongはvolatileにできないけど
IntPtrや参照型のvolatileは64bitプロセスでどうなってるんだろう?

423 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:33:39 ]
64bit環境なら普通に問題ないだろ。

424 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:38:28 ]
64ビット環境では当然64ビットの読み書きは分割不可能。


425 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:47:07 ]
x64とia64で違ったりしないのかな

426 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:13:50 ]
分割「不可能」って表現はどうなんだろうねえ。

427 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:19:47 ]
atomicの定訳がないからねえ。「不可分」で良さそうなもんだが。



428 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:40:34 ]
相談室の方だしアトミックとだけ言っとけば通じるんじゃないか?

429 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:33:51 ]
今更このスレでアトミックや分割不可能の意味がわからん奴もいないと思うんだが・・・
まぁMSDNにもそう書いてあるんだし、そのままでいいんじゃないか?

というか、やっぱPGて細かく突き詰めると深いよなぁ と改めて思う

430 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 11:50:42 ]
なぁ、紐づく・紐付ける・紐づいたXX って英語でなんていうんだ?
てか、紐づくの語源はどっから?

431 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:00:03 ]
そんなの
関係する
とかに置き換えたらいかんの?

語源はググってくれ

432 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:34:12 ]
そう言えば、英語と1対1な用語じゃないような気がするねえ。
link,bind,relationshipのいずれかを局面に応じて使うんじゃないかな。

433 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:47:27 ]
associateとかもあるな

434 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 18:55:47 ]
A (which is) tied together with B とか

435 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 22:53:09 ]
assigned とかは?
命名スレ行きかな

436 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 18:00:58 ]
wiredだな

437 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 01:55:45 ]
weirdとな



438 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:04:54 ]
ttp://techbank.jp/Community/blogs/mymio/archive/2010/03/07/25216.aspx
この記事の意味わかる人いる?


439 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:11:10 ]
確かに全くわからない
new { trueValue = new BitVector32(-1), falseValue = new BitVector32(0) }と
new { trueValue = new BitArray(1)[0] = true, falseValue = new BitArray(1)[0] = false }
を比較したら処理速度以前に値型と参照型の違いで前者が速いに決まってる
何がしたいのかも意味不明

440 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:24:00 ]
>new BitVector32(-1)[(int)BitFlag.TrueIndex]
BitFlag.TrueIndexは0のことだから、

>new BitVector32(-1)
-1じゃなくても何を渡してもたとえ0でもTrueになるしな。


441 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:26:43 ]
>new { trueValue = new BitArray(1)[0] = true, falseValue = new BitArray(1)[0] = false }
これに至ってはビットセットしてるつもりで実は取得しかしてない気がする。


442 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:27:44 ]
Microsoft MVPかよw

443 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:41:36 ]
>>441

設定はしてるけど取得はしてない
trueValueに代入されるのはリテラルのtrue

444 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:10:33 ]
(int16)trueが1になったり-1になったりする!大発見!スイーツ(笑)
ってことか?

445 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:16:21 ]
回数増やすと差が開くのはGCが動くからかな?
なんにせよそんなBitArrayの使い方ありえない

446 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:30:00 ]
本人も言ってるけど、本当に
> プログラミング言語論やアルゴリズムに元々興味がなかった
んだろうな。

447 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:42:15 ]
そうだとしてもこれ普通に仕事に支障が出るレベルじゃね



448 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:44:24 ]
Console.WriteLine("BitVector32の-1: {0}", ....

そりゃ何やったって-1が出るよな。

449 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:53:20 ]
>>440
BitVector32の仕様を理解してない? インデクサの引数をマスクじゃなく
インデックスだと思っているとか。

450 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:54:15 ]
>>438
あれ? コメント消えた?

451 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:07:19 ]


452 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:08:41 ]
貼ったのは本人かよwwwwww

453 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:13:54 ]
というか記事自体消えたw

454 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:26:45 ]
流石はMVPだな

455 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 19:55:01 ]
丸ごと消して逃げるってのは技術者の態度としては酷いなあ
別に誰だって間違いはあるんだから、素直に分かってませんでした、でいいのに。

456 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:05:52 ]
…ほかの記事も全部巻き込んでコメント消えたな…
どうなってんだ…真面目に聞いてたのに…

あーあ、どうせ荒らされたからコメント停止したとか、そういうことにされてんだろうな

457 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:12:09 ]
まあそれぐらいで許してやれよ。
打たれ強い人ばかりじゃないんだ



458 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:28:22 ]
誰かコメントできっついことでも書いたか?
気づいたらもう消えてたから経過が分からん、まあおそらくはそうなんだろうけど。

しかしこれじゃ記事で気になることがあってもどうしようもないな。
techbank.jp って書籍とかも出してるからそれなりに影響力ありそうなんだが…
ユーザ登録して掲示板に書けってことか…面倒な…


459 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:59:29 ]
カエル女あわれ・・・

460 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 21:38:47 ]
>>458
キツいことは書かれてたね。
言葉はキツかったけど正しい指摘ではあった。
確かに誰もが打たれ強いわけじゃないってのは分かるけど
書籍出したり、MVPだったりする人間が技術的な指摘に逃げ腰ってのはダメだよ。

461 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 21:49:30 ]
そのとおり。

462 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:39:03 ]
>>460
あれ書いたの俺なんだけど、まさか丸ごと消されるとは思わなかった。
MVPだし、本出してるし、コミュニティの運営にも積極的な人みたいだから、
反論するにせよ訂正するにせよ、少なくとも真摯な態度で答えてもらえるもんだと
思っていたんだよね。

まあ、確かに言葉はきつかったけど、まともな質問に上から目線で適当な回答をしてるのが
腹立たしかったもんでね。

残念だね。

463 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:46:10 ]
RSSには
BitVector32 vs BitArray を掲載しました
ってのが残ってるけど、どんな中身だったのか分からない
どっかに中身のっけてくれ

464 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:47:34 ]
MVP事務局に、報告しといた方がいいと思う。

465 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:49:57 ]
まゆみちゃーん

466 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:50:22 ]
>>463
Googleのキャッシュで記事はまだ見れるね。

467 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:52:50 ]
cache.yahoofs.jp/search/cache?p=BitVector32+vs+BitArray&ei=UTF-8&fr=sb-jane&u=techbank.jp/Community/blogs/mymio/archive/2010/03/07/25216.aspx&w=bitvector32+vs+versus+bitarray&d=HC_-Ae8_U8_v&icp=1&.intl=jp

これか。何が間違ってるのかわからんw



468 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:55:24 ]
間違ってるというより何一つ意味を為してないんだな
書いてる本人が自分で何やってるのかわかってないからわざと曖昧に書いてるのが伝わってくる

469 名前:462 mailto:sage [2010/06/13(日) 23:02:40 ]
あんまり突っ込みどころが多いから、逐一指摘してたらコメントが長くなるし
変な人だと思われそうだから、1点に絞って突っ込んだんだけどね。
いっそ高木浩光ばりに突っ込みまくった方が良かったのだろうか?

470 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:07:48 ]
>>469
あー、私知らなかったわー。って感じの文章なんだから、もっとソフトにやってあげてもいいんじゃない。

471 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:08:30 ]
どんなコメントだったん?

472 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:10:28 ]
GoogleもYahooもキャッシュにコメントがないなあ
Bingはキャッシュすらないし

473 名前:462 mailto:sage [2010/06/13(日) 23:17:13 ]
細かい文章は覚えてないが、

BitVector32::ItemsとBitArray::Itemsの戻り値を整数として評価すると異なる値になると
あなたは言っていますが、.NetのBoolean型は整数と可換なものではないので、整数として
評価することに意味はありません。また、内部的にも1ビットの整数として実装されていますので、
整数に変換した結果は毎回同じです。-1が出力されているのは、あなたがConsole.WriteLineの
フォーマット文字列に“-1”と書いたからです。
基本的なデータ型について理解していないのはあなたの方です。正当な疑問に木で鼻をくくったような
返答をする態度は非常に不愉快です。

といったところ。最後に余計なことを言っているけど、これは以前にコメントをしていた人に、
ビット操作の概念を勉強しないとこの記事は理解できないよ、というような返答をしていたので、
それに対するもの。

474 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:21:55 ]
.NETのboolは8ビットで0がfalseで0以外がtrueじゃなかったっけ
記事の間違いは別問題だが

475 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:22:23 ]
記事ごと消すほどのコメントじゃないわな。

476 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:31:53 ]
たまたま残ってたから一応書いておこう。
最初のコメント
----
> まとめると、
> BitVector32 BitArray
> true -1 を表す 1 を表す
> false 0 を表す 0 を表す
> となります。
これはいったいどういう意味でしょうか?
----

その返答
----
ビットフラグがONの場合がTrue、ビットフラグがOFFの場合はFalseです。
このON/OFFを数値で表した場合、BitArrayとBitVector32とではON/OFFの数値の意味が異なるという対比表になります。
そもそもビットの概念がわかっていないと、このBlogの説明に書いてある説明を理解しようとしても無理ですので、もし貴方がビットの考え方が良くわからないという場合は、
入門書籍やほかのWebサイトでその辺りを勉強してから、このBlogに書いてある意味を汲み取ってください。
----


477 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:36:23 ]
いきなり攻撃的な返答だな。あの日だったりしたのか?w



478 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:37:23 ]
記事は消えても画像は残ってるんだな

ttp://techbank.jp/Community/blogs/mymio/image_5233298A.png

479 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:01:27 ]
マルチスレッドで教えてください。
ソケットプログラミングで、受信スレッドがキューにデータを溜めて、
メインスレッドは順次データを読み出して処理するというプログラムを書いています。

メインスレッドはキューにデータが無ければ受信するまで待機したいのですが、
一般的にどう実装するものでしょうか?

とりあえず作った受信スレッドは、
Monitor.Enter(obj);
受信ループ
 キューに格納
 Monitor.Exit(obj);
 Monitor.Enter(obj);
ループEnd
Monitor.Exit(obj);

受信の都度Exitしてメインスレッドに所有権を明け渡しています。
動作には問題なさそう?なんですけど、なんかスマートじゃないというか。。。


480 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:05:17 ]
AutoResetEventつかう

481 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:12:17 ]
lock (q)
ループ開始
}

482 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:13:28 ]
ミスって書きこんじまった、なしなしな


483 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:16:31 ]
BlockingQueue系統を使うのが定石だが、
.NET 4より前にはなかったな確か。
BlockingQueueとか実装はそこらに転がってそうだが。


484 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:19:51 ]
>>479
.Net4が使えるなら BlockingCollection<T> 一択。
つかえないなら、↓こういう同期機能付きコレクションを使う。
www.codeproject.com/KB/recipes/boundedblockingqueue.aspx

いずれにしても、そういうパターン(いわゆるProducer-Consumerパターン)では
同期機能はキューに持たせるのが一般的。で、Producer(この場合は受信スレッド)は
データをキューに入れるだけ、Consumer(この場合はメインスレッド)はキューから
取得するだけにする。

485 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 07:08:32 ]
MVPって最初の頃(2003年とかその頃)はいいなと思ってたんだが、わんくま同盟とか言い出した頃から
馴れ合い色が強くなってきて、なんていうか、このブログの主はMVPになる条件を満たしていないにも
かかわらず、推薦制度を悪用してMVPになった感があるな。

こんなんがアドバイザとして高い金を取ってるかと思うとなんともいえない気持ちになる。
MVPを専属で引っ張ると100万/週ぐらい取らなかったか?

次回剥奪されると良いが。

486 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 07:29:51 ]
>>485
> MVPを専属で引っ張ると100万/週ぐらい取らなかったか?
そんなに価値あるのか?
まあ、すごいのはいる。

487 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 07:47:51 ]
nyaruruとかって本業何してんの?



488 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 07:52:15 ]
そんなに取れません。n氏はGoogleに・・・。

489 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 08:00:19 ]
GoogleだとWindows使えなくなるじゃん
大丈夫かな

490 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 08:30:10 ]
CodeProjectでじゃんじゃん記事書きまくってる奴とか、凄いのがいる。
日本語サイトでMVPを名乗ってる奴の中には、こういうしょうもないのが時々いるから
あんまり信用はしてないけど。
この人も結構メディアに露出しているけど、信用をなくすような行動取って大丈夫なのか?
「わかってませんでした。精進します」って言えば済んだことなのに。

491 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 09:32:56 ]
>MVPを名乗ってる奴の中には
MVPは別に実力に関係ないしな

まぁ色々特典もらえるのは正直うらやましい

492 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 13:33:26 ]
どこがじゃ

493 名前:デフォルトの名無しさん [2010/06/14(月) 13:49:43 ]
>>492
MVP乙

494 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 20:33:37 ]
まあMVPに実力は関係ないな。
でも、一つのテーマでコミュニティ築く力は凄いと思わない。

495 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 21:05:26 ]
うん。思わない。

496 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 21:47:57 ]
思わないんかいw
MVPって数結構多いよね。

497 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 21:50:59 ]
一時期、ものすごい増えて、今は多少減ったみたい。



498 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 22:26:37 ]
高い金取るのってエバンジェリストとかそういうのじゃないっけ?
コンサル

499 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 22:36:01 ]
>>480-484
レスサンクスです。
Producer-Consumerパターンでぐぐったらズバリ出てきました。
こんな一般的な話だったなんて・・・orz

500 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 22:43:43 ]
シングルスレッドではproducerとconsumerの同期がとれないってのが、
プログラムをマルチスレッド化する大きな動機の一つだもんな。

501 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 23:32:24 ]
うん。

502 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 06:54:05 ]
マルチスレッドといえば.Net4使ってるのに生のthreadやらthreadpoolやらを使ってる奴は何がしたいのかわからん
どれだけ俺様ライブラリを量産したいのかと小一時間(ry

503 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 12:20:19 ]
Producer-Consumerパターンなら生だろうとBackgroundWorkerだろうと大して変わらんだろ

504 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:08:21 ]
そういうことじゃないだろ。


505 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:18:56 ]
ほう

506 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:49:26 ]
>>502はプロデューサーコンシューマーに限った話はしてないよね。

507 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:04:20 ]
そんなMSの俺様クラス作られても、いつサポートされなくなるか分からないしな。



508 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:36:19 ]
しかしまぁ大手のマルチスレッド関連の記事は古いものばかりだな
忙しくなけりゃ俺が寄稿してあげたいぐらいだわ

509 名前:デフォルトの名無しさん [2010/06/15(火) 22:37:49 ]
>>508
ブログにでも書け

キーワードさえうまく配置してればそのうち広まるよ

510 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:38:57 ]
俺様ライブラリ(車輪の再発明)批判はいいとして、
それがどうして「生のthreadやらthreadpoolやらを使」うことがそれだって言うの?

そっちの方が意味がわからんよ。

511 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:46:06 ]
>>458
んーこのblogなんとなく見てたら気になるとこいっぱいあるな…
でももうコメントもできんし。
っていうかだれかすでにコメントしてて消えちまったのかもしれんが。


512 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 23:52:40 ]
>>504
.NET4触ってないからよくわからないんだが、Threading.threadは使わずにBackgroundWorker使えって事?
それとも.NET4はもっと便利なのがあるってこと?

513 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 00:06:43 ]
あるよ

514 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 00:34:11 ]
>>512
Task クラスとか、Parallel クラスとかが増えた。

515 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 06:25:10 ]
目的が異なるものを比較する意味がわからん

516 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 06:41:52 ]
え?w

517 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 09:26:18 ]
は?



518 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 10:08:53 ]
あ?w

519 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 10:10:59 ]
お?

520 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 11:26:09 ]
並列用のパラレルAPIやParallel Linqで、GUIの非ブロック化処理を書いちゃうわけか。
それはそれでやばげだな。

521 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 12:30:20 ]
誰かいないのか?
それはそれでやばげだなって言ってんだろ!

522 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 14:07:14 ]
ふざけんな!
俺がやばげだなつってるんだから反応しやがれ!

523 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 16:01:52 ]
だあれもいない(´・ω・`)ショボーン

524 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 17:36:48 ]
それはそれでやばげだが、それもありなんじゃないかなって、今はそう思えます。

525 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:29:38 ]
.net4はキャンセルフレームワークが追加されたのがいいな
これでマルチスレッドを使う人がちゃんとキャンセル実装をするようになればいいが…

526 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:34:27 ]
耳毛、鼻毛を笑う。

527 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:27:25 ]
しかし、そんなスレッドを酷使するような計算量のアプリって書いたことないなぁ。
あると欣喜雀躍する人がいるのは分かるがパンピーなプログラマでそんなもの要るの?
ちゃんとプロファイリングしてれば、キャンセルなんて考える必要なんて無いのが経験則。

それとも皆、もしかして物理シミュレーションとか暗号鍵解読とかでもやってるのか?



528 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:32:56 ]
スレッドを酷使するかどうかとキャンセルを考えるかどうかがなんで同列に並んでんの?
俺の経験からいけばそれらは関係がないんだけど。

529 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:37:11 ]
いや、長時間じゃなくてもGUIアプリで計算しようとしたら別スレッドにするだろ。
しない?なら言う事は何も無いな。

530 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:38:45 ]
C#でGUIアプリをつくったらそれを別スレッドで行わないことが困難だろう。

531 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 21:40:50 ]
パラレルを活用するのはそれなりに限られてるけど、
タスク系統は普通に使うでしょ。


532 名前:デフォルトの名無しさん mailto:hage [2010/06/16(水) 21:45:24 ]
>>527はどうしようもないバカ
スレッドのキャンセル書けないバカは一生マルチスレッドするな。

533 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:25:39 ]
こうやってみるといかにマルチスレッドを使いこなしてないかわかるな
まぁちゃんとわかって仕事で使ってる人間なんてほんの一握りなわけだが

534 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:32:55 ]
むしろよくわからないなら使わない方が良いとは思う。
大抵のビジネスアプリは使わんでも何の問題もない。

535 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:44:38 ]
俺はビジネスアプリ作ってるけどかなり多用してるな
とはいえあまり見ないのもたしか
UIがフリーズしたり複数のタスクが同時に出来ないアプリが多い事多い事…

536 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:51:31 ]
仕事だと危険すぎてやらせる気にならんのだよね。
自分だけで作る部分ならいいんだが。


537 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 22:51:45 ]
ぶっちゃけスレッドって難しいじゃん
サンプル程度のものなら簡単に理解できるし実装も簡単だけど
いざちゃんとやろうと思ったら同期、同調、排他、例外処理、キャンセル、etc...と糞難しい
設計力も数段上の力が求められるしさー
業務系とかそれが出来ないからモーダルウィンドウに逃げてる人多いじゃんよ



538 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:00:14 ]
中級者御用達のクック本。
その中でも最も難易度の高い非同期項目みて”超初心者向けだな”とか思える人が集まらないと実務じゃ無理。

539 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:03:48 ]
マルチスレッドは怖いです

540 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:04:36 ]
はいはい

541 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:06:39 ]
実際のところ、UI止めたくないから裏でスレッド、くらいにしか使ってない。

542 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:11:53 ]
GUIの裏で計算だとか通信だとかするならbackgroundworkerでよくね?
MSもこういう用途のために作ったんじゃないのかね
普通の受託開発屋なら通信部分って自前で書かない場合多いし

543 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:12:20 ]
低能だからね。

544 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 23:30:05 ]
>>542
だってそれ使うと同調しにくいじゃん…
スレッドも一本しか使わないし…
それ以上にUIにベッタリな仕様だからビジネスロジック部分には不向き

複数のスレッドで別々の処理をやってある時点で非同期に集計してその後にまた別の処理を…
なーんてことやると一気に難易度がググーーーンと上がっちゃいます!><

545 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:05:35 ]
出来るならやりゃいいと思うけど
適当に人あつめると出来ない人の方が多いからなあ。
低い方に合わせて作らんと死ぬよね


546 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:17:18 ]
UI止めないのは操作感の改良だから、多重の並列処理はできないようにしてるが、
特に客から文句言われた事ないな。
計算が遅けりゃ十中八九はデータの持ち方とかに問題があって遅いから、遅いと
文句言われたら改良する。
文句言われなけい限り、保守とかが楽な方に意図的に流してる。

でもスレッドとか(あと信じられないことにコレクション)をヘルプのサンプル引き写し
レベルで使ってるだけで、マニアックだとか難しくて他の人が保守出来ないから
チーム作業ではやめてくれないかとか罵倒されて
(´・ω・`)。。。(いくらなんでもあんたらが時代遅れだろ)
とか思うが相手が大多数なので言えない。
これは俺の勤め先がブラックなんだよな、な?一般的じゃないよな?(マ板行け自分)

547 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:19:42 ]
>>544
勝手に上がればーーーーか(´・ω・`)



548 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:23:53 ]
>>544
そういう時はほかの方法でやるだろうよ。


549 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:40:39 ]
外資の俺が言うのも何だが未だに国内で組んでるエンジニアはレベルが低いな…
スレッドぐらい使いこなせよ…

550 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:43:35 ]
>>549
>スレッドぐらい使いこなせよ

レベルの低い会社に勤めてるのですねw

551 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:00:29 ]
まあ自称分かってるやつが一番地雷なんだけどな。

552 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:08:08 ]
使いこなせてる俺はいつの間にやら上級PGだったようだ
おまえ等、俺に挨拶は?

553 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:08:35 ]
ttp://blogs.msdn.com/b/hiroyuk/archive/2010/05/26/10015338.aspx
なんでvolatileなのに問題が発生するのか説明してみて。


554 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:15:18 ]
>>553
説明もなにも二つのスレッドが協調すべきなのにその操作をいれてないからだろ
そのブログじゃ同時に実行される云々いってるがスケジューラの指定が無い以上どっちが優先されるのかはプロセッサ任せ
つーかロックすらかけてない互いの状態弄って何がしたいのかわけわからん
volatileは全く関係ねぇよ

ふー、やっぱ俺って天才だわ
上級PGなめんなよ!

555 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:29:58 ]
>>554
何を言ってるんだお前は…


556 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:35:27 ]
volatileには順序保障の役割がある。
・volatile読み込みより前の書き込みは必ず先に実行される
・volatile書き込みより後の読み込みは必ず後に実行される
にも関わらず>>553ではすべての読み書きがvolatileなのに順序問題が起こる。
これはなぜか説明してみろという話。


557 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:42:14 ]
いや、
・volatile書き込みより前の書き込みは必ず先に実行される
・volatile読み込みより後の読み込みは必ず後に実行される
かな



558 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:58:43 ]
だからレジスタ依存=プロセッサに依存するつってんだろー
それを阻止する為に〜やりましょうとかずれてるわけで
ちゃんとやるならロックや適切なスケジューラを指定するのが常なんだよ!

上級PGなめんなよ!

559 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:06:04 ]
上級な土方

560 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:09:16 ]
まったく何でかが知りたいならO-o-Oでググれや

上級PGなめんな!

561 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:16:05 ]
え、volatileに同期処理なんてあるの?初耳だわ。

562 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:22:54 ]
同期じゃねぇよ
ただのコンパイラ最適化防止の為じゃ
そして>>553の記事は最適化は防げてもプロセッサの最適化(OoOのね)は防げないから任意でThread.MemoryBarrier()挟んでメモリバリアしろよタコ助共つーこと

上級PGなめんなよ!
つーかスレッド使う予備知識の基礎中の基礎だろ!

563 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:30:13 ]
>>546
俺もいい言葉を言われたことがあるので伝えておくよ。
「ジェネリクスは信用してないから禁止」

564 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:57:44 ]
>>561
C++のvolatileと混同してない?C#のにはあるよ。
ただOoOに対しては有効じゃないのかなぁ。

565 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 04:49:42 ]
初鼻だわ。

566 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 05:59:33 ]
あのな、スレッド関係で、順序保障の機能ってのはOoOの順序問題とかの解決に使う。
当然、C#のvolatileは順序を保証するために使える。

ではなんで>>553では全部volatileなのに順序問題が発生するのか。


567 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:14:20 ]
参考
ttp://msdn.microsoft.com/ja-jp/magazine/cc546569.aspx#id0030022




568 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:32:28 ]
つまり>>551


569 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:42:49 ]
参考
ttps://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S3
この辺が詳しいな。


570 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 06:56:55 ]
>>563
デリゲート禁止ってのもあった・・・

571 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 08:55:56 ]
いつからvolatileがOoOの順序保障が行われるようになったのやら
ほんとレベル低いな

572 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 10:30:22 ]
>>563
医者が扱う薬の話かよ

573 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 10:51:05 ]
/ufcpp.net/study/csharp/sp_thread.html
volatileって何だろうと思って凄腕の人の解釈見たらコンパイラの最適化防止ってかいてあるお

ゆとりPGをなめんなおっおっ( ^ω^)

574 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:38:23 ]
>>573
最適化でその変数がなかったことにされるのを防ぐだけ

575 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:41:28 ]
何のために?

576 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:43:09 ]
グローバル変数的に使うために用意した変数が、同ファイル中で手をくわえられてないから最適化で削除されちゃう
とかを防ぐためじゃなかったっけ。

577 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:43:56 ]
コンパイラが不要だと思っても、実は他のスレッドが
必要としているかもしれないから。



578 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:44:31 ]
volatileは順序保障するとか言ってた奴出てこいw

579 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:46:14 ]
あぁ、スレッドであれこれするときに読むんだけど、おまえそのスレッドでその変数変更してねえのになんで読むんだよ
それいらねえだろってコンパイラが言ったら、それは別のスレッドが書き変えてるかもしれないの!って注意してやるんだったか

580 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 13:52:45 ]
C言語のvolatileが想定してたのはSignalなどのCPU割り込み処理で、
スレッドのことは考えてなかった。
よくvolatileをスレッドで使うなというのはこのため。
C#やJavaのようなはじめからスレッドを想定してる言語では意味を拡張していて、
スレッドに対して使えるようになっている。

>>553の他の記事を見たが他のはエラーが起きたときのダイアログやメッセージを
イメージでアップしているが、この記事にはない。
おそらく手元の環境でエラーが起きなくて脳内で書いてるんじゃないのかな。
誰かこのプログラムでAssertが起きた人いる?

581 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 15:29:45 ]
並列化で思い出したが、SIMD対応ってもうやる気無いのかね?
昔はJITの利点の一つとして喧伝してたもんだったが

582 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 16:05:48 ]
環境に応じてスカラでXMMレジスタを使ってるらしい。
ベクトル化はMono.Simdのようなやり方しかないのだろうか。

583 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:01:13 ]
Matrixとか折角あるのに対応してないのかね
つーかアレDirectX由来だっけ?

584 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:06:53 ]
もともとMatrixはJpegやMpegの展開のために用意されたんじゃなかったっけ?
これからはマルチメディアの時代だとか言って。
今はビデオの展開はGPUの仕事になっちゃってるからCPUのMatrixはあんまり使ってないような。

585 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:27:28 ]
Matrixの主な用途はTransformだと思ってた俺

586 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 17:53:49 ]
>>585
君が正しい

587 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 19:44:11 ]
var hoge = new hogehoge()
「新人がわかんないだろ、意地悪すんなよ」って言われた



588 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 19:56:13 ]
新人いじめかよ
最低だな

589 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:02:15 ]
volatileはメモリの読み書きを最適化して消さないだけ
それ以外は特に何も保証しない

590 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:07:59 ]
>>578
ここはでたらめ言うだらけだな。

ttp://msdn.microsoft.com/ja-jp/library/aa645755.aspx
ttp://msdn.microsoft.com/ja-jp/library/aa691105.aspx
ttp://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S3

>>574
ttp://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S5
この辺読みゃ分かるが、よく誤解されてるように読み込みそのものが削除されるようなことは普通はない。


591 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:08:57 ]
ぜんぜん前の書き込みを読まない奴だな。それはCの話だ。

592 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:11:32 ]
>>589
そろそろ痛いから言語仕様でも読んでみな。
>>590の最初のリンクだけでも十分だ。

>>580
>>553のソースでしっかりAsser起こる。
一瞬なんで?って思ったが、まあよく考えてみれば確かに起こってもおかしくはないのかな…って感じ。


593 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:16:33 ]
なんかごっちゃになっている奴がいるようだけど、volatile保証するが読み書きの順序と、
複数のスレッドが変数にアクセスする順序は別の問題だから。

594 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:19:05 ]
>>593
未だに>>553の意味わかってないだろ。


595 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:20:35 ]
いや、微妙だな、わかっていっているようにも読める。


596 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:22:20 ]
C#の話だったのか

597 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:23:49 ]
スレタイ読んでなかったのか



598 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:24:10 ]
>>590
遠まわしな説明でよく解らんな。

メモリバリアの機能を含んでいるどうかだけ書けば1行ですむのに。

599 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:28:07 ]
というか、>>553の例はコンパイラが無意味に見える命令を削除しているだけじゃないのか?

600 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:28:59 ]
はい?


601 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:30:50 ]
volatileは最適化をなくし削除しなくなるんじゃなかったのかよw


602 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:32:08 ]
こんな風に分かってるつもりのやつがでたらめなことばっかり言うから、
危なくて使えないんだよ。


603 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:36:47 ]
>>598
>メモリバリアの機能を含んでいるどうかだけ書けば1行ですむのに。

メモリバリアの機能を含んでるならなんで>>553はAssert起こって、
明示的にメモリバリア命令入れたら起こらなくなるの?

って思うわな普通。
メモリバリアって言っても一言で言えるほど単純な話じゃない。


604 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:42:36 ]
volatile は確かに最適化を抑止するんだが、それは一つのスレッド内で変数の参照順を
変更するようなものに限られるんだよ。

605 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 20:58:58 ]
10.4.3 Volatile フィールド
他のスレッドによる volatile 書き込みは、それらが実行された順にすべてのスレッドで行われます。


606 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 21:38:57 ]
趣味でしかプログラミングをしない俺にはサッパリだ。

607 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 21:54:02 ]
まあ、そこの原文の
These restrictions ensure that all threads will observe volatile writes performed by any other thread in the order in which they were performed.
A conforming implementation is not required to provide a single total ordering of volatile writes as seen from all threads of execution.
2行目の全順序は要求されないってのが結局>>533の理由なのかな。




608 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 21:55:08 ]
>>553だったorz


609 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 21:58:07 ]
>全順序は要求されない
「単一」の全順序は要求されない
が重要か。


610 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:00:41 ]
特定のスレッドを特定のCPUコアで動かすのってどうやるんだっけ?

611 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:07:31 ]
そんなこと考えてる前にlockしちゃうなぁ。
var obj = new Object();
としといて
lock (obj) { s_x = 1; s_ya = s_y; }

lock (obj) { s_y = 1; s_xa = s_x; }
で、俺的には万事解決。
色々深遠な問題もあるだろうけど、そんなこと知ったこっちゃねー♪

612 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:18:21 ]
まあそもそもこんな処理は普通は出てこないからなー。
これはあくまで予想と異なる結果になることがあるのを示しているだけで。

ただ、こういうコードを、無意識のうちに、動作を無意識に期待して書いてしまう可能性はあるかもしれない。
まあ普通はマルチスレッドで何かを書く場合は常に同期のタイミングは考慮しながら書くから、
多分めったなことはないとは思うけどね。


613 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:24:25 ]
でもいるんだよ。
既存の処理をなんにも考えずにマルチスレッドにしちゃうのが・・・

614 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:52:56 ]
>>604
参照順は変更されるんじゃないの?
volatile読み込みは他の読み込みよりも早く行われるんでしょ?

615 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:56:00 ]
>>614
まあね。orz

616 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:00:46 ]
>>614
変更されないよ。

>volatile読み込みは他の読み込みよりも早く行われるんでしょ?
そうじゃない。
volatile読み取りよりも後ろにある読み取りが、
volatile読み取りよりも前に移動されるような最適化は行われない
ってこと。


617 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:07:25 ]
>>616
あぁー、そう読むのかぁ。
もっと精進します。



618 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:10:04 ]
そもそもvolatileの順序保障をどういう風に使うかというと、
例えば
int data1;
int data2;
volatile bool completed;
みたいな変数定義を行って、
スレッドAで、
data1 = 1
data2 = 2
completed = true;
みたいなことをして、
スレッドBで、
if (completed)
{
//data1とdata2を読み取り
}

みたいにしたとき、data1とdata2の読み取りで、
確実にスレッドAで更新された結果にアクセスできる。
これは、
volatile書き込みより前の書き込みは必ずvolatile書き込みより前に行われ、
volatile読み取りより後の読み取りは、必ずvolatile読み取りより後に行われることが保証されてるから。


619 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:12:58 ]
もしこの保証がないと、スレッドBでの読み取りで、
data1とdata2が、スレッドAが書き込んだ結果であることを保証できない。


620 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:14:24 ]
>>618
> volatile書き込みより前の書き込みは必ずvolatile書き込みより前に行われ、
> volatile読み取りより後の読み取りは、必ずvolatile読み取りより後に行われる
リンク先にも確かにかいてあるけれど、これに当てはまらないものはすべて保障されていないと考えるべきなのかな。

volatile書き込みより後ろの書き込みが、volatile書き込みより前に行われる可能性とかそういうの。

621 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:24:01 ]
C#の言語仕様では保証されてないはず。
ECMAのCLIのメモリモデルでも、
・読み取りと書き込みは、volatile の読み取り前に移動することができない。
・読み取りと書き込みは、volatile の書き込み後に移動することができない。
というルールしかないので保証されない。
ただし、CLR2.0のメモリモデルではもう少し保証が強い。
詳しくは
ttp://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx#S3
なんだけど、分かりにくいなw

少なくとも書き込み順序は変更されないはず。
なぜなら、CLR2.0では実質書き込みは全て「解放形式」になっているらしいので。

622 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:26:36 ]
おっと、そこのリンクの
4.書き込みは、同一スレッドからの別の書き込みを超えて移動することができない。
があるので、書き込み順序はたとえvolatileでなくとも、変更されることはないな。


623 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:42:25 ]
順序がどうとか、なんでそういう話になるのか意味がわからんよ。
volatileの意味は文字通りその変数を非同期的に変更されうるものとして
扱うという意味以上でも以下でもないはずだと思うんだけど....

624 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:48:23 ]
>>623
俺もそれだけの意味だと思っていたんだけど、C#では違うということを恥ずかしながら今日知りました。

625 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:52:24 ]
なんだよ、結局またわかってないヤツが暴れてただけかよw

626 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 00:02:39 ]
俺は暴れてはいないつもりなので、他にも分かってない人がいたのでしょう。

627 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 00:04:30 ]
>>626
お前だろ



628 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 00:08:54 ]
俺のようなヘボプログラマにとっての結論は、
マルチスレッドではvolatileに頼るなということだな。

629 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 00:08:57 ]
そんな、高速だけど分かってる奴でもとっちらかって間違いかねない仕掛けで書くより、
遅くても排他処理でガチガチ泥臭く書いたほうがメンテナンスとか考えると現実的じゃね?
忘れた頃に見直す度に一々頭の中で再検証すんのかよ、って話。

630 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 00:10:43 ]
だね。メモリバリアメソッドも用がなさそうだし、当面lockステートメントでいいやって思った。
ちゃんと理解できたら正しく速く動作するライブラリを書きたいものです。

631 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 00:13:12 ]
>>627
なんだ、暴れたのがいまさら恥ずかしくなったか?

632 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 01:05:25 ]
>>623
こいつがどこまでもバカなだけ。


633 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 01:07:47 ]
>>630
基本的には正しい判断だと思うよ。
lockだって別にそんなに重いわけじゃない(状況によるが)。


634 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 01:09:53 ]
>>623
言語仕様からMSDNマガジンの詳細な記事から
何から何まで何度も示されてるのに意味が分からないなら
お前は本当に頭が悪いんだろう。


635 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 01:57:39 ]
>>553のって
s_x = 1;
s_ya = s_y;
の部分について、s_yの読み取りが先に行われて、
s_xの書き込み、s_yaの書き込みが行われたってことになるの?

636 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 05:13:58 ]
どうなの?

637 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 06:28:32 ]
>>629
鉄板でしょう。




638 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 08:58:25 ]
C#の言語仕様のダウンロードURI教えてください。

639 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 09:10:49 ]
VS2010のフォルダ内にありましたorz

640 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 09:58:10 ]
object[] a = string[]{"a"};
string[] b = a as string[];

この処理は純粋にaへの代入とbへのキャストが行われているだけで、
List<object>とList<string>を型変換するときのようなインスタンス
の新規作成はされないと考えてよいのでしょうか?

641 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 13:53:30 ]
ちょっとした疑問

class A {
object lockobj = new object;

string _a;
public a {
get {
lock(lockobj){
return _a;
}
}
set {
lock(lockobj){
_a = value;
}
}
}

これって、ちゃんとロック掛かるんだろうか?

642 名前:デフォルトの名無しさん [2010/06/18(金) 13:54:34 ]


643 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 13:56:56 ]
>>641
はい

644 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 15:16:12 ]
>>641
いいえ、コンパイルすらできません

645 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 15:25:20 ]
>>635ってどうなの?
なんで頭いい人たちみんなスルーなの

646 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 15:31:28 ]
OoOについてggrks

647 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 16:28:23 ]
>>644
型がないからってか?
質問の意図はそうじゃないだろ・・・



648 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 17:16:46 ]
>>641
質問のポイントはLockのスコープからのreturnだろ?
ロックはreturnステートメントの実行直後にはずれるから普通に使える。

649 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 18:46:23 ]
>>635
>>553の件少し判った気がする。
環境依存があるようだからここにいる人たちも確認してもらえると助かる。

Releaseモードでも確認できるように修正。コンソールに出力させるようにする。
>Debug.Assert(s_xa == 1 || s_ya == 1);
if (!(s_xa == 1 || s_ya == 1)) Console.WriteLine("* {0}, {1}", s_xa, s_ya); 

こちらの環境で確認できたこと。
マルチCPU、マルチコア、ハイパースレッディングでも起きる。
シングルCPU環境では起きない。
Relaseビルド、Debugビルドはどちらでも良い。
Debug実行時に起きる。Debugなしで実行では起きない。

結論
予想が当たってればOoOとか高尚な問題でなく、IDEのデバッガのバグの可能性がある。

650 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 19:06:46 ]
>>646
すっこんでろ

651 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 20:41:20 ]
>>649
俺の環境では、デバッグなし実行でも起こってる。


652 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 20:43:41 ]
>>641
ちゃんとロックかかるってのはどういう意味で言ってる?
ロック自体はもちろん期待通り普通にかかるが、
objA.A =
objA.A + "hoge";
なんてのをアトミックに実行することは当然ながらできない。


653 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 20:44:30 ]
改行入った…
objA.A = objA.A + "hoge";
な。


654 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:15:29 ]
>>618
なんか違わないか?
その例だと、スレッドBでdata1,data2が「正しく」読める保証は何もないのでは?

でなきゃ、そもそもvolatileって何だって話になる。


655 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:26:12 ]
>>654
>でなきゃ、そもそもvolatileって何だって話になる。
どういう意味??
何言ってるのかわからない。

そりゃまあ>>618には実際にはいろいろ前提があるのは確かだが、
文脈で言いたい事柄の意図は通じると思うが。



656 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:29:24 ]
>>654の指摘が何を言おうとしてるのかわからないので、そうだな、
>その例だと、スレッドBでdata1,data2が「正しく」読める保証は何もないのでは?
なぜ保証がないのかを具体的に書けばそちらの意図はわかるかもしれん。


657 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:33:09 ]
無意味な実装検証してもしょうがないような



658 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:35:39 ]
>>656
そもそもその保証がない(コンパイラの最適化によって変数そのものには
アクセスしない可能性がある)から、そういう可能性を排除するためのvolatileの
はずなんだけど....

どうもこのスレ、分かってるのか分かってないのかよく分からん人が多いよな

659 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:38:32 ]
volatileの使い方?を勘違いしてる

660 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:42:04 ]
ひょっとして>>590の後半に書いてるような、よくある誤解をしてるクチかな?


661 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:43:49 ]
よくある誤解、ねえ....

662 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:44:48 ]
>>658
それがよくある誤解。そんなことは起こらない。
何度も何度も何度も出してるけど
ttp://www.microsoft.com/japan/msdn/msdnmag/issues/05/10/MemoryModels/default.aspx
でも読んでみ。
※今はC#のvolatileの話だぜ


663 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:49:59 ]
volatileの意味を誤読してるとか

664 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:51:18 ]
>>658
メモリモデルの意味を全く理解してないな。

だったら、例えばもしlockで排他制御してた場合に、
他スレッドで更新した変数をlock内できちんと読めるのはなぜか考えてみな。
最適化で削除されるならそれすら保証されなくなる。

lock内では削除したらダメってコンパイラにはわかってるだろとか考えなしなこと言うなよ。
lock内から呼び出される普通のメソッドだってあるんだからな。
コンパイル時にそこがlock内かどうかなんて判断は無意味なこと。


665 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:53:01 ]
>>662
だからvolatileの話じゃないし。
その参照先のどこにも「C#ではキャッシュを読む最適化は行われない」
とは書いてないように思うが。

666 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 21:58:40 ]
メモリモデルのルールをよく読め。
------
読み取りが、同一スレッドから同一ロケーションに対する別の読み取りに隣接している場合、その読み取りは削除のみ可能。
書き込みが、同一スレッドから同一ロケーションに対する別の書き込みに隣接している場合、その書き込みは削除のみ可能。
規則 5 により、複数の読み取りまたは書き込みを隣接させてから、本規則を適用することが可能です。
------


667 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 22:01:01 ]
>その参照先のどこにも「C#ではキャッシュを読む最適化は行われない」
>とは書いてないように思うが。

あのな、volatile読み取りより後の読み取りは必ずvolatile読み取りより後で実行されるってのは、
CPUのキャッシュ制御を含んだ話だよ。
>>618
ではvolatile読み取りの後に変数にアクセスしてるだろうが。
だから必ずキャッシュではなく(別スレッドで更新された)最新の値が読み取られる。
っていうかそのためのvolatileだって話。




668 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 22:02:41 ]
どれとも
>その参照先のどこにも「C#ではキャッシュを読む最適化は行われない」
>とは書いてないように思うが。
これはCPUキャッシュじゃなくて、レジスタにキャッシュするとか、そういう意味で書いてるのか?
それなら、それこそ>>666の話だ。
隣接する同一ロケーションからの読み取り以外で、読み取りが最適化によって削除されることはない。


669 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 22:10:40 ]
>>666
「ケースAの場合、readのみが削除可能」という文章は、
「readが削除されるのはケースAの場合のみである」という意味ではない。
大丈夫?

>>667
どう読んでも君が思ってるような意味には解釈できないと思うが...

「処理Aと処理Bはシーケンシャルに実行されます」の意味は、
処理Aに続いて行われる処理Bに対して最適化が行われない、などということを意味しない。

670 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 23:40:03 ]
ふえ?

671 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:00:00 ]
>「ケースAの場合、readのみが削除可能」という文章は、
>「readが削除されるのはケースAの場合のみである」という意味ではない。
>大丈夫?

あほくさいこと言う前にそのページ全体をよく読んでみろよ。
メモリモデルをどのように定義してるか書いてあるから。
「メモリ モデルは、順次一貫性モデル (最も制限的かつ厳密なモデル) をベースとし、」ってとこらへんな。
だいたいそんなこと言ったら書いてないことだらけなんだから、そういう読み方じゃおかしいことくらいわかろうに。

>「処理Aと処理Bはシーケンシャルに実行されます」の意味は、
>処理Aに続いて行われる処理Bに対して最適化が行われない、などということを意味しない。
どこの記述のことを言ってるのかわからんがな、処理Bの最適かって具体的に何のことを言ってる?
読み取りの最適化なら、前に読んだ値をキャッシュしておくくらいしかないだろ。
メモリモデルでは、そういうのを読み取りを前に移動するという風に定義してるんだよ、上のページにちゃんと書いてある。
そして読み取りはvolatile読み取りより前に移動できない、
つまり、volatile読み取りより前に読み取りをキャッシュしておくという最適化は許されない。
全部書いてある。


672 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:04:49 ]
もういちいち説明するのめんどくさい、勝手に自分流解釈しとけ。
メモリモデルのこととかある程度わかってる人間ならすぐに理解できる話だ。
volatile絡みのルールの話も、マルチスレッドでのメモリモデルの一般的な話を理解してるなら
はっきり言って常識レベルの話(ごくごく一般的なルール、javaのメモリモデルも同じようなルール)。
一回マルチスレッドのメモリモデルや順序について詳しく調べてみ。

673 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:17:33 ]
>>658
お前が分かってないことははっきりしてる。


674 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:27:55 ]
>>658
>そもそもその保証がない(コンパイラの最適化によって変数そのものには
>アクセスしない可能性がある)から、そういう可能性を排除するためのvolatileの
>はずなんだけど....

ttp://msdn.microsoft.com/ja-jp/library/aa691105.aspx

Cとかの感覚で言ってるのかもしれないが、今どきのマルチスレッドを前提とした
havaやC#のような言語では、そう簡単にアクセスそのものが消されることはないよ。

マルチスレッドで正常な動作を保証するために(保証するようなコーディングができるようにするために)、
メモリモデルというものを定義して、そのルール内で最適化を行うようになってる。
だからlockやvolatileなどをルールに従って使用して、正常に動作することが保証できるコーディングを行える。


675 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:36:38 ]
Wordドキュメントになってるc#言語仕様の、10.5.3 Volatile フィールドの説明でも、
>>618のような動作を正常に行えるようにvolatileを使う例が書いてあるな。
まあ日本語がおかしくて意味不明な感じに読めてしまうけどな。
言ってることはまさに>>618と同じ。


676 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:38:40 ]
using System;
using System.Threading;
class Test
{
public static int result;
public static volatile bool finished;
static void Thread2() {
result = 143;
finished = true;
}
static void Main() {
finished = false;
// Run Thread2() in a new thread
new Thread(new ThreadStart(Thread2)).Start();
// Wait for Thread2 to signal that it has a result by setting
// finished to true.
for (;;) {
if (finished) {
Console.WriteLine("result = {0}", result);
return;
}
}
}
}
この例では、次のように出力されます。
result = 143
この例では、Main メソッドが Thread2 メソッドを実行する新しいスレッドを開始します。このメソッドは、値を result という非 volatile フィールドに格納し、
次に volatile フィールド finished に true を格納します。メイン スレッドは、フィールド finished が true に設定された時点で、フィールド result を読み込みます。
finished は volatile として宣言されているため、メイン スレッドはフィールド result から値 143 を読み込む必要があります。
フィールド finished が volatile として宣言されていない場合は、finished への格納後に result への格納がメイン スレッドから参照可能になります。
その結果、メイン スレッドがフィールド result から読み込む値は 0 になります。finished を volatile フィールドとして宣言すると、このような矛盾を回避できます。


677 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:46:04 ]
あっそ



678 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:25:41 ]
>>658
かたくなにそう信じてるやつがいるんだな…
元々意味のない参照ならそうなる場合はあるが、
普通ほとんどの場合は違うのに。


679 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 13:38:21 ]
>>669
キリッ
ついていけないならくだらんケチつけなきゃいいのに


680 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 16:08:49 ]
また同じヤツが暴れてるのかw
お前はもうマルチスレッドとか無理だからあきらめろw

681 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 18:18:54 ]
クラスアセンブリ(dll)を許可するプロジェクトだけに読み込ませるにはどうすればいいのん?

682 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 18:31:32 ]
>>681
コールしているアセンブリの署名を調べる。

683 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 18:41:02 ]
>>682
kwsk!
ちなみにクラスアセンブリは自前のソース月の物でありまする><

684 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:09:18 ]
署名は改ざん検知出来るだけ
DLLのアクセス制限云々の機能ではない

685 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:29:04 ]
やっぱりそうなんですね
がっくし・・・・
ProjectA ---{OK}--- A.dll
第三者のProject ---{NG}--- A.dll
みたいな事をやりたい時はみんなどうしてるのん?

686 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:32:12 ]
そんなことをやりたいと思ったことがない。

687 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:35:14 ]
えー社内ライブラリとかどう管理してるのー?
不正リンクされて盗まれても「でへへっ!」とか言うだけ?
うそーん><



688 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:38:50 ]
>>685
DLLのファイルかフォルダにNTFSのアクセス権つければよくね?

689 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:47:26 ]
制限出来れば
リフレクション使ってクラス調査→不正リンク→(゚∀゚ )アヒャヒャ
という.net固有の糞みたいな問題が解決するけど
未だに対策は難読化しかない。

690 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:53:51 ]
別になぁ。そもそもアセンブリじゃないDLLなら呼び放題だし。
売り物ならライセンス処理つけるだろうし。
お買い上げありがとうございました。だろ?

691 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:55:50 ]
オープンソース時代だから別にいいじゃんw
盗まれたら裁判すればいいし(キリッ

692 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:58:48 ]
>>691
盗んだほうはC++で書きましたってオチだ

693 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:08:44 ]
.NETでなくても、製品の実行ファイルや図版を勝手に使われたらどうするんだよ。
そういうときは法務部門や顧問弁護士の出番。

694 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:18:14 ]
まっ、やり放題な業種だからどうしようもないってこった
裁判なんざ普通は起こせないしそもそも把握すること事態が不可能

695 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:47:43 ]
ヤリ放題な業種だと自分に言い聞かせてるのか?こっちまで巻き込むなよ。

696 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:50:51 ]
巻き込むも何も対策方法が何もない現状
自作パッカー作ったところで焼け石に水
理想は寝て言え

697 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:50:51 ]
>>683
どのアセンブリからコールされているかはわかるだろ。
そして、そのアセンブリがどのような署名されているかを調べる。
逆コンパイル防止はそれ以前の問題。



698 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:05:35 ]
毎回、毎回、クラス毎に調べるのか?
手間かかりすぎだろ

699 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:07:48 ]
いたるところで StrongNameIdentityPermission でDemandでもしとけ。
まあ改ざんされたらもうだめだけどな。


700 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:45:18 ]
単純に
public class MyLicence : License {
public override void Dispose() {}
public override string LicenseKey { get { return ""; } }
}
public class MyLicenceProvider : LicenseProvider {
public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions) {
if (allowExceptions) {
string exename = Path.GetFileName(Assembly.GetEntryAssembly().Location);
if (! exename.Equals("MyLicenceTest.exe")) {
throw new LicenseException(type, instance, "do't licenced");
}
}
return new MyLicence();
}
}
[LicenseProvider(typeof(MyLicenceProvider))]
public class TestClass {
License license;
public TestClass() {
license = LicenseManager.Validate(typeof(TestClass), this);
}
}
とかでもいいんじゃね?呼び出し元exe名縛り。

701 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:54:35 ]
こんな抽象クラスあったのか。
中々面白いアプローチだと思う。

702 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:59:05 ]
ほぉ、これはなかなか…

703 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:05:48 ]
>>701-702
そりゃどうも。えっへん!

704 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:06:08 ]
Licenseは破棄が必要だぜ…


705 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:07:59 ]
と思ったけど必要なければ別に実害はないのか…


706 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:10:53 ]
リソース持ってないし、いいかな?と省略したけど、実装する際は通常通り
Dispose()しといたほうがいいだろね。

707 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:14:16 ]
リソースというか取得したライセンスを開放する処理を好きに定義するだけでしょ
同時利用数をデクリメントするとか
空でも全く問題ない



708 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:20:59 ]
ってことみたいね。


709 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:48:04 ]
というか、キモはexeのファイル名を確認するところなんだから、実装の仕方は人それぞれでしょう。

710 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:10:48 ]
ってことみたいね。

711 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:30:09 ]
>>700をoverrideとか使わずにもっと分かり易く書いてくれ

712 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:33:20 ]
webアプリで
FileSecurity filesecurity = File.GetAccessControl(path);
(pathはstring型でファイルの絶対パスが代入されています)
としました。
このファイルを他のアカウントで作成して、
アクセス権限も拒否にしたら、デバッグ環境でですが、

'/'アプリケーションサーバーエラーが発生しました。

と出て、実行できませんでした。
とりあえず、try catchを使い、アクセス禁止として
処理すれば、実行エラーは回避できました。
DACLとかいまいちわかっていないのですが、
なにか他の回避方法はあるでしょうか?
よろしくお願いします。

713 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:33:38 ]
そんなレベルだったら余計なこと気にするな
どうせその他の部分で穴だらけ

714 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:00:25 ]
>>711
public class Hoge
{
  private Hoge() {}

  public static Hoge()
  {
    string exename = Path.GetFileName(Assembly.GetEntryAssembly().Location);
    if (exename != "hoge.exe")
      throw new Exception();

    return new Hoge();
  }
}

でも、リフレクションやLCGを使われたらどうなるの?

715 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:27:30 ]
LicenseProviderって使ったことなかったからそのサンプルコードとしては
参考になったけど、正直実用的な意味があるとは思えんなあ…

アセンブリがロードされた時に何らかのスタティックメソッドの実行を強制できれば
いろいろ面白いことが出来そうな気がするんだけど

716 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:43:56 ]
そうそう、今回の話とは別に、それ前からほしかったんだよね。


717 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 01:26:14 ]
実用的には例えばSIDとかMACとかUSBメディアのPNPDeviceIDとか
※ SID : GetComputerName、LookupAccountName API参照
※ MAC : NetworkInterface.GetPhysicalAddress 参照
※ PNPDeviceID : WMI で Win32_DiskDrive, Win32_DiskDriveToDiskPartition, Win32_LogicalDiskToPartition, Win32_LogicalDisk 参照
そういった利用者を一意に特定出来る情報をプロダクトキーと一緒に公開鍵で
暗号化してライセンス認証サーバに送って、サーバで認証後に秘密鍵で
特定情報を暗号化して送り返してもらったものを記録。
その情報を公開鍵で復号して動作環境での取得値と一致していなかったら
ライセンス違反と判断・・・とかメンドクサい実装は必要に応じて。



718 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 01:53:37 ]
うんまあ改ざんされたら意味ないんだけどね。


719 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 02:49:16 ]
それを言ったらどんなアプリ、ExcelだろうとWindowsOSだろうと、リエンジニアリング
されてライセンス処理部を改ざんされたら無理。
それを言うことに意味はあるのかな?

720 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 03:02:30 ]
簡単さが違うって話。


721 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 05:35:33 ]
確かにDllMain的なのは欲しいよな。

722 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 11:42:56 ]
static イニシャライザでチェックしちゃいかんの?

723 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 11:47:55 ]
staticコンストラクタはいつ呼ばれるかわからない

724 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:00:08 ]
アセンブリに属性をつけておいて
その属性にstaticコンストラクタを仕込んでおけば
dllを読みこんだタイミングで実行されたりしないかなあ

725 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:00:32 ]
ふーん

726 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:08:28 ]
>>724
されない
カスタム属性っていうのはあくまでメターデータのラッパークラスなので
インスタンスが作られるのはその属性を参照しようとしたとき

727 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:26:53 ]
お前ら釣り耐性低すぎだろ



728 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:32:24 ]
>>726
(゚∀゚)

729 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 18:55:14 ]
>>700みて何じゃこりゃとおもったけど>>714見たら恐ろしく単純w

730 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 19:30:28 ]
何十個もクラスをライセンス管理しないなら >>714 で充分だね。

731 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 19:53:32 ]
>>729
遅い

732 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 21:27:20 ]
>>700でも充分簡単じゃねぇか。
あんなのすら分からなかったらそもそもコードかけねぇだろ。

733 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 21:46:45 ]
>>732
インデントの差だろ

734 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 22:42:20 ]
まあ確実に言えることは、>>700 程度のコードが複雑に見えるんじゃライセンス保護
なんて当分は無縁だということ。

735 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 22:50:21 ]
>>733
専ブラで>>700をポップアップさせて見ればいい

736 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 00:53:37 ]
うほ

737 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 10:19:51 ]
先生!
thread.spinwaitとthread.sleepってどう違うんですかっ?
MSDN読んでも引数の違いぐらいしかわからないです!
高度な技術を持ってる人、おすえて!



738 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 10:31:49 ]
解説読めよ。

739 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 11:41:25 ]
>>738
わかりません!

740 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:04:49 ]
Windowsフォームアプリを作るとメインウィンドウのクラスがめっちゃ大きくなっちゃうんですが、仕方ないんでしょうか?
それともpartialで分割するべきですか?(あまり意味ないと思いますが)

741 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:11:42 ]
partialの分割は意味ない。
ユーザーコントロールにするとか、ビジネスロジックを別クラスにするとか、
そんな感じ。

742 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:49:35 ]
ApplicationContext使って、MainFormにはインタフェースレベルのプログラムしか書かないとかかな。

743 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:37:11 ]
それでもコントロールの量が多いとイベントメソッドだけでもめっちゃ多くなっちゃうんですよね。
そこそこ普通のフリーツールくらいの規模でもメインウィンドウのクラスだけで何千行にもなっちゃう。

744 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:40:43 ]
だから、そーゆーのはユーザーコントロールにまとめるんだってば。

745 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:43:21 ]
で、デザイナがバグって正常に表示されない、とw
あれたぶん2010でも放置なんだろうな

746 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 21:11:27 ]
>>743 >>745
へったくそだなぁ

747 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 21:12:31 ]
ユーザーコントロールが正常に動かないのは作り方が悪い



748 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 21:29:20 ]
>>746
具体的に教えてよ

749 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:12:54 ]
なんでそんなでかくなるんだろ。
イベントが盛りだくさんなの?

750 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:17:36 ]
ボタンが百個あるので、イベントハンドラが百個なんでしょ。

751 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:28:16 ]
ボタン1個にいくつのイベントがあると思ってんだ

752 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:05:11 ]
はなし が かみあって ない

753 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:35:24 ]
やっぱへったくそだな

754 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:50:20 ]
>>746-747
素人臭い意見だな。
そんなわけないでしょw

実際ある程度やってみれば俺の言ってる意味がわかるよ。

755 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:54:22 ]
自称玄人△

756 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:07:04 ]
>>754
ユーザーコントロール使ったこともない自称玄人乙

757 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:12:58 ]
IDEに表示されないという理由だけでユーザコントロールを避けるってどうなの?
#define BEGIN {
と同じくらいひどいと思うんだけど、素人だからですかね



758 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:15:09 ]
それは言いすぎ。
IDEのコード生成は信用できないので禁止、くらいだろ。

759 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:24:31 ]
・・・IDEに出ない?ツールボックスに出てきているコレはなんだろう?

760 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:29:02 ]
>>757
「だから」避けろとか使うべきでない、などとは一言も言ってない。

761 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:31:03 ]
揚げ足取り玄人ですね。かっこいいです!

762 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:34:15 ]
>>760
デザイナがバグって正常に表示されないというのは素人がよくハマる部分だから
気をつけろって言う意味?

763 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:36:18 ]
ガキ臭い揚げ足取りしてるのはどっちだよ。
ネトウヨみたいなよくわからん被害妄想だなおい。

こっちは単にVSのデザイナはユーザーコントロールを使うとバグって
正常に表示されなくなる場合がある、という事実を言ってるだけ。

っていうか、この程度の経験もない奴が偉そうに「ユーザーコントロール使え」
とか人に講釈垂れてるっていい根性してるよな。

764 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:40:46 ]
>>762
VS自体のバグだから使う側が玄人か素人か関係ないし、
気をつけようもないんだけどさだから。

765 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 01:53:37 ]
該当バグのURL晒したらすぐ済むことなのに

766 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 02:11:16 ]
VS2008でデザイナがしょっちゅう腐ることがあるやつを
VS2010に持ってきたが、いまのとこ一度も腐ってない

767 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 02:36:55 ]
2002や2003に比べたら2008の安定ぷりったらないんだけど、2010はさらに調子良いのか
これは楽しみ



768 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 03:24:29 ]
コントロール多くてもほとんどユーザーコントロールだから、フォーム側に実装する事ほとんど無いなぁ。
そんなにフォーム固有の処理って多いもん?

769 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 03:50:48 ]
>>768
ユーザコントロール作ったらバグるって言われるよ

770 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:23:34 ]
ボタンにクリックイベント一個付けるだけでもわざわざ一個のユーザーコントロール作るの?

771 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:25:56 ]
そうすべきだと思ったらそうするな

772 名前:デフォルトの名無しさん [2010/06/22(火) 04:29:59 ]
>>770
ボタンコントロールにだけ関連する処理ならユーザーコントロールか
継承したクラス作ってそこへ入れてしまえばいいんじゃね?

Formにだらだら書くよりすっきりするよ

773 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:35:29 ]
継承したらそりゃコードは分割出来るけど
デザイナの意味を成さなくなってくるな

774 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:40:23 ]
Visual Studioの登場で、内部はどんどん複雑に、表面は簡単になったおかげで
基本や構造を理解せずに何となくソフトを作るプログラマーが増えた

マシンパワーが有り余ってるから、いいかげんな作りのソフトでもそれなりに動いてしまうのも善し悪し

775 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 05:00:27 ]
>>773
もう少し詳しく。
適当に予想してレスすると怒られる流れっぽいので。

776 名前:デフォルトの名無しさん [2010/06/22(火) 05:11:51 ]
>>773
成すよ
まあこのあたりみてくれ
cs2ch.blog123.fc2.com/blog-entry-8.html

777 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 05:33:54 ]
>>775
イベント追加する時に+=を書かなくちゃいけなくなるとか



778 名前:デフォルトの名無しさん [2010/06/22(火) 05:35:24 ]
>>777
hoge.Click +=
とか書いてTAB2回押せば勝手につくってくれるじゃん

779 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 05:47:02 ]
>>778
プロパティのイベントを選べないじゃん

780 名前:デフォルトの名無しさん [2010/06/22(火) 05:54:13 ]
>>779
だからその辺は>>776読めって
一旦デバックすれば継承したクラスも同じように操作できるから
それができないとFormを継承したForm1の設定はどうやって実現するんだよ
普段コードをごりごり書いてるのはFormを継承したクラスだぞ

781 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 06:01:54 ]
>>780
MainFormのデザイナから継承させたコントロールのイベントを
プロパティウィンドウからメソッド生成させると
結局MainFormのクラス内にメソッドが追加されないか?
これじゃ分割出来てないんだが

782 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 10:25:36 ]
ボタン100個あって、100個クリックイベントを書くのは愚の骨頂だろ。
インタフェースの仕事としては、どのボタンがクリックされたかを伝えるだけで良いんだからさ。

それ以上に、動かす用途によって書き方は変わると思うんだが。

783 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 11:17:47 ]
100個あるボタンそれぞれが全く別の処理を行うというのは考えづらい
ツールボタン的なものや、データ行それぞれに対するコマンドあたりだろうけど
そういうのは共通の入り口から振り分けられる

784 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 12:30:02 ]
だね

785 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 13:01:54 ]
private void button1_clickClick(object sender, EventArgs e)
{
  MessageBox.Show("1");
}

private void button2_clickClick(object sender, EventArgs e)
{
  MessageBox.Show("2");
}

...

private void button100_clickClick(object sender, EventArgs e)
{
  MessageBox.Show("100");
}

なんてコードがあったら継承して、一つに纏めろと言いたくなるわな。

786 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 13:34:52 ]
さすがにそれは・・・w
使う方も大変だな、ボタン100個

787 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 14:01:28 ]
ソフトウェア和文タイプキーボードとか



788 名前:デフォルトの名無しさん [2010/06/22(火) 14:03:54 ]
>>787
TagでもNameでもいいので識別に使う情報も足せておけば
イベントハンドラで余裕で処理できるよ

789 名前:デフォルトの名無しさん [2010/06/22(火) 14:10:08 ]
>TagでもNameでもいいので識別に使う情報も足せておけば
>イベントハンドラで余裕で処理できるよ
TagでもNameでもいいので識別に使う情報持たせておけば
一つのイベントハンドラで余裕で処理できるよ

790 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 14:40:49 ]
>>785
継承も何も、一つだけ作って後は全部同じの指定しろって感じ?w
IDEからもできるしな!

791 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 14:46:51 ]
>>777
部品化したにもかかわらず、何処かのフォームの勝手な理由で部品を変更しようとするの?

>>790
MessageTextみたいなプロパティをつくり、IDEからも操作できるようにしておき、
クリックされた時にMessageBox.Show(MessageText)を行うようなボタンを作成すれば
IDEで配置→MessageTextを設定
という作業になるよ

792 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 14:49:52 ]
わざわざつくるのめんどくさくてこうしてしそう。

private void Form1_Load(object sender, eventargs e)
{
    Foreach (Control c in Panel1.Controls)
    {
        if(typeof(c)==typeof(Button)) ((Button)c).Click += new EventHandler(softkeys_button_click);
    }
}
private void softkeys_button_click(object sender, eventargs e)
{
    Textbox1.Text = String.concat(Textbox1.Text, ((Button)sender).Text);
}


793 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 15:05:21 ]
デザイナで出来ない云々

794 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:05:57 ]
>>785
この例だと継承なんていらないでしょ。
button_clickに全てまとめて自分自身を判別すればいいんじゃまいか。

795 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:09:31 ]
>>794
自分自身を判断する際に適当なプロパティがあるかどうかってところだな。

796 名前:デフォルトの名無しさん [2010/06/22(火) 18:15:47 ]
>>795
Tagになんでも設定できるので識別情報を入れるか
Nameにbuttonxxxと言った感じでxxxの部分に識別情報を入れておけばOK

797 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:24:57 ]
>>795
Tagってそういうのに使っちゃダメなの?



798 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:28:35 ]
ボタン10個あってそれぞれに10個のイベントがあったら100イベント。
その他のコントロールもあったら数百個のイベントがあってもおかしくない。
そしてそれらが共通しない機能なのも普通にあり得る。
そういう状況の時にユーザコントロールを使えって話じゃないの?
でもそれだとイベントを関連付けるときにプロパティウィンドウは使えませんよーって話。

799 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:37:59 ]
>>798
>イベントを関連付けるときにプロパティウィンドウは使えませんよ
・・・お前は何を言ってるんだ・・・?
継承したのもカスタムのも、普通にプロパティ窓からイベント付けられるぞ?

800 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:46:41 ]
流れ仏多義理でちょい質問
Firefoxみたいにタブに閉じるしいたけ付けたいんだけど
オーナードローするしかない?

801 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:47:35 ]
>>798
ユーザーコントロールにするのなら、
メソッドやプロパティ同様に、イベントもコントロール内で定義したらプロパティウィンドウで使えるっしょ。

802 名前:デフォルトの名無しさん [2010/06/22(火) 18:49:40 ]
>>800
タブ部分に閉じるボタンってこと?
labelなんかだと配下にbuttonとか置けるんだけど
タブコントロールのタブ部分にできたっけかな?

803 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:59:31 ]
>>800
うん、オーナードロー。

804 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:11:17 ]
>>799
>>801
あれ?
プロパティウィンドウからイベントを自動生成+関連付けしたら、結局メインクラスに生成されない?
メインクラスに生成されたらわざわざユーザコントロール作った意味がない気が…。

805 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:16:44 ]
ああごめん。何いってんだ。
ユーザコントロールの方のプロパティウィンドウ使えばいいんだよね。

806 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:20:21 ]
>>802
どうもタブそのものを取得するのが難しいみたい
だから結局>>803って結論しかないか
WPFなら簡単なのかねー?

807 名前:デフォルトの名無しさん [2010/06/22(火) 19:21:55 ]
>>806
あとはタブぽい動きをするユーザーコントロールを自分で作るかだねえ



808 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:22:12 ]
質問です。
RichTextBoxで行間をピクセル単位で指定する方法はありますか?

809 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:34:11 ]
コントロールを継承した時のデザイナってなんで表示されないんだっけ?

810 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:38:29 ]
>>806
WPFなら簡単だね、タブに何でも入れられる。TabControl in タブなんて意味不明なUIさえ可能だ。

>>808
WinFormのRichTextBoxだと、EM_SETPARAFORMATで設定できないこともない

811 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 21:10:05 ]
WPFなんて使ってるアホまだいるのか

812 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 21:18:58 ]
WPFはこれから

813 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 21:30:19 ]
>>811
VS2010をdisってるの?

814 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:20:06 ]
WPFとかXNAとかしょっぱいもん使って作るくらいなら
DirectXをちゃんと使えるようにしろと

815 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:21:31 ]
軽さが本分のIDEを、良いグラボ必須にした戦犯と聞き及んでおりますが、反論は?

816 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:24:19 ]
IDEの本分が軽さであった時などない。はいろんぱー

817 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:34:17 ]
つまりは作るアプリ皆高性能グラボ高性能CPU必須にする素晴らしい技術ですな。
いやはや、NVIDIAにAMD、インテルから感謝状が期待できますのう。



818 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:39:17 ]
じゃあいつまでもWin9x基準で作ってろよ
Win7がちゃんと動く環境ならWPFは普通に動く

819 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:42:48 ]
糞ボロいPCで開発、糞ボロいPCで使用っていうなら.netの使用自体を考え直した方がいいんじゃ
煽りじゃなく
C#(.net)が出た当時なんてもっとボロカスに叩かれて「誰が使うんだよw」とか言われてたが
ハードの進化で今は軽い方だと思うけどなー

820 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:43:47 ]
WindowマネージャがGPU使ってる時代に中身のツールキットだけレガシーに拘ってもねぇ

821 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:47:15 ]
Windows7ったら、未だにVista以下のシェアだぜwwwww
ちなみに、XP 62.55%、Vista 15.25%、7 12.68% (NetApplications May, 2010)。
いつになったらメジャーになるんだろうかな?

822 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:48:39 ]
新しいハードの性能を活かさないともったいないから見た目をちょっと豪華にしようっていうだけだろ
見た目がどうでもいいんだったらWindows95時代の格好悪いUIで作ってればいい
今のWinFormsの見た目だって数年後には古臭くて格好悪いと認識されるようになってるよ

823 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:51:13 ]
64bitつかうで無い限りやっぱりXPだよな。
ワクチンソフトの対応さえあればXP64bit使いたいんだが。

824 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:51:25 ]
まだサポート期間残ってるし、しばらくはXPが優勢でしょ。
まーでも、ここ1〜2年で大分変わると思うけど。

825 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:52:49 ]
あの7のGUIの出来は拷問だよマジで。

826 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:52:50 ]
でも、自分も 12.68% の一員なんだけど・・・やっぱ使いづらいわコレ。
一年近く使っててもイライラする。

827 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:53:32 ]
>>823
よくわからんが64bit7でワクチンソフト?ウィルス対策ソフト?なら使ってるよ



828 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:55:39 ]
>>821
歴史に学べ
どのOSもメジャーになるのに数年かかってる
SPが2になる頃にはシェア一位になってる

829 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:57:08 ]
>>828
では、Vistaもそろそろメジャーに!

830 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:57:42 ]
長年XPを使っていたので7で慣れが必要なのは確かに煩わしい
が、ある程度のスペックならばXPより快適だぞ
XP厨だったのに素直に降参した

831 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:57:45 ]
どの辺が使いづらいの? 普通に便利に使ってるけどなぁ。

832 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:57:58 ]
初心者ならともかくプログラマでしょ? 一般人から見たらPCウィザードでしょ?w
カスタマイズしたりショートカットキー使ったり補助ツール使ったりしてたら使い勝手なんか全然変わらないよ

833 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:58:16 ]
>>827
7の64bit版はワクチンソフトの対応有るけど、XPの64bit版の対応が無いんだよ。
で、泣く泣く7の64bit版使ってる。

834 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:59:46 ]
ここはドザ板かw

835 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:01:49 ]
いくらでもあるだろよ・・・。

836 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:02:05 ]
これが情弱ってやつか・・・。

837 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:20:47 ]
ツールバーにスタートメニュー作ってるが元々のスタートが邪魔。
ライブラリが幅きかせすぎ。
おまけにクリックすると「アクセスが拒否されました」なフォルダ大杉。
エクスプローラでフォルダ開くとフォルダのツリーで現在のフォルダがなぜか一番下にスクロール。投げ飛ばしたくなる。
時々、デスクトップにdesktop.iniが居座って削除出来ない。
ホームグループアイコン、レジストリ弄ってデスクトップから消しても消してもいつのまにか復活。
USBメディア抜き差ししてるとUSBアイコンが消える。まだもう一本刺さってるだろがぁ!
これは相性の問題かもしれないが休止から戻るとNICがだんまりする確率高し。
セキュリティの問題なのか知らないが、旧型のTeraStationと繋ぐときにはグループポリシーでNTLM応答のみ送信にしないとならない。
はぁはぁ・・・他にも色々ありすぎて・・・思い返すと段々腹が立ってきた。



838 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:25:25 ]
お前は死ぬまでXP使っとけよw

839 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:26:28 ]
ふあ…ふ

840 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:32:40 ]
7上のものならいいけど、XPEとかEmbedded用XPの開発も結構あるのよね。
まだ5年以上MSのサポートもあるわけだし。
ここら辺はうまく使い分けないとな。

841 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:38:03 ]
VPCって微妙にめんどくさいから結局は隣に古いPCを置いてXP入れてテスト専用にしてるわ

842 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:39:03 ]
VPCって微妙にめんどくさいから結局は隣に古いPCを置いてXP入れてテスト専用にしてるわ!!!!!

843 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:39:31 ]
>>832
エクスプローラのAlt>F>WがAlt>F>Xに変更されてたりしててだな。
すぐ慣れるんだけどさ。

844 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:40:53 ]
>>837
まあ、UIの操作性は確かに難が多い。
単なる慣れの問題と言い切れない改悪点がいろいろあるとは俺も思う。
最悪なのがファイル検索の改悪。

だが、
>おまけにクリックすると「アクセスが拒否されました」なフォルダ大杉。
こんな文句垂れる人はシステムフォルダを隠さない設定にしちゃダメだろw

845 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:42:57 ]
7はXPよりも安定してるからいれてるな
ファイラー使うから7特有のUIとか関係なし
OSは安定さえしてればいいよ

846 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:44:05 ]
なら2000でいいじゃん。

847 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:47:02 ]
ファイラーなんて死語だと思ってたw
っていうか、使えるファイラある?

Avestaとか使いにくいし、UltraExplorerは期待してたが結局放置状態のようだし



848 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:47:58 ]
>>846
マルチCPUに対応してない
サポート切れてセキュリティ死んでる
.Net4が入らない
スリープが終わってる
パフォーマンス悪い
安定云々以前に論外です

>>847
UltraExplorer風のものをdelphiで作ったからそれ使ってる

849 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:50:17 ]
ここドザ板かと思ったw
>>847
x-finder使ってる。極稀に落ちるけど気にならないレベル。Win7pro64bit

850 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:53:20 ]
>>849
ありがと後で試してみる。

851 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 00:25:55 ]
>>844
例えば SendTo。
実際は SendTo は C:\Users\{ユーザ}\AppData\Roaming\Microsoft\Windows\SendTo
なんだけど、何故か C:\Users\{ユーザ}\SendTo が意味もなく存在してアクセス不能。
こんな変なものがあっても、隠れていたら良いとか言えるのか?

852 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 00:40:29 ]
>>851
>何故か C:\Users\{ユーザ}\SendTo が意味もなく存在してアクセス不能。
うちのセブンちゃんにはありません

853 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 00:48:22 ]
>>851
実際は(管理者権限なら)アクセス権をちゃんと設定すればアクセスできるんだけどさ。
まあ、アクセスを制限されるのに「管理者」って名ばかりなのは何なの、
って突っ込みたい気持ちは俺も分かるけどw

854 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 01:17:31 ]
信用できる管理者に対する制限は少ないんだよ。w

855 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 02:14:51 ]
7で嬉しかったのは存在しないネットワークのパスのファイルにアクセスしようとして固まってもプロセスは殺せるようになった。
Vistaまではタイムアウトするまでプロセスを殺すことすらできなかった。
VistaからAPI追加されて対応したと思ってたのにVistaでも追加したAPIを使ってないのか殺せなかったなぁ…

856 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 02:34:23 ]
数百個のファイルやフォルダを選択しただけでエクスプローラが落ちる仕様はvista以降解消されたの?
この仕様のせいで数百個のファイルの入ってるフォルダを別フォルダに移動する時に手動で50個くらいずつ移動しなくちゃいけなくて不便。

857 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 03:01:31 ]
>>856
落ちるとなるとむしろ変なシェル拡張とかが入ってる環境じゃないかと疑いたくなるなぁ。
XPでも数百くらいのファイル数というかただファイルが多いという状況で落ちたことなんて全然ない。
それでもVista以降のエクスプローラの安定感はXPとは比べものにならないと思うよ。

でも、Vistaのエクスプローラは7を触ったあとでは操作性がいろいろクソすぎてもう触る気が起きないので7がお勧めだなぁ。



858 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 03:36:59 ]
Vista以降で解消されたのか?ってことは、Vistaよりも前のOSでおちるってことだよね。
Meは知らんが、2000、XPでは当たり前のように1000ファイルぐらい選択していたよ。
ファイルの種類にもよるんだろか。

859 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 03:57:21 ]
XPだとファイルを1000個コピーしようとしてプチフリして「残り 192839分」とかしょっちゅう見るけどなあ

860 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 04:06:59 ]
それは
> ファイルやフォルダを選択しただけでエクスプローラが落ちる
と何か関係が?

861 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 04:22:50 ]
結局ユーザーコントロールに文句言ってる奴は使い方知らないだけなんじゃねぇか、と疑いたくなるなー。
普通にFormを継承したMyFormとかTextBoxを継承したMyTextBoxみたいなの使うよな?
デザイナ上で普通に動くし・・・

862 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 04:52:33 ]
まあなw






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<186KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef