- 1 名前:名無しぃ♯ [2008/06/21(土) 17:51:22 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part46 pc11.2ch.net/test/read.cgi/tech/1208791919/ その他テンプレ>>2-5くらい
- 673 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 08:23:08 ]
- DBをアプリに含めるってのの方が変じゃね?
LINQ使えばXMLもSQL Server Compactも大差ないと思うが。
- 674 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 08:27:51 ]
- >ビルドしたらアプリに含まれるようになるんでしょうか?
そんなん聞いたこともないわ。 Accessのイメージで言ってるのか?
- 675 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 09:10:50 ]
- Firebird使えばできなくもないがXMLで難易度高すぎなら無理だろうな
- 676 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 09:32:53 ]
- >>673,674
別になってるのが普通なんですね(汗 おっしゃるとおり、Accessのようなものをイメージしてましたorz 言われてみれば、Web系でもDBと処理は別になりますよね・・・ >>675 一応、ちょっとだけ弄ってみたんですが、 木構造が複雑になってしまい、これだったら慣れてるRDBのほうが楽かなと。 恥ずかしながらFirebirdは初耳でした。ちょっと調べてみます。
- 677 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 18:39:17 ]
- >676
何がしたいのか分からないけどXmlSerializerあたり調べてみたら?
- 678 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:15:20 ]
- 「DBファイルが独立して〜」の意味が把握できないけど、アプリにDBを組み込ん
じゃいたいってことなら SQLite とかの組み込みDBって手があるよね。
- 679 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:34:28 ]
- >678
俺も>672を読んでそう思ったので組み込みDBにできるFirebirdの名前出した。 けど>676読んだら「RDBが使いたい」ってわけじゃ無い感じがしたんでXmlSerializer言ってみた。
- 680 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:23:58 ]
- コントロールのバインドはDBじゃなくてたんなる
int[]とかからも情報を取り込めるですか?
- 681 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:54:29 ]
- foreach (var msg in FizzBuzz(100)) {
Console.WriteLine(msg); } ということができるように、 public static IEnumerable<bool> Fizz() { while (true) { yield return false; yield return false; yield return true; } } public static IEnumerable<bool> Buzz() { while (true) { yield return false; yield return false; yield return false; yield return false; yield return true; } }
- 682 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:56:28 ]
- public static IEnumerable<string> FizzBuzz(int max) {
var fizz = Fizz(); var buzz = Buzz(); foreach (var i in Enumerable.Range(1, max)) { bool isFizz = fizz.First(); bool isBuzz = buzz.First(); fizz = fizz.Skip(1); buzz = buzz.Skip(1); if (isFizz && isBuzz) { yield return "FizzBuzz"; } else if (isFizz && !isBuzz) { yield return "Fizz"; } else if (!isFizz && isBuzz) { yield return "Buzz"; } else { yield return i.ToString(); } } } こんな感じのメソッドを作ってみたのですが、複数のIEnumerableを並行して進めながら処理するforeachみたいなのってないのでしょうか? 自前でFizzとBuzzを1つずつ進めてるのがいまいちスマートじゃない気がして、複数のIEnumerableを並行して進める手軽な方法ってないでしょうか? foreach (var i, isFizz, isBuzz in Enumerable.Range(1, max), Fizz(), Buzz()) { とかみたいな雰囲気でまとめて書く方法ってないですか?
- 683 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:12:29 ]
- >>682
ZipWithみたいなのが欲しいということかな? だったら、デフォルトでは存在しない。自作している人ならちらほら居る。
- 684 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:13:24 ]
- うん?
EXEとDBファイルが同じファイルになるのを期待してると思ったんだが。 Accessのイメージって言ってるし。 SQLiteもFirebirdもんなこたないんじゃないの? SQL compact3.5だっておんなじようなもんでそ?
- 685 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:10:49 ]
- サーセン676です。
684さんのおっしゃる「EXEとDBファイルが同じファイル」を期待してました。 DBもMS謹製しか使えないかと思ってましたが、 他のも結構使えるようなので、改めて調べてみます。
- 686 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:36:50 ]
- C#プログラムでで正規表現を使っているのですが、
正規表現中にPerlのように ttp://8-p.info/perl-interpolation/ string hoge = "hogehoge"; Regex r = new Regex(@".*hoge"); //hogehogeが展開される のようにして変数を展開することはできるでしょうか?
- 687 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:46:55 ]
- 普通に
".*" + hoge では駄目な理由は何?
- 688 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:46:56 ]
- 変数を展開って何?
- 689 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:48:21 ]
- ああ、そういうことか。
string.Format かなにかで文字列化してから Regex に食わせればOK。 文字列中に ".*$hoge" みたいに変数入れたければ PowerShell 使えばいいと思う。
- 690 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 01:35:37 ]
- 685です。ありがとうございます。
変数を展開したい理由は何かと問われれば 変数hogeの文字列も外部の関数から取得してくるからです。
- 691 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:56:21 ]
- >>685?ん?
色々カオスってるぞ。 >>686のリンクも行けないぞ。
- 692 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 03:10:51 ]
- AllowsTransparencyをtrueにするとウインドウフレームが表示できなくなってしまうのですが、
System.Windows.Windowで下のSS最前面のウインドウのようにOpacityを使用するにはどうしたらいいのでしょうか? 最前面のウインドウはSystem.Windows.Formsです。 ttp://www.imgup.org/iup662583.png
- 693 名前:デフォルトの名無しさん [2008/08/07(木) 10:52:52 ]
- 質問です。
環境:C#2.0です。 あるファイルパスがあるとして、 同じディレクトリに別のファイルを作りたいとき、 どのようにファイルパスを作ればよいでしょうか。 (パスそのものを作らなくても書き込みできればよいので FileInfoとかでもよいのですが) string path1 = @"C:\xx\yy\aa.txt"; FileInfo file1 = new FileInfo(path1); string path2 = file1.FullName.Replace(file1.Name, "bb.txt"); なんてもの考えましたが完全じゃないですし。 どうやるのが真っ当なやり方でしょうか。 いろいろ調べてみましたがわかりませんでした。 よろしくお願いします。 // javaで言うところの new File(directoryName, filename) なんてのが // あればと思ったんですけど少なくともFileInfoにはなかったので
- 694 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 10:59:02 ]
- Path.GetDirectoryNameとかPath.Combineとか
- 695 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 11:33:51 ]
- ありがとうございます。調べてみます。
- 696 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:20:06 ]
- objectを引数に取る関数とかobjectのプロパティとかってクラスライブラリを見ただけじゃ
何をセットすればいいのか分からない場合が多いんですがどうやって調べればいいんでしょうか? ググって事例を探してるんですが、事例が無いと完全にお手上げです。
- 697 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:23:07 ]
- 千里の道も一歩から始まることを信じよう
それ、わんつーわんつー
- 698 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:26:37 ]
- 確かに.netはobject型を引数に取るとか多いな。JavaでObject型を引数に取るのはあんまり見ないのに。
この辺って何か思想の違いみたいなのがあるん?
- 699 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:32:04 ]
- >>698
Javaはプリミティブ型がObjectを継承してないからじゃないの
- 700 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:36:16 ]
- いざとなったらReflectorで中追っかけてみる
- 701 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:37:41 ]
- >>698
そんなに多いか? 非ジェネリックなコレクション以外あまり思いつかないが…
- 702 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:40:11 ]
- 非ジェネリックコレクションとIComaprableあたりは当然として、
WriteLineやString.Format系、Thread関係のデリゲート、 EventHandlerのsender、ほかなんだっけ。
- 703 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:43:01 ]
- ICloneable.Cloneがそう。共変性がないからobjectを返さないわけには行かない。
- 704 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:45:26 ]
- データソース関係とかobjectに何渡すのかわかりにくくないですか?
標準じゃないけど、nplotってライブラリも何を渡すのか分からなくてちょっと困った。
- 705 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:47:03 ]
- JavaとC#とでそういう差が出そうなGenerics関連の違いって思い浮かばないけどな。
- 706 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 21:51:09 ]
- データバインディングはそうですね。あれはリフレクション使いまくってるから。
- 707 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 00:15:33 ]
- C#とCだったらC#のほうが入門には適しているでしょうか?
- 708 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 00:18:56 ]
- うん
- 709 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 00:20:44 ]
- >>708
ありがとうございます。 それと、勉強するための本を買おうと思っているのですが 有名な物・お勧めの物はあるでしょうか?
- 710 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 00:56:16 ]
- >>709
ネットで十分
- 711 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 00:58:55 ]
- >>709
マジレスすると ufcpp.net/study/csharp/index.html がおすすめ
- 712 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 01:02:11 ]
- >>711
ああ、それは俺もお勧め。
- 713 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 02:15:19 ]
- >>711
読ませていただきます。 ちなみにVC#というソフトでみなさんはプログラムを書かれているんですか?
- 714 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 02:16:28 ]
- うん
- 715 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:05:21 ]
- むしろテキストエディタとWindowsSDKでやってる人がいたら尊敬する
- 716 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:14:34 ]
- 単なるバカだから尊敬できないな
- 717 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:16:32 ]
- .Netが出始めてたころはそれでやってた人もいたようだがな
無料版のIDEも無かったし
- 718 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:21:40 ]
- きちんと楽出来る環境が簡単に整えられるのに
わざわざ意味が無い苦労をする人がいたらそれは馬鹿だけど そう言う環境が簡単には揃わない時代なら仕方ないじゃない
- 719 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:17:43 ]
- 今のVC#はテキストエディタとしても異常に快適だからな
- 720 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:56:00 ]
- プライベートで他のクラスからアクセスする必要のないフィールドって内部クラス化した方が良い?
外部クラス?それとももっとスマートな方法ってある?
- 721 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:06:09 ]
- >>720
そのままプライベートのフィールドで持ってたらあかんの?
- 722 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:13:20 ]
- フィールド==インスタンスの話が何故かクラスの話になるから意味が分からなくなる
- 723 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:44:48 ]
- >>721
それじゃインスタンス1つ分にしかならなくね?
- 724 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:51:40 ]
- 行数多くなるとVisualStudioのロードが遅くなるから分けようかと思ったんだけど、
実行時に無駄にオーバーヘッド生むよね、本末転倒だったね・・・
- 725 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:59:51 ]
- partialだかそんなのなかったっけ?
- 726 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 11:59:03 ]
- VSに負担掛けるほどたくさんの行にフィールドが宣言されてるの?
ロードの時間とか細かいパフォーマンス気にする以前の問題だろそれ さすがに分けるべき
- 727 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:07:16 ]
- 時代はパーシャル!
- 728 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:59:02 ]
- トラックで全国回ってた人だねw
- 729 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 22:45:56 ]
- >724
JITコンパイラの最適化を少しくらい頼ってみたら? 時々例外が起きたときのスタックトレースが妙に抜けてることがあって インライン展開されてる様子がわかるとちょっと嬉しくなるよ。
- 730 名前:デフォルトの名無しさん [2008/08/09(土) 18:42:15 ]
- 簡単なエディタを作っているんですが、
RichTextBoxを使ってて、描画領域を少し右にずらして、その空いた領域に 行番号を描画しています。Graphics.DrawStringです。 当然スクロールされたら行番号を変えなくちゃいけないですが、このとき 再描画する前に前回描画した行番号を消すには、 どんな方法が一番最適なのでしょうか。
- 731 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:56:44 ]
- 背景色で塗りつぶす
- 732 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:22:56 ]
- 趣味でやるぶんにはExpress Editionで十分ですか?
- 733 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:25:03 ]
- 趣味の内容によるかな。いわゆるベータ版マニアだとインストールできないアドインが
多いから十分じゃないかもしれない。
- 734 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:25:51 ]
- >>732
十分。
- 735 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:27:40 ]
- パッケージフェチとしてはやっぱり製品版じゃないと
- 736 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:32:03 ]
- ドMな俺はSDKとメモ帳が最高。
- 737 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:35:41 ]
- 俺なんか仕事で評価版つかってるから大丈夫
- 738 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:36:52 ]
- >>733
何か使えない機能があるということですか >>734 そうですか >>736 頑張ってください
- 739 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:38:12 ]
- >>737
不具合はないですか?
- 740 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:40:25 ]
- silverlight2やSQLServer2008用のアドインはSTD版以上だったかな。
- 741 名前:デフォルトの名無しさん [2008/08/09(土) 20:43:02 ]
- TextBox.Text = str;
とやっているのですが、strが大きいと処理時間遅くなるものなのですか? str.Lengthが4320162だったのですが、10secくらいかかります。 中身のイメージではポインタのコピーとかではなく、実データを コピーしているから遅いのでしょうか? これを早くする方法はないのでしょうか?
- 742 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:44:08 ]
- TextBox使うのやめて、オーナードローにする
- 743 名前:デフォルトの名無しさん [2008/08/09(土) 21:18:00 ]
- 文字列代入の時だけ別スレッドで動かせばいいんですかね?
- 744 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:22:01 ]
- コントロールにはそれを所有しているスレッドからしかアクセスできん
- 745 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:26:41 ]
- >>742
の言ってる事は、 遅いのは文字列のコピーじゃなくて、その文字列の描画に時間が掛かってるんだよ という事
- 746 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:33:15 ]
- 4320162ってヘタしたらXPのソースコードよりデカい気がするんだけど
そんなものTextBoxに表示してどうしろとw ちなみに、RichTextBoxで代替したらあんがいあっさり解決しない?
- 747 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:39:23 ]
- > XPのソースコードよりデカい
またまたご冗談を
- 748 名前:デフォルトの名無しさん [2008/08/10(日) 00:08:05 ]
- >746
RichTextBoxだと7秒くらいでTextBoxで17秒くらいかかります。 バイナリをヘキサで表示してるんですが、大きいものだとこの7秒とかの間 かたまってしまって・・・ >745 TextBox.Text = str; の前と後にStopWatchクラスで処理時間を出してるんですが、 この代入には描画処理も含まれているということでしょうか? RichTextBoxはコントロールで表示されているところの描画のみ してくれるわけではないのでしょうか? >744 コントロールに別スレッドからでもアクセスする方法ってありません でしたっけ?Invokeとか? RichTextBoxには表示したいところだけバイナリを情報を代入してけば いいんですかね?スクロールするたびに出したり消したりするとか?
- 749 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:11:16 ]
- >>748
InvokeはUIスレッドが今やってる仕事を中断させて別の仕事をやらせる関数。 そんなでかいデータ扱うなら横着しないでユーザコントロール書けばいいだろ。
- 750 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:47:50 ]
- >>749
しつこいね君も。 簡単に言うけどかなり面倒だしそれなりに難しいと思うよ。 表示することだけ考えてない?
- 751 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:56:37 ]
- >>750
それならもう勝手にしろよw ヘキサエディタでできあいのコモンコントロール使ってるのあったら教えてね
- 752 名前:デフォルトの名無しさん [2008/08/10(日) 01:03:48 ]
- すいません横着させてくださいっす。新しくユーザーコントロールはきついっす。
RichTextBoxがそういう仕様ならやはりちょびちょび表示ですかねぇ。。。
- 753 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:11:16 ]
- 仮想モードでListViewでもつかえば
- 754 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:30:38 ]
- プログラム板ってさ、低脳ばっかだよね。
OpenGLスレくらいだなマシなのは。
- 755 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:31:29 ]
- OpenGLスレ見てみたがアホばっかりなんだが…
- 756 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:50:58 ]
- >>755
どんなスレ見てるの?
- 757 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 06:43:35 ]
- >>748
TextBox.AppendText()は使ってみた? InvokeRequiredとInvoke, BeginInvokeはUIスレッドにマーシャリングしてくれるメソッド
- 758 名前:デフォルトの名無しさん [2008/08/10(日) 07:23:19 ]
- >757
TextBox.AppendText(str)も同じくらい時間かかりました。 >753 >仮想モードでListView kwsk
- 759 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 08:24:17 ]
- zip内のファイルを実行したい(wav鳴らすとか)のですが、そのためには一時フォルダ等に
ファイルを展開しなければならないのでしょうか? zip内に格納したままあれこれやるってのは不可能なのでしょうか?
- 760 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 08:28:07 ]
- うん
- 761 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 10:40:14 ]
- SharpZipLibでメモリに展開し、Win32APIのwaveOutWriteやDirectSoundに流せばできるんじゃね?
- 762 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 10:41:55 ]
- Streamに展開すればいいんじゃね?
- 763 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 13:56:58 ]
- 質問です
DBからデータを取得し、その構造体を返すクラスを作成しています。 私個人としては、datasetの形でかえしたいと思っています。 しかし、速度の問題から、 listを返すようになっています。 datasetで値のやりとりをするのと、<list>でやりとりをするので そこまで速度やパフォーマンス、メモリの負担などはかわるのでしょうか? ただのgetsetのプロパティのついたクラスのarraylistを、データとして使うほうが 早いのでしょうか? 僕としては、ここは.NETらしくdatasetを使いたいのですが。
- 764 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:03:31 ]
- とりあえず測ってみればいいんじゃないかな
- 765 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:06:39 ]
- 構造体返すんだったらデータセットよりも素直にコレクションで返してくれた方が
使う側としては便利だと思うけど
- 766 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:13:54 ]
- >>758
kwskじゃなくてまずググれよ
- 767 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:14:57 ]
- .NETの構造体の意味を誤解している可能性大
- 768 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:14:59 ]
- 代入では無くて文字列の描画に時間がかかってるなら、
ユーザードロウしない限り改善不可能じゃないか?
- 769 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:51:36 ]
- >>765
そうでしょうか。 たとえば、DataSet(型付Datasetという意味です)でデータを持つか 構造体でデータを持つか そのメリットデメリットってそもそもなんなんでしょうか datasetだと、複数テーブルをセットして、 リレーション張ったり、 うけとった側で、フィルターかけたり、nullチェック等のメソッドが用意されていたり デザイナでデザインできたりするところだと思うのですが 構造体にすると、なんか.NET的な組み方じゃなくなってるような気もしたりしなかったり 僕が間違っていますか。
- 770 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 18:05:43 ]
- 時と場合による
- 771 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 18:25:37 ]
- とりあえず「構造体」というものについて勘違いしてるのはよくわかった
クラスじゃなくてほんとに構造体で返すようなデータならデータセットで返すなんてありえない
- 772 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:53:50 ]
- 構造体って値で返すのか
- 773 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 22:11:58 ]
- >>771
すいません、 えっとarrayistを返すか、datasetを返すかということでした。すいません。
- 774 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 01:12:06 ]
- 作り手はdatasetのほうがいいだろうさ
使う側はどういう用途なの? それがわからんと良いとも悪いともいえん
- 775 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 12:33:44 ]
- MSDNライブラリには
SpinWait のコードの実行は、 複数のプロセッサが搭載されているコンピュータで発生する可能性のある問題を回避するように設計されています。 たとえば、Hyper-Threading技術を使用した複数の Intelプロセッサが搭載されているコンピュータで、 SpinWait は、特定の状況で、利用できるプロセッサ リソースがなくなることを回避します。 とあるんですが、マルチコアCPUではThread.SleepよりThread.SipnWaitを使った方が良いのでしょうか?
- 776 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 12:42:36 ]
- ケースバイケース
- 777 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 15:32:52 ]
- >>775
ていうかその説明は Sleep 関係ない。 Sleep と比較してどうこうじゃなくこのメソッドの実装は HT やマルチコア みたいな環境でも問題起こりませんよっつー意味 なんでそんな注意書きがあるのかはスピンウェイト、スピンロック あたりでググってまずそのメソッドが何するのか分かれ。 ついでに Sleep との違いも
- 778 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 16:12:16 ]
- マルチコアだけでなくハイパースレッディング環境でも
一応うまく動くようになってるよってことじゃないの?
- 779 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 16:16:00 ]
- マルチコアやハイパースレッディングみたいな環境でも問題起こらないって…
普通マルチコアやハイパースレッディング環境でしか使わないだろ でハイパースレッディングの場合も一応うまく動くようになってるよってことだろ? 実装によっちゃ無意味にCPU目一杯ぶん回すだけで意味ない可能性もあるから。
- 780 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 16:19:36 ]
- コードを見ようと思ったがネイティブに飛んでてわからなかった。
予想できることは一定時間ごとにスレッドを譲る仕掛けか、 一定時間でSleepに変更するかといったところだろう。 1CPUの場合はすぐさまスイッチしないと意味が無いし、 2CPU以上ならある程度スピンさせてても大丈夫だろう。 HTの場合はその中間くらいで手打ちしてるんじゃなかろうか。
- 781 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:44:20 ]
- スピンはスレッド中断には移行しない。
だから自分でバックオフを持たなきゃならない。 まあそもそも長時間かかる可能性がないとこだけにしとくのが無難だけど。 ついでに大抵シングルコア環境では使わない。 HTの場合は処理なし命令?でスピンして、有効な処理ではないことが CPUに分かるように実装されてるはず。
- 782 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 18:42:10 ]
- いやシングルコアでは使わないって言うか使うよ。高精度な
というかスイッチしない待ちのとき使うものでコア数関係ない あえて言えば Win 上で動くからか ちなみに HT の場合の話だがシェアするからビジーさせると それが埋め尽くしちゃってパフォーマンスが極端に低下する。 だから PAUSE 命令が追加されててスピンにそれを使う必要が あるんだがそれ使ってますよみたいな意
- 783 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:38:13 ]
- シングルコアでスイッチしない待ちをやること自体が少ないんじゃないの?
- 784 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:40:27 ]
- あ、ここでのシングルコアはHTは含んでない。
- 785 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:13:56 ]
- >>783
内部的でいいんなら Moniter やらの同期機構が内部で使ってる。 アプリレベルだと例えば単純にスイッチは精度が悪い(Sleep は「最低」 指定時間待つ API)ので timeBeginPeriod(or MMCSS)でスケジューラ いじって Sleep とスピンウェイトのあわせ技がいい。 機会や直で使うジャンルが少ないのは同意。コア周り、メディア、ゲーム 系しか知らん。 というか一定時間(クロック)待つようなメソッドの使い方(ぶっちゃけタイマ みたいなもんだ)がマルチコアしか使わないになんでなるんだよという話。 ぜんぜん別やん。 もしかしてマルチコアじゃなくマルチスレッドっていう話か? …それはそれとして思い出したんだが iterations を現実時間から計算する 方法知っている人いたりしない?
- 786 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:55:36 ]
- いや、一般にメディア、ゲーム系なんていう特殊な用途以外じゃ
まず使う機会がないって感覚だった。 Winで一定時間(クロック)待つような使い方自体が特殊用途なイメージだったわ。 ところでMonitorやらってシングル環境でもSpinWaitしとんのかね??
- 787 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:15:43 ]
- >>786
モニタの場合は基本的に他のスレッドからの開放待ちだから1CPUではスレッドを譲らないと意味が無い。 マルチCPUの場合は最初はスピンで待って、一定時間越えたらSleep系のWaitに変える。 1CPUでスピンをやるとしたら、微妙なタイミングのIO制御や 他のディバイスからの割り込み待ちといったところで普通はディバイスドライバの仕事。 ゲームとかビデオとかそういうのが絡まない限り1CPUでビジーループはありえない。
- 788 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:28:21 ]
- だよねってことが聞きたかった。
単にシングル環境での >内部的でいいんなら Moniter やらの同期機構が内部で使ってる。 について疑問だっただけ。
- 789 名前:デフォルトの名無しさん [2008/08/12(火) 14:28:25 ]
- C#のおもしろい、本・ホームページ教えてけれ。
今、GUIをソースコードからうってcscでコンパイルしてるんだけど、おもしろい。 なんでもいいから、教えてけれ。
- 790 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 15:19:44 ]
- ちょっとGUIでアプリ(簡単な物)を作ろうと思ったのですが
C+APIはもう嫌になったので(殴 新たに何か言語を勉強すべくC#に目をつけたのですが、 ・GUIアプリ製作のためにC#を学ぶ この考えはまずいでしょうか?(もしくは他にもっと良いものがある?) (プログラミングのスキルはCをそこそこ,JAVAは超初心者 です。)
- 791 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 15:25:51 ]
- いいと思うよ
- 792 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 15:30:00 ]
- >>789
猫でもわかるは知ってるよね? ttp://www.kumei.ne.jp/
- 793 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 16:07:25 ]
- >>790
全然良い。 逆に言うと画像処理とか線形代数計算ならわざわざC#を選ぶ必要性がないしね。 イベントと継承が分かってくれば単純なGUIアプリならすぐ作れるようになるよ。 頑張れ。
- 794 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 16:24:17 ]
- JavaだろうがC#だろうがマルチスレッドになってからが本番だと思う
- 795 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 16:44:19 ]
- >>789
Google 先生の評価に従ってみるのもいいと思う。
- 796 名前:789 mailto:sage [2008/08/12(火) 18:44:30 ]
- >>792
猫はC#編もあるんだ。昔、WinAPIのときちょっと参考にしていたよ。 やってみるよ。さんくす! >>795 Google先生でググってみます。色々あってどれがいいか見定めなきゃいかんけど、 がんばるよ。ありがとう。
- 797 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:56:08 ]
- MicrosoftPressのプログラミング.NET Frameworkが良かった
デリゲートやガベージコレクション、非同期処理などについてとても詳しい解説があるよ
- 798 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 09:50:20 ]
- DataGridViewを利用した自作カレンダーを作ったんだが、
これを複数のフォームで使いたいのね。 そういう時、クラスライブラリを作るのか、プロジェクトにクラス追加するのか、 どっちがいいの? てか、プロジェクトに追加するクラスって、どういう時に使うの?
|

|