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