実際テンプレって今まであったの?
確認した。58まではあった。59でどっかのアホが勝手に消した
おつおつ
貼るならリンク更新しろよアホ
ファイルに関連付けられた文字列等を取得するにはどうしたらいいんでしょうか? エクスプローラーのようにexeならアプリケーションとかdllならアプリケーション拡張とかicoならアイコンとかです。
あれっ、自分で作ったUserControlを部品として Form上にコントロールとして配置するのってどうやるんでしたっけ。 ツールボックスのリストに表示されないし、 Form1.Designers.csに手書きで入力してもドキュメントアウトラインに表示されません。 ・Visual Studio 2010 ・.NET Framework 2.0 ・WinForms対象 UserControlのデザイン自体はデザイナ上で問題なくできるんですが。
14 :
デフォルトの名無しさん :2010/11/15(月) 18:28:12
>>13 部品作ってしまえば確か部品が並んでるところの一番上に紫色のギアみたいな
アイコンででてこなかったっけ?
まあでてなけりゃ一度リビルドでもすれば登録してくれるはず
>>14 ソリューションごとリビルドしましたが、出てこないです。
ツールボックスのリセットも実行しました。
16 :
デフォルトの名無しさん :2010/11/15(月) 20:12:01
ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
17 :
デフォルトの名無しさん :2010/11/15(月) 20:21:31
>>15 プロジェクトの参照設定でUserControlを含むプロジェクトを追加すればいいんじゃね?
オプションのデザイナのところに設定項目あるよ
19 :
デフォルトの名無しさん :2010/11/16(火) 00:58:21
すんません、.NETは2.0です。
20 :
デフォルトの名無しさん :2010/11/16(火) 00:59:58
.netは関係ないよ IDEのバージョンでデフォルトの認識動作の違いとかあるんじゃないの?
21 :
デフォルトの名無しさん :2010/11/16(火) 01:01:21
あら、さっきの投稿が無い(笑) すいません、質問させてください。 Datasetの取得中、あんまり長いものは途中でキャンセルしたいんですけどうまいやり方が浮かびません... マルチスレッドは少し調べました。メインでタイマー、サブスレッドにて取得処理。 しかし、取得処理自体はオラクルコマンドの処理1行で済んでしまうので、Volatileのフラグをたてて中断、のようなキレイな終わり方ができません。 以下うろ覚えのソースです。 取得処理をスレッドプールのキューに追加 System.Threading.ThreadPool.QueueUserWorkItem( New System.Threading.WaitCallback(取得処理),入出力用クラス) 0.1秒ずつカウントして、結果のデータセットのテーブルカウントがあればリターン for(int time =0; time<=5000 ;time +=100 { Thread.sleep(100) if(入出力クラス.dataset.tables.count != 0) { 取得処理で使用しているDBクラスをdispose return 入出力クラス.dataset } } ============================ 5秒以上経つようならどうしよう?? ============================
22 :
デフォルトの名無しさん :2010/11/16(火) 01:02:33
取得処理自体はプログラム共通のDBクラスで dbAccess.getDataSet( sql , params ) のみのようなものであとはトライキャッチとかファイナリーにディスポーズ書いてたりするだけです。 バックグラウンドで動いているので、5秒以上経つなら〜のところにエラーのダイアログとdispose書いてうまく行ってるかと思いきや、ThreadのIsAliiveがtrueだったので後ろでまだ動いてる気がします... というかそもそもテーブルカウントで判定で良いのかな? アボート以外でなにかよい案無いでしょうか。 環境 Windows XP SP3 Oracle 10g Visual Studio 2005 .NET 2.0
TableAdapterなりの取得するところにタイムアウト設定しろ LINQならトランザクション宣言してそこで設定しろ
>>18 ???
オプションダイアログに『Windows フォーム デザイナー』の項目はありますが、
これのどこをいじればいいんでしょう?
>>17 exeと同じプロジェクトでUserControlを作っているのに、
どうやってプロジェクト参照しろと?
>>18 AutoToolboxPopulateをTrueにして、
ツールボックスのリセットを行ったら表示された!
Falseにしてリセットにしたらまた表示されなくなった!
こんなところで表示状態が切り替わるなんて、わけわからなさすぎる……。
ともあれ、どうもありがとうございます。
27 :
デフォルトの名無しさん :2010/11/16(火) 12:16:26
ぴんヴぉけより向こう側の話はスレチ
Processで実行中にダイアログだしたいんですが、 ApartmentStateはどこに設定すればいいんでしょうか? それらしいメンバはみつからんのですが・・・
ThreadじゃなくProcessなの? だったら起動するexeで設定する。
Dod窓のアプリを外部で起動させてます。 その後にダイアログをだそうとしてますが例外が発生してしまうんですよね・・・ Threadで外部アプリ起動させたりできるんでしょうか? 検索しても見つかりませんでした・・・
しらんがな。最低限のコードくらい晒せよ。
>>31 外部のアプリは関係なくて、
別のスレッドからアプリ本体のUI操作をやろうとしたんじゃね。
Windowを作ったスレッドじゃないとUI操作は出来ないよ。
STAThreadAttributeとかは?
35 :
27 :2010/11/16(火) 22:32:21
>>28 ・・・ああ、P/Invokeのことだったんですね>ぴんヴぉけ
失礼、ちょっと意味が分かりませんでした。
その後、少し調べてみたのですが
http://bbs.wankuma.com/index.cgi?mode=al2&namber=7934&KLOG=19 >> >DllImport("USER32.dll")を使用し
>> という前提だったので32bitでいいのかと思っていましたが、XXX32.dllでも64bitになる可能性があるのでしょうか?
>ありますよ。
>64bit Windows でも User32.dll は User32.dll というファイル名です。(すごくイヤだけど)
ということでいいのでしょうか?
もちろん、こちらの企図した動作をするか、というのはまったくの別問題ですが。
やってから質問しような。
>・・・ああ、P/Invokeのことだったんですね>ぴんヴぉけ これ俺も分かんなかった そういうことか
38 :
デフォルトの名無しさん :2010/11/16(火) 22:39:54
ピンボケって何の話ですか?
ぴんぼけどっとねっと
非同期I/Oでちょっと質問 CallBack内でEndRead()していて、次のバッファ読み開始は別スレッドで行っている そして非同期完了待ちはAsyncWaitHandle.WaitOne()でしてるんだけども どうもCallBack呼ばれた瞬間に待機解除されてるぽい EndRead()が呼ばれるまで確実に待つ方法はないですか?
>>40 ちょいと具体的な話見えない。
それっぽいコード出せない?
こういう流れになって欲しいけど 1.BeginRead() 2.AsyncWaitHandle.WaitOne() 3.BeginReadのコールバック 4.EndRead() 5.AsyncWaitHandle.WaitOne()の待機解除 実際はこうなってしまって困ってるってこと? 1.BeginRead() 2.AsyncWaitHandle.WaitOne() 3.BeginReadのコールバック 4.AsyncWaitHandle.WaitOne()の待機解除 5.EndRead()
Task使えば?
コールバックなんかnullにしておいて、WaitOne側でEndReadしてやればいい。
45 :
40 :2010/11/18(木) 14:44:01
>>42 その通りです
>>43 .net3.5なのです
>>44 設計が変わっちゃうのでなるべく避けたいところです
それしか無いならしょうがないですが
>>45 非同期IOなんて定番な処理の一つなんだから、
調べれば実装例くらい出てくるでしょ。
他の実装を提示されて設計を変えないといけないって、
設計自体が間違ってたんじゃないかとは考えないのかね。
こないだ出た非同期拡張(最終的にC# 5.0に入る予定の機能の先行版)ちょっと触ってみたところ、 もう昔の書き方に戻れそうになくなるくらい非同期IO処理が楽なんだけど。
まじですか、そいつは楽しみだ。 つーかもう5.0なのかw
なるほどyieldみたいな感じなのね 似たような言語内DSLみたいなものが増えてくのは気持ち悪いなあ うまいことyieldの拡張みたいにして統合できないのかな
シリアルポートならDataReceived使えばいいしなぁ
intよりもInt32で宣言した方がVSの色分けが統一されて綺麗 イベントメソッドのシグネチャも、object senderではなくてObject senderだと統一される お前らどうしてる?
特に気にせず他の言語の癖でキーワードの方だけ使ってる stringとobjectとdecimal以外の組み込み型は実際には特別扱いされてるから Int32とか書く方が不自然な気もする
53 :
52 :2010/11/18(木) 17:53:31
誤解されそうだから補足しとくと、intとSystem.Int32は全く同じ意味だよ でもSystem.Int32型はコンパイラに特別扱いされてCILの組み込み型になる
>>51 intはAuto CPUでビルドしたときに64ビットになるから扱いが変わってくる。
……と言いたかったんだがCLRはC++とは違うから自信がなくなってきた。
詳しい人、頼む。
俺もIntだとサイズが不安だから、Int32使ってる Intが8Bitな時代を知ってるオッサンだからかもだが
64bitでもintは32bit
>>58 本当にそう思う
もう640KB制限は嫌じゃー
int=8bitの時代を知ってるというより 最近の技術情報を勉強してないだけ 知らないだけ
?
!
#
>>56 ナイストラウマ。
でも、いまどき、JavaもC#もintのサイズは仕様として32ビットに固定されてる。
Cに戻らない限りはそのトラウマは忘れていい。
mov ax, ds:[si] ですね。わかります。
rep cmpsb
TaskとThreadの使い分けってどうすればいいの? IsBackgroundが無かったり、Disposeが必要だったり、Taskのメリットがよくわかりませぬ。 あとTaskは複数走らせた時に開始がやたら遅いのが気になる。
基本は全部 Task で OK。 Thread はもはや生で使うものじゃない。
質問:イベントプロパティに登録された、デリゲートの複製を行いたいのですが、どうやって記述すればいいのでしょうか。
環境: .NET Framework 4.0
サンプルコード:
http://ideone.com/lTx2v あるイベントを実装させるために、IHostインターフェイスを定義してます。
そのIHostインターフェイスを実装する、Hoge、Bogeクラスがあり、あるタイミングでイベントを発生させます。
Parentクラスは、そのHoge、Bogeクラスを内包し、ある状態を元に、Hoge、Bogeクラスのインスタンスを切り替えながら処理を行います。
ProgramクラスでParentクラスのインスタンスを作成し、処理したいNoticeイベントのデリゲートを登録します。
Programクラスからは、Hoge、Bogeクラスは見せたくなく、Parentクラスを通して呼び出したいのです。
これって、一旦、Hoge、BogeクラスのイベントをParentクラス内で受けて、呼びなおすしかないのでしょうか。
シンプルに代入できたら楽なのですが・・・。
>>70 うおぉ(><
目からうろこです・・・。
なるほど。
クラス外からイベントプロパティを触ろうとしてるのが間違いだったのですね;
とりあえず、イベントを匿名メソッドで一回受けて、呼びなおす方法で回避していたのですが、これですっきりしました。
本当に、ありがとうございます。
メタ構文変数のhoge、huga、piyoはよくみるけどbogeは初めてみたw
Piyoちゃん、かわいいです ><
>>72 あはは^^;
適当に名前付けるときに、「ほげほげ」は思いついたんだけど、「もう一つなんだっけ?」って思い出せなくて、
「ge」をそろえて思わずつけちゃったw
次、質問することがあったらpigeにしますかね(笑)
>>75 Hageは深刻なエラーを生み出す可能性があるので
上司が目を通すコードには絶対に使わないように
>>75 Hageの扱いはデリゲートなので、Kamiを複製するときは、注意ですね。
山田くーん!座布団全部持って行きなさい!
>>69 >これって、一旦、Hoge、BogeクラスのイベントをParentクラス内で受けて、呼びなおすしかないのでしょうか。
そのほうが自然じゃないかな。
Parent側で複数イベントに対応して構わないならすこぶるシンプルになる。
private IHost Host {
get { return this._host; }
set {
if (_host != null) _host.Notice -= _host_Notice;
_host = value;
if (_host != null) _host.Notice += _host_Notice;
}
}
private void _host_Notice(object sender, EventArgs ev) {
EventHandler eh = Notice;
if (eh != null) eh(sender, ev);
}
public event EventHandler Notice;
>>78 そうそう、まさにその「_host_Notice」をさらに匿名メソッドで、
「if (_host != null) _host.Notice += (object sender, EventArgs ev) => { 省略 }」
な感じで書いてたのが私の回避コードでした。
たぶん
>>78 さんのやり方のほうが、わかりやすくていいんですよね。
Parentクラスからもイベント呼び出しする可能性があるなら、この実装でもよかったんですが、
今回のは、完全に中身の処理をHoge、Bogeクラスが担当して、Parentクラスは切り替えのみの担当で、
完全に器の状態だったので、イベントをリレーするような感じにするのも「なんだかなー」と思ったのがきっかけでした。
まあ、あとは、「できそうでできないけど、どうなのよ!」という知的探究心というか、やり方があるなら知りたかったという感じで・・・。
想像してた解決方法が、登録されたデリゲートの列挙を取得し、foreachっぽい処理で再登録するようなものをイメージしてたので、
リフレクションあたりとかも、調べてたんですよね・・・。
なので、
>>70 さんの方法は、まさに驚きでした。
C#で自分で作ったクラスのオブジェクトをBinaryFormatterで シリアライズして保存したファイルを, そのクラスがない環境で読みだすにはどうすればいいでしょうか。 BinaryFormatterのシリアル化の仕様とかどこかで公開されてますか?
見たことないなぁ。 それはやっぱXMLシリアライズした方が。 通信路をZIP圧縮でもしとけばXMLでもそうたいしたサイズにならないし。
>>80 それはきつそうだなぁ。
>>81 さんの言うとおり、普通にXMLシリアライズしたほうがいいとおもう。
吐き出したXMLファイルを圧縮するなら、LZMA SDKがお勧め。いわゆる7z形式。
http://sevenzip.sourceforge.jp/sdk.html C#のライブラリでStreamに書き込めば、かなりサイズが小さくなるよ。
ライセンスもパブリックドメインだから、自由に使える。
もっと気軽に使いたいならSevenZipSharp、SevenZipLibなんてのもあるよ。
83 :
デフォルトの名無しさん :2010/11/20(土) 13:44:13
>>82 単一のファイルを手っ取り早く圧縮・解凍するんだったら、gzipかdeflateならよそから持ってきたDLLなんか要らない。
ただgzipおよびdeflateはストリームを圧縮する規格で、2個以上のファイルを一つにまとめるとかいった事が出来な
いので単一のバイトストリームを圧縮することしかできません。
XmlSerializer serializer = new XmlSerializer(typeof(Hoge));
using (FileStream fOut = File.OpenWrite(@"C:\test.xml.gz"))
{
using (var gzs = new System.IO.Compression.GZipStream(fOut, System.IO.Compression.CompressionMode.Compress))
{
serializer.Serialize(gzs, new Hoge());
gzs.Flush();
}
}
HTTPでシリアライズしたデータを伝送するならレスポンスヘッダに「Content-Encoding: gzip」
を仕込むことで、たいていのクライアントはgzipデータを展開しながら読み込むことが出来ます。
(HTTPリクエストヘッダ中に「Accept-Encoding: gzip, deflate」とか入れてくるブラウザ等が対応。
少なくともIE4以上、Firefox1以上で対応。パソコン用ブラウザでgzip未対応なものはもう存在しない)
2chのdatファイルとかも端末がgzip対応していればgzipだったかdeflateで圧縮したデータを送
信してくる。
84 :
80 :2010/11/20(土) 14:02:37
ありがとうございます。 わかりました,BinaryFormatterの読み出しは厳しそうですか。 それで質問が変わるのですが, 循環参照を含むオブジェクトグラフを XML形式にSerializeできるライブラリとかないでしょうか。 BinaryFormatterなら循環参照OKなのですが .NET Frameworkに入ってるXML関係の機能は 見たところ循環参照OKなのがなさそうなので・・・。 JavaだとSimpleとか循環参照OKなXMLシリアライザがあるのですが そういう感じのがあったらうれしいです。
そうだねえ、GZipStreamなんてのもあるね。
こっちは7z形式の圧縮サイズが異常に小さくなるから、お勧めしただけなんだ。
それにLZMA SDKはソースに組み込めるからDLLにする必要もない。プロジェクトにフォルダ追加すれば使える。
それに、その用途ならその選択肢はベストなのはわかる。
が。。しかし、
>>80 の話のどこからHTTPで伝送する話が出てきたんだ・・・。
どういう要件で使ってるのか、詳細がわからないのにすごい限定してないかい?
まあ、それいうと、圧縮の話は
>>81 の話に便乗しただけだけども・・・。
まあ、そもそも「こんな方法もあるよ」っていう提案だから、そんなに「つんけん」しないでねん。
外部DLLを使うか使わないかは、
>>80 さんの判断だよ。
>>84 NetDataContractSerializerは?
87 :
80 :2010/11/20(土) 14:45:59
>>86 NetDataContractSerializer,DataContractSerializerで
循環参照もジェネリック型もOKそうな感じなので調べてみます。
どうもでした。
88 :
80 :2010/11/20(土) 15:03:02
NetDataContractSerializerは使いやすい代わりに なかなか猛烈なXMLを吐きますね。 紹介していただいたzip圧縮ライブラリも検討しつつ, なんとかうまいこといきそうです。 ありがとうございました。
Moo烈
.Net 標準のは圧縮率が悪すぎて使い物にならない。 ファイルによっては2倍以上に膨れあがることもあるからダメダメ。
>>90 ,91
.NET標準の範囲となるとgzip/deflateによるものになると思うが、
何がそんなに圧縮率が悪いと言うんだ?
tar.gzと同程度になるはずだが。
ファイルパスの羅列みたいな重複が極端に大きいはずのデータでも80%くらいだったりとかしたな どうせ実装のスライド窓が小さいとかそんなんだと思う
ちなみにGZipStreamの圧縮レベルは1で固定
[TypeConverter(typeof(ExpandableObjectConverter))]の属性定義なしの オブジェクトをプロパティグリッドで展開したいのですが、 そのための設定またはサードパーティ製のプロパティグリッド をご存じないでしょうか。
>>95 属性を外から追加するのはTypeDescriptorのAddAttributesとかAddProviderあたりでなんとか
97 :
デフォルトの名無しさん :2010/11/21(日) 12:33:57
【質問】C#の話じゃないかもしれないけど System.Windows.Forms.ListView を仮想モードで使うとShiftキー使った選択で例外が発生するんですけど これってバグですか? 1個選択状態からShift+右矢印で2個選択にして、もう一回Shift+左矢印で1個選択にしようとすると ArgumentException(startIndex 値に endIndex 値より大きい値を指定することはできません。) が発生するんですが。ちなみにVirtualMode=falseだと発生しません。CtlrキーでもOK テストコードはこんな感じです。 private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e){ e.Item = new ListViewItem(e.ItemIndex.ToString("D5")); }
毎回newするんじゃなくてDictionaryかなんかにキャッシュしたらどうなるの? MSDNのサンプルじゃそうやってるようだけど
99 :
97 :2010/11/21(日) 13:43:48
ありがとうございます。 配列から取り出してもやっぱり出ます。 public Form1() { InitializeComponent(); this.myCache = new ListViewItem[5]; for (int i = 0; i < 5; i++) { this.myCache[i] = new ListViewItem(i.ToString("D5")); } this.listView1.VirtualListSize = 5; } private ListViewItem[] myCache; private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) { e.Item = myCache[e.ItemIndex]; }
>>99 そもそも本当に
>>97 の行を実行した時に例外が起こるの?
絶対違うでしょ
選択関連で何かしてない? VirtualモードのときはSelectedItems使えないよ。 SelectedIndexChangedイベとSelectedIndices使って全部自分でやる。
うん!
103 :
97 :2010/11/22(月) 00:11:12
すいません。急用ができて落ちてました。 他の方の環境では再現されないとなるとうちの環境特有の現象なんでしょうかね。 ちなみにテストコードではセレクト系のイベントハンドラは書いていません。 もうちょっと調べてみますです。。。
StyleCop使っててSuppressMessageしたいんだけど、 引数がくそ長くてうざいからconstにしたら抑制できませんでした。 何か良い方法はないでしょうか・
105 :
デフォルトの名無しさん :2010/11/23(火) 03:09:16
C#4.0ってどうなってるの?もうつかえるの?
VS2010や.NET4と一緒にリリースされてだいぶ前から使える
CompactFrameworkではISerializableがないのですが、例えば画像など XmlSerializerで扱えない(ですよね?)クラスは どうやってシリアライズするのでしょうか?
自分で適当にバイナリ化するか CF向けシリアライザライブラリをどっかから拾ってくるか
単純に画像をシリアル化するならImage.Saveでいいじゃん。 画像を含むクラスをシリアル化したいなら OnSerializingAttributeを指定したメソッド内で、 画像だけ別ファイルに保存、パスを記録しておく。 そんでデシリアライズの時にOnDeserializedAttributeを 指定したメソッド内で、パスから画像を復元。 ファイル分けたくないならImage.Save(Stream)あたりを使ってうまいことやればいい。
>>109 OnSerializing以前にそもそもBinaryFormatterもSoapFormatterも無いらしいぞ
XmlSerializerでシリアライズの調整するならIXmlSerializableかね
細かいことやりだすとわかるがCFは地獄 色々試行錯誤するも最後には非.netで適当に書いてP/Invokeが速いことに気づく
質問です。 大きいファイル(10MB程度)の最初の1024byteと最後の1024byteをそれぞれbyte型配列bufs1とbufs2に格納したいと考えています。 現在以下のようなコードを書いていますが、最後から1024byteを取得する方法が分かりません。 どのようにするのが一番いいんでしょうか?よろしくお願いします。 // ここからコード FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] bufs1; byte[] bufs2; bufs1 = br.ReadBytes(1024); // ここまでコード
113 :
デフォルトの名無しさん :2010/11/23(火) 18:42:53
>>112 ファイルサイズを事前に求める必要があるかもしれないけど
br.Read
で位置とサイズ指定をして読み込めるね
読み込んだバッファと、その一つ前のやつを持っておいて、 1024バイト分切り取ればいい。 って、どうみても初心者ネタだろ。
>>112 ストリームの最後から1024バイト手前にSeekするだけ。
>>113 こんなに早く回答が得られるとは思っていませんでした。
ありがとうございました。
これでいけるか? // ここからコード string fullPath = ""; FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] bufs1; byte[] bufs2; bufs1 = br.ReadBytes(1024); fs.Seek(1024, SeekOrigin.End); bufs2 = br.ReadBytes(1024); // ここまでコード
ああ >string fullPath = ""; これは忘れてくれ こっちで見る際に入れたダミーだ
いつも思うのだがBinaryReaderって存在意義を見いだせない 直接Stream.Read呼び出せば十分
>>117 fs.Seek(-1024, SeekOrigin.End);
でいけました!
皆さんありがとうございました。次からは初心者スレに行きたいと思います。すいませんでした。
おう、気にすんな
122 :
デフォルトの名無しさん :2010/11/23(火) 22:04:01
答えてるじゃん
馬鹿には見えないんです
125 :
デフォルトの名無しさん :2010/11/24(水) 00:22:01
ありがとうございました。
>>119 バイナリファイルからCの構造体を読むときには使うでしょ
ポインタ使って構造体にキャストしてもいいけど、それが嫌なら
BinaryReaderでフィールドを一つずつ読むしかない
自分でbyte配列に読み込んでBitConverterで変換してもいいけど
BinaryReaderの再発明になるだけ
127 :
デフォルトの名無しさん :2010/11/24(水) 12:06:16
C# でDirectShow使うなら今って何が主流でしょ? 一昔前まではDirectShow.NETだったと記憶していますが… やりたいことはUSBカメラの画像をBitMapオブジェクトに落とす事
>>127 そういう用途ならむしろOpenCLの方が向いてるかもだけどな。
DirectShow.NET以外の選択肢があるのか?
オレはPDSのDShowNETを使ってるが、コードが古いので色々改修している。
作者に連絡をとってみたが、もう興味はない(からPDSにしている)と蹴られたw
OpenCVだろ
カメラの取り込み程度ならOpenCVでいいな
OpenCV調べてみたら結構機能が豊富 ちょっと掘り下げてみることに・・・ サンクスです。
Silverlight4のOOBでよくね USBカメラの利用は超簡単だよ
OpenCVだった。恥ずかしい……。 みんなありがと。
どちらかというと.netの話になると思いますが・・・。 C#から使える組み込みDBで、どのような選択肢があるでしょう? とりあえず調べた限りでは ・ACE(Access Database Engine) ・SQL Server Compact 3.5 などというモノがありますが、他に選択肢があれば予め確認しておきたいのです。条件としては、 (1)ターゲットはWindowsのみ (2)MByteのblobが扱えること (3)GByteのデータ量で破綻しないこと →画像データを扱うためです。レコード数はコミコミで精々五桁ですが、総量は大きいです。 (4)インストールが容易であること。 →「完全組み込み、データファイルを配布するだけでOK」が理想ですね。以下、 「XCOPYでOK」→優 「DLLのインストールが必要」→良 「別途インストールが必要」→パラメータを付加してのサイレントインストールならぎりぎり可 というところです。(3)があるので、SQL Server Expressは考えていません。 JavaならHSQLDBやH2 Database Engine、SQLiteという選択肢がありますが、C#には上記二つ以外に何かあるでしょうか?
>>134 SQLiteはまんま使えるよ。暗号化機能のおまけ付き。
4GB越えもライブラリとしてはサポートされるが、
ファイルシステム側の制限に引っかかる場合はある。
137 :
134 :2010/11/29(月) 20:29:10
>>135 >>136 ご紹介ありがとうございます。検索してみたところ、結構皆さん使っているようですね>SQLite On C#
ADO.NET 3.5 Entity Frameworkにも対応しているようですね。4.0以前では今ひとつ評判が悪いようですが・・・。
まぁ、今回はそれほど大きなアプリケーションではないので(JavaではDbUtils使う程度のモノですw)どれを使うにしろ、自前で簡単なO/Rマッパを実装するつもりです。
では、SQL Server CompactかSQLiteのどちらか、という感じでしょうかね?
SQLiteはVSで扱ってると「オブジェクト参照がオブジェクト インスタンスに設定されていません」って出てくるのが何時までたっても解決できない なぜかそれでも操作はできるしウザイだけで支障はないけど
こわw
>>137 SQLiteはFirefox(多分ver3以上)の履歴データとか、SONYのwalkmanを管理する
アプリ(x-Appli)が使ってるようです。商用でも稼働実績はありますが・・・
一昔前の不安定だったFirefoxでは、ブラウザがハングしたときのタイミング次第
で*.sqliteファイルが壊れてしまい、DBが入っているファイルを消さないとFirefoxが
起動しなくなる事が時々ありました。
SONYのやつは音楽データはファイルとして管理し、アルバムの構成情報とか
だけDBに保持しているようです。
消えたら大騒ぎになるデータをsqliteだけに保存するのはDANGERだと思います。
GoogleChromeなんかも使ってるぞ
俺も使ってるよ
>>140 Firefoxがタコなだけだろ。
SQLiteは十分枯れてるよ。
Linuxだとディストリ本体のメタデータの管理で使ってるくらいなんだから。
ちなみにSkypeのメタデータはほとんどSQLiteで管理されてて、
テキストで書き出す方法が基本的にはない。
まあ、FirefoxというよりFlashのハングが原因だったようだけどね。 Firefox3.5〜3.6くらいからプラグインを別プロセスで走らせるように してFlashが死んでもFirefoxは倒れなくなった。
アプリが不正終了すると壊れるなんて、SQLiteってトランザクションできないんですか。 恐ろしいですね。
そうかもね
DBソフトはともかく、画像はファイルシステムに保存してDBはインデックス情報だけ ってわけにはいかないの? DBが壊れてもある程度復旧できるし、画像ファイルが見えた方がやりやすくない?
>>144 プラグインコンテナー自体がバグの温床になってる件
>>147 賛成だな。画像さえDBに保存しなければ、DBファイルはそれほど大きくならないだろう。
そうするとアプリ起動時にDBのコピーを作って、稼働中はコピーDBを編集。
アプリ正常終了時に編集されたDBファイルをリネームする形で書き戻す。
ファイルのリネームは一瞬だからアプリが変なタイミングで死んでも(KILLされても)
DBが完全に壊れることはない。
画像自体がシステムにとって重要なデータなら 画像にもASIDなトランザクションきかせたいやん。
ASIDじゃなくてACIDです。
SQLiteトランザクションあるよ? てかトランザクション使わないと処理めっちゃ遅くなるし 単純にFirefoxが使い方間違えてるだけじゃないかな
トランザム(`・ω・´)
154 :
134 :2010/12/01(水) 11:15:23
皆様、アドバイスありがとうございます。
一応、画像のデータは入れなおそうと思えば入れなおせる予定ですので、コケても一応は大丈夫です。
ただし前にも書いたとおり全部でGByte単位になりますので「手間と時間が半端ない」という問題はありますが・・・。
これは仕様面の要求で「生画像は隠蔽したい」というコトもありますので、どちらを使うにしろDBにblobで格納するようにしたいと思っています。
他の「コケたらまずいデータ」は随時半強制的にバックアップを取らせる必要があるでしょうが、まぁコレはどっちを選んでも同じことですからね。
>SQLiteでトランザクション
今(2010/12/1現在)のgoogleでトップに出てくるのがコレですね
http://kumalog.com/2008/05/04210652.php C#環境+もう少し実際的なデータで改めて検証する必要はあるでしょうが、それでも35倍は確かに凄いですね。
まとめてデータを更新するような時には気をつけないと・・・。
>>154 まとめてっつーより、トランザクション指定せずに
書き込んだら明らかに遅いからすぐに分かる。
ちゃんとトランザクション処理は書いてあげたほうがいいよ。
別に難しいわけでもないし。
>>154 画像を隠蔽するのが目的ならファイルで管理とかBLOBで管理とかは関係ないじゃん。
他の暗号化する方法は考えたのかな? とりあえずローカルで動くものは完全には暗号化できないんで 扱い易さとのバランスを考えた方がいいと思うよ
158 :
134 :2010/12/01(水) 20:31:10
>>156 >>157 ああ、それはもちろん、画像の管理が主で隠蔽が従です。
「少なくとも四桁になる画像を(まぁ、ディレクトリは分けるにしろ)生の形で展開したくない」
「ユーザーの目に直接触れないようにしたい」
というのが、blobにバイナリで格納する目的です。
何を使うにしろ本気でクラックすればすぐに解析されてしまうでしょうし、それは承知しています。
とにかくblobを使ってみたいってことだよね
リモートデバッグについて質問です。 Windows VPS Server(Windows Server2003)にVS2008Proをインストールして テストプログラムを作ったのですが、デバッグしようとすると・・・ 「リモートデバッグモニタ(MSVSMON.EXE)の開始に失敗しました。 リモートデバッガが正常にインストールされてることを確認してください。」 とエラーメッセージが出ます。 このリモートデバッガは正常にインストールされており、アクセス許可を与えても メッセージが出ます。 サーバーのファイヤーウォールが原因なのでしょうが、具体的な解決方法が解りません。
>>160 リモートデバッグはお作法が色々とあるから
レスのやりとりだけで解決させようとすると面倒だ。
MSDNのフォーラムの過去ログを漁ってみれ。
質問です。 System.Threading.Thread.Sleep(1000); これで1秒メインスレッドを停止させる。という事ですが プログラムのメインスレッドを止めずに3秒待機させたいのです。 私が考えたのが、 「別のスレッドTで3秒カウントさせてカウントが終了した時点で bool変数hogeをfalseからtrueにしてメインスレッドでそれを感知する。」 という風に考えました。 しかし別のスレッドTではメインスレッドの変数を扱えないようなのですが どうすればいいのでしょうか? よろしくお願いします。
>>162 どういうシチュエーションか分からないが、
複雑でないことならTimerを使えばいいんじゃね?
>>163 すみません、言葉が抜けていました。
シチュエーションが決まっている訳ではなくて、
知識として知りたいのですが、Timerを使用しない場合はどうなりますか?
>>164 メインスレッド側がなにしてるのかわからないと決められないが(CUI/GUI)、
中断される作業をyieldを使って実装しておいて、
再開していいか小刻みに問い合わせるという方法があるな。
マルチスレッドならワーカースレッドをまるごと止めればいいし。
>別のスレッドTではメインスレッドの変数を扱えない そんなことなくね? もし同期の話をしてるならlock使えばいいだけだし
var sw = System.Diagnostics.Stopwatch.StartNew(); while (sw.ElapsedMilliseconds < 3000) { // メインスレッドの処理とやら Console.WriteLine("wait"); System.Threading.Thread.Sleep(500); } これでいいだろ
指定時間後にシグナルが立つようなのって無かったっけ?
>>167 >プログラムのメインスレッドを止めずに3秒待機させたいのです。
>>167 がダメだというなら
プログラムのメインスレッドを止めずにってどういう事なのか
もう少し詳しく書いてくれ。
自分としては時間のかかる一連の処理って考えてたんだけど違うの?
>これで1秒メインスレッドを停止させる。という事ですが
違います。
>しかし別のスレッドTではメインスレッドの変数を扱えない
変数はスレッドに属するものではありません。
>>170 >>167 でいいでしょ。スレッド使いたいなら↓
var flag = false;
var flagLock = new object();
Task.Factory.StartNew(() => {
Thread.Sleep(3000);
lock( flagLock ) flag = true;
});
while( true ){ lock( flagLock ) if( flag ) break;}
そういやメインスレッドじゃなくて現在のスレッドだな
煽ると初心者スレみたいなことになりそうだからやめてくれw
一方が読み込み専用、もう一方が書き込み専用ならロックしなくても大丈夫そうな気がするけど なんか問題あるの?
確かにロックしなくていいけどそれより
>>171 ならWaitHandle使うべき
boolだったら特に問題はないわね<書き込みするのが1スレッドだけなら。
たしかにこういう場合はサブスレッドに仕事させてメインスレッドはWaitHandleで待つべきだけど メインスレッドは止めたくないっていってるしなぁ
じゃあTimer使うかフラグ使わずにInvoke使うかどっちか
>>176 ,177
そうなのか、ありがとう
しつこくなってしまって申し訳ないんだが、
boolだったらってことは別のだったら問題あるの?
構造体だとちょっと問題ありそうなのは想像つくけど
環境によるけど32ビットを超える大きさの値(doubleや構造体)は
書き換え操作や読み取り操作が分割される可能性があるので、あるスレッドが値を書き換えている途中に
別のスレッドが同じ変数を読み出すと間違った値が読み出される。
>>171 はたまたまロックが必要ないけど、ロックしなくていいかどうかはとってもデリケートな問題なので、
複数のスレッドから使われる変数にアクセスするときは基本的には常にロックが必要と考えてもいい。
boolでも flag = !flag とかはロックが必要。
>>168 スレッドプールにタイムアウト後デリゲート実行するのならある
>>181 >あるスレッドが値を書き換えている途中に
>別のスレッドが同じ変数を読み出すと間違った値が読み出される。
C#ではこれは無いんじゃないの?
boolにlock不要って言うけど、lockかThread.MemoryBarrierしないであるスレッドの
データを他スレッドが読めることって保証されてないんじゃ。x86なら読めるだろうけど。
>>184 Interlocked.Add(Int64, Int64)のMSDNの説明とか参考になる。
CLIではプラットフォームの自然なサイズに依存するとあるんだが C#の言語仕様では32ビット以下のプリミティブ型の読み書きは分割できないと決まってるんだよね 実装はどうあれC#を使う以上はlockいらない
他のアプリケーションがアクティブになったり ウィンドウが移動されたことを検知したいのですが どんなAPIを使えばできるでしょうか。 ウィンドウを移動するとウィンドウの座標を表示してくれる アプリとかありますが,あれをどうやってるのかな,という感じです。
他のアプリの動きの検出はさすがに P/Invoke で OS 機能をフックじゃなかったっけ。 Windows Code Pack(Windows 依存の強い機能を .NET から使うライブラリ)からできないかな。
グローバルフックが必要になってC#だけじゃ無理、になる予感
グローバルフックするだけなら DllImport するだけだし、 自分で書くのは C# だけでいけるよ。
>>190 ローレベルフックを除いてグローバルフックはネイティブDLLじゃないと駄目だろ?
ローレベル入力だけなのか。
193 :
デフォルトの名無しさん :2010/12/03(金) 12:21:22
>>187 ウインドウの移動程度ならプロセスを一定サイクルで調べて
ハンドルかプロセスIDから位置を調べればいいんじゃね?
194 :
187 :2010/12/03(金) 12:40:24
どうもです。 なんかグローバルフックを調べてみたら 1. 基本的にはフックされた側のプロセス内でコールバック関数は実行される 2. LowLevelのマウスフック・キーボードフックだけは フックをインストールしたプロセス内でコールバック関数が実行される 3. ひとつのプロセスで複数のバージョンの.NET Frameworkのランタイムを実行できない ので,LowLevelのマウスフック・キーボードフック以外はやめとけという感じでした。 これだとウィンドウの移動を検知するのは無理ですね。 .NET Framework 4のインプロセスside-by-side実行とかいうのが この話に影響するかどうかよくわかりません。。。
>>194 ま、DLLフックとside-by-sideテクノロジーは相反しちゃうよなぁ。
でもWindowを列挙したり、現在アクティブなWindowを検出するのは
WinAPIだけでできるっしょ。
C#でnPro下のソフトにキー割り込みをかけたいのですが可能でしょうか? ・SendKeys ・SendInput ・ウィンドウハンドルを指定してのPostMessage はやりましたが無理でした。 メモ帳などにはキー入力を送れているので、処理が間違ってるという事はないと思います。 同じプログラムで対象をメモ帳からnPro下のソフトに変えただけですから。 エラーが出るとかではなく、反応しません。 traceしたいところですが、その対象ソフトのnProがIDEの起動を妨げていて ソフトを起動しながらだとnProが邪魔をしてIDEを立ち上げられず、traceできません。
>>196 nPro、すなわちnProtectがウイルスやクラッキングを防御するソフトなんだから、
お前がやってることはハッキングじゃねーか。
あほすぎる
199 :
デフォルトの名無しさん :2010/12/03(金) 16:28:43
>>196 つまりnProを使ってるなんらかのオンラインゲームの自動操縦をやりたいってこと?
ゲームが対応してるかどうかわからんけど今思いついたのはゲームを仮想環境上で
動かしてホスト側で自分のツール動かしたらどうだろ?
仮想マシンにキーコードを送るのならnProは関係ないはずだし
ライセンス違反の方法を教えてくださいって馬鹿だろ。
普通のフックじゃなくて、SetWinEventHook() でいけるかも。
>>194
ハッキングとかあほとかライセンス違反とかw 目的も知らずにそこまで言うとは理解しがたい。 身の回りの技術に疑問を持つって言うのはプログラマにとって必要な気質だろ? 質問の仕方と場所を間違えている気はするが。 つかハッキングって言葉には気をつけような。 少なくとも俺はこいつ馬鹿だなって思った。
>>202 >目的も知らずに
nPro使ってるようなので、
>>196 が禁じられてないようなのってあるのか?
普通ライセンス違反になるはずだが
お前みたいな馬鹿が寄ってきて荒れるから、この手の話題は嫌われるんだ。
技術は好きだが、それを使って何をするかには興味がねーのよ ゲームにキーを投げたいと はぁ それで?
技術が好きだというくせに、自分で考えようとはしないのか。変な奴だ。 技術に罪はないが、よからぬ事に応用できるような話は誰も教えてくれないと知れ。
しらない人のためにいっておくと >身の回りの技術に疑問を持つ これこそまさにハッキングの本質な
本質を語れる男が2ch さいこーだね 笑っちゃうね 真性のアホ?
なのなの!!
すまん、ちょっと酔っ払っててまともにキーb-ど操作ができないいんだ
頭がまともに起動したらいらしてください
またこいとおっしゃるか、やさしいのね
中学生がお酒飲んじゃだめでしょ
中学生じゃない! でも中学生並みに頭悪いっていいたいんだろ? そのとおりだから許す
中学生ですが、皮を剥いたら痛いんですが、どうすればいいですか?
割礼
>>185 Addは読み出し>加算>書き込みの複数命令だからあらゆるケースでロックが必要だわな
で、64ビットの読み書きはプラットフォーム次第で
>>184 が発生するって事か
bool、char、byte、sbyte、short、ushort、uint、int、float、および参照型の読み取りと書き込みは分割不可能です
>>217 x86のADDはメモリオペランドを取れるし、32bit以下でキャッシュラインをまたいでいなければ
アトミック性も保証される。
つまりスレッド間連携が1方向1変数ならロック不要ですよって事? でも読み取る変数が後からプロパティに変更されたら安全とは言えなくなる?考えすぎか。
>>219 32bit以下の値を読むだけなら、ADD(というか、read-modify-writeな処理全て)
がアトミックであろうがなかろうがそもそも無問題な気がするんですが....
読んだ値をif文とかで使うと危ない
volatile を入れたくなる症候群
Windows7(68bit) + VisualStudio2005sp1 の組み合わせなのですが、 新規作成→VisualC++ → CLR → クラスライブラリ で作成したクラスhogeを 新規作成→VisualC# → Windows アプリケーション で作成したフォームから 参照設定をして呼びだすと 「アプリケーションのコンポーネントで、ハンドルされていない例外が…、 ファイルまたはアセンブリ 'test, Version=1.0.3991.42024. Culture=nautral, PublicKeyToken=null', またはその依存関係の1つが読み込めませんでした。 間違ったフォーマットのプログラムを読み込もうとしました。」 といってエラーが出てしまうのですが、原因が分かる方がいましたら ご教授頂けませんでしょうか?
68bitだと・・・!
すんません、64ですw
少なくともC#側の問題ではない それだけの情報でわかるのはそれくらい
9bit処理系もRFCに載るくらい有名だろ 驚くことじゃない
まあ多分x86で作ったDLLをAny CPUでロードしようとしてるんだろ
>>224 hogeの入ってるdllをexeと同じディレクトリにコピーしてない、なんてオチだったりしてw
2005以降はビルド時自動でコピーするように出来たはずだと思ったけど。
>>229 ご指摘のように、
C#側のプロパティ > ビルド > プラットフォームターゲット = x86
にしたらエラーにならなくなりました!
即レス有難うございました!!
ネイティブコード使いたいだけなら普通のC++でdll作ったほうがいいよ C#の方をAnyCPUにできるしMSも見放してるC++/CLIなんていう将来不安な言語を使わなくて済む
そうなんですか…。 色々調べてみます。有難うございます!
どういたしまして
>>232 あまり濫用すべきでないのは事実だけど、
CLRホストを作るときにはどうしても必要なものだから今後もなくなることは無いよ。
将来不安、というのは嘘というかデマに近い。
別にCLRホストを作るときにC++/CLIは必要ないよ。ただのCOMインターフェイスなんだから。 C++/CLIでホストしたからってホストされてるCLR上のオブジェクトを透過的に扱えるわけでもない。 VSだって普通のネイティブのC++でCLRをホストしてる。 C++/CLIはVS2010でインテリセンス切られたしCLR3とCLR4とでアセンブリの互換性無し。
0123456789abcdefghijklmnopqrstuvwxyz 00 01 02 03 04 05 ...0x 0y 0z 10 11 12...1x1y1z a0 a1 a2...ax ay az z0 z1 z2 z3.. zx zy zz 000 001 002...00x 00y 00z 010 011 012...01x 01y 01z ... 長くなりそうなのでこのくらいで止めておきます。 このように文字を順番に表示するプログラムを作りたいのですがどうすれば良いでしょうか? 宜しくお願いします。
なにを聞きたいのかがわからん 画面に表示する方法?文字列を生成する方法?
>>237 テキストで書き出すの?
string.Formatの初期指定機構を使えばいい。
標準出力に書きだすなりストリームに書き出すなりはお好みで。
240 :
237 :2010/12/06(月) 16:47:13
そのサイトでは文字が重複しないようにしてあるんだけど
ヒントないとさすがにわからん 順番っていってもいろいろな順番があるわけで 表示にもいろいろあるし
使用文字が 0123456789abcdefghijklmnopqrstuvwxyz で重複おkで? 2文字拾う全てのパターン * 2文字並び替える全てのパターン 3文字拾う全てのパターン * 3文字並び替える全てのパターン 〜 重複おkだと最大文字長決めないと無限だわね。
244 :
237 :2010/12/06(月) 17:46:15
>>243 そういう事です><
うまく書き表せなかったので、助かりました。
ループで頑張るなり基数変換なりすれば?
もういらんかもしれんが 再帰使いたくないんなら、(最大桁数)進数を表す配列作って、インクリメントしながら各桁の値を文字配列のインデックスに当てはめていけばおk
ランダムに生成しまくって重複していなければ追加 一時間くらい続ければたぶんあってる
・重複を確認するコスト ・ランダム生成で既存の結果と重複してない確率 ・最後ソートするコスト 無駄すぎ
ボゴソートdisってんの?
暇になっちまった なんか面白い題材ないかな
ボゴソートの最適化
暇ならクォータニオンクラス作って
何その車の再発明。
暇じゃないならいいよ
まあベクトルとか行列はあちこちで作られてるけどなw
クラス使わずに生で扱えよ
生はいいよね
生でやり始めるとラップしたときよりも後々面倒だよな
デフォで値渡しなのと初期化がな
ラッピングしないで生でやると後々責任とらされるリスクが高い
俺の上司には一人で頑張るから気にしないでと言われてるけど
オレも昔はラッピングなんてしてなかったな 何度眠れぬ夜を過ごした事か…
マルチスレッド未対応のクラスをマルチスレッドに 対応させる汎用的なラッパーがあれば便利だなと 思ったんですが思いつきませんでした。 元のクラスを変えずにラップする簡単な方法は ありますか? ・利用側でスレッドを意識させたくない。 ・出来れば利用側でDisposeを意識させたくない
なんの処理をやるかわからんのに なんでもマルチスレッドにできるわけがない
う〜ん、とりあえず単純にロックとロック解除 を自動で行うだけでよかったのですが。 なんの処理をするかは利用側が知っているので 利用側が必要に応じてラップクラスを使うと。
元々再入可能じゃないなら無理だよ 静的変数に状態持たせてたりしたらどうやったって無理
インスタンスごとにそれぞれ別のAppDomainを持たせてその中で対象のクラスをロードすればいいよw それでもファイルや外部のAPIなどに依存してた場合に不都合があるかもしれないから万全ではないな もっと一般的に安全に動作させるためには,全スレッドで共通のstatic変数のオブジェクトをロックして 同時に動作させないようにするしかないな
そんなことより別スレッドからだとControl.Invokeいちいちしなきゃならんのなんとかならんのか ジェネリックコレクションのSyncRootの取り方もマンドクセし 次のバージョンじゃちったーマトモになるのか?
>>267 全メソッドを排他制御するだけでかなりいけると思うが。
アホな俺に「静的変数で状態保持」して破綻する例を教えてくれ。
>>270 static int temp;
void hoge() { temp = 1; assert(hage() == 2); }
int hage() { return temp * 2; }
VBなんかだと普通にあるよこんなの
static int temp; void hoge() { temp = 1; hage(); assert(temp == 2); } int hage() { temp *= 2; } 訂正
273 :
デフォルトの名無しさん :2010/12/07(火) 21:39:51
>>264 のやりたいのは↓程度のことじゃないの?
汎用化はできないけど、動作は問題ないと思うけど。
class X2 : X {
public new void hoge() { lock(typeof(X2)) base.hoge(); }
public new void hage() { lock(typeof(X2)) base.hage(); }
}
問題があるかないかなんてX.hoge/hageの実装次第だし
>あるかないか あるかないかじゃなくて、その「ある」例を挙げてくれてと言っているんだろ
>>273 これだとクラス間の相互参照でデッドロックするから、
グローバルなobjectでlockする必要があるね。
( ・ω・)y─┛〜〜
VS2010で勉強しているのですが、入門編〜の参考書でよい書籍はございませんでしょうか?
ufcpp
281 :
264 :2010/12/10(金) 16:05:11
返答ありがとうございました。
やっぱりスレッドは難しいんですね・・。
>>277 ぜひ参考にさせてもらいます。
またスレッドの件でなんですがサブスレッド終了時に
メインスレッドと同期をとりながら終了処理するにはどんな
方法が一般的なんのでしょうか。
可能であればメインスレッド(Form)のイベントとして処理させ
たいです。
例えば
・サブスレッド終了時にメインスレッド側でメッセージボックスを表示
・メインスレッド(Form)で他のダイアログ表示等の何か処理していた
場合は終了まで待つ
という感じです。
思いついたのが
1、Formのメソッド毎にlock等の排他をする
2、サブスレッドでPostMessageにイベントを入れておく
3、処理キュークラスを作ってそれに全ての処理を任せる
です。
2をC#で簡単に出来るのであればそれを使いたいと考えています。
モーダルウィンドウでいいだろ…
とりあえずメインスレッド側に終わったこと通知してあとはメインスレッドでメッセージ出すなり表示するなりやればいいだけじゃないのかと・・・
285 :
264 :2010/12/10(金) 18:02:56
勉強不足で申し訳ない。
>>283 ありがとう。
urlの内容一度試して再度考え直してみます。
スレッド自体あまり使ったことなかったのでこの際
使ってみようと思い264くらいのものでうまくいくんじゃ
ないかと思っていました。
具体的にやりたかったのは他のプログラムを起動し
終了時にデータを更新するというものです。
ただし、他のプログラムを起動している間も自身は
通常通り動かす必要があります。
そこでデータを更新どうやって行うかに悩んでいました。
メインフォームが特定の状態の時に更新させたいの
ですが、あまり込み入った修正をせずにその判断や
排他処理を集中させる方法がわからなかった次第です。
データの操作はすべてメインスレッドに行わせれば
楽かなとか、更新できない状態の時にその更新
イベントをどう保持するか、PostMessageに入れて
置けないかとか考えながらごちゃごちゃの質問を
してしまいました。(今もごちゃごちゃかもしれまんせんが)
うぜぇ
10年以上前の設計臭い MVCとかMVVMとかの概念を覚えた方が良いと思う
MVCってなんですか? MVVMってなんですか?
ぐぐれ
だから通知にしろって皆が言ってるだろ イベントが何のためにあるか考えろよ
イベントなんて飾りです
AsyncOperation使ってUIスレッドでイベント起こすのが正しいんだろうけどそこまでするほどのこととは思えん 非同期イベントパターンは完璧なコンポーネント作って利用者に楽させるための仕組みであって 利用側も提供側も自分なら面倒なだけ
そこでC# 5.0(に入る予定)の async/await よ。 超簡単に非同期処理書ける。
C# 5.0出るまで寝てるわ
asyncの元ネタのRxでも使ってろ
>>295 いや、元ネタじゃないよ。
むしろ棲み分けできそうな感じ。
await は非同期IOとかで1つの値を1度きり取る用。
Rx は非同期イベントがストリーム的にやってくる時用。
async の元ネタはむしろ、Robotics Studio の並列ライブラリとかになるっぽい。
WCFで、ISerializableによってシリアライズするデータは silverlightと連携することができない、でおkですか? それと、silverlightにはServiceContract属性があるのですが、 ホストになれないのに、これにはどんな用途が?
>>297 SilverlightにはISerializableは無いからIXmlSerializableかDataContract使う
ServicecContractはクライアントのプロキシでも使われる
>>298 ありがとうございます。ところでISerializableってなかったことに
されそうな(古臭い)ものって認識でいいんですかね?
今後独自にシリアライズ実装する場合はIXmlSerializableでよろしく?
用途によるだろ その意味ではIXmlSerializableも使わないで無理にでもDataContractだけ使ったほうがいいんじゃないの
301 :
300 :2010/12/11(土) 13:28:58
書き込みミス シリアライズしたときと同じ型がデシリアライズに必要なのはWebサービスに適さないから Silverlightでは旧来のシリアライザが削られてるけど、有効な場面ももちろんあるだろ 別の型でデシリアライズすることを考えるなら、IXmlSerializableも使うべきじゃない
>>301 ありがとう。納得しました。
知識豊富で説明もお上手ですね、かっこいいー
どんだけだよw
305 :
デフォルトの名無しさん :2010/12/13(月) 01:07:41
>>303 そんな漠然とした質問に回答を与えてくれる人間がいると思うのマジで。
独りよがりじゃないのか?
なんで読み手の立場に立って自分の文書読み返す、という作業をしようとしないのだろう。
いったんWiiリモコンのことをは忘れて、 スレッドを用いずに連続して音を再生する方法を見つけてからスレッド化する
>>305 まあ無理もない。
俺もこのWiiリモコンプログラミングの本持ってるけど発展のしようがないようなコードと内容しか書いてないんだよね。
一番良いのは同じようにこのプログラミングをやっている人に聞くのがいいと思う。
で、俺も分からないからずっと前に本棚で眠らせているので
>>303 には答えられないわけだが。
とりあえずwiiリモコンは関係ないってことで
人のことを馬鹿って言っちゃダメ!(´・ω・`)
>>303 その参考ページがPlaySyncつかっててFormが固まるから、マルチスレッドにしようとしてるとかだったりして。
それならwavePlayer.Play()に変えたら固まらずに再生できるよ。
まぁSoundPlayerは次々再生しても1つだけしか鳴らないみたい。
連続が多重にということなら、DirectX(DirectSound)つかわにゃーいけないぽいの。
とか適当に答えてみる。
313 :
デフォルトの名無しさん :2010/12/13(月) 17:05:26
SplitContainerの左右または上下のパネルっていうのは SplitContainerのウィンドウの上に表示されているの? それとも、その下のウィンドウの上に表示されているの? つまり、前者ならまず親ウィンドウがあって、その上にSplitContainerの ウィンドウがあって、さらにその上にパネルがある三層構造 後者なら、親ウインドウの上にSplitContainerと各パネルの 二層構造なんだけど、どちらなんですか?
(´・ω・`)
初心者スレでスルーだったので、こっちに書いてみます。 USB接続の外部記憶装置を特定して、ドライブ番号が変わっても追従させることは可能でしょうか? 特定のUSBメモリを毎回参照させて、他の外部記憶装置が加わってUSBメモリのドライブ番号が変更されても自動で参照出来るようにしたいのです。 USBメモリのボリュームラベルをあらかじめ変更しておいて、接続しているドライブから探すくらいでしょうか? 同じボリュームラベルは存在しないという前提になってしまいますが。
>>314 適当にSplitContainerその他配置して、デバッガ動かして適当なところでブレイクして、
FormからControlsを辿っていくと良いよ
>>316 USBメモリに適当なファイル入れる
そのファイルの有無で判別する
321 :
デフォルトの名無しさん :2010/12/13(月) 23:32:41
>>318 知らないならレスしなくていいよ。
無知さらすだけだから
とっとと死ねよ。
たしかにこのスレ間違った答えや、そもそも答えないくせに 余計なレスつける馬鹿が多いな
IDすらない匿名掲示板じゃ所詮無理なんだよ Stack Overflowみたいなサイト作ればけっこう需要ありそうだけどね
最近は糞みたいな機械翻訳された質問サイトが引っかかって鬱陶しい。
-site:efreedom.com -site:w3support.net
>>316 随分前にUSBメモリをドングル代わりに使いたいって人がいて↓を紹介したけど、
同じ方法の応用でいけるんじゃないかな
http://supermab.com/usbid.html USBデバイスは、VID、PID、SerialNoの少なくとも3つのIDを持っている。
VIDは生産者固有。PIDは製品種固有。SerialNoは製品固有。
余程もぐりのメーカーでない限りSerialNoは製品一つ一つに個別の値が振ってあるから、
この3つの値を使えば個々のUSBメモリを識別できるはず。
前にちょっと試した時には想像と違って偉く簡単にできてかえって驚いた記憶がある。
>>326 おれは316じゃないけど、USBデバイスを識別できたとして、
ドライブ文字との対応はどうやってとるの?
原則無理
WMIでWin32_DiskDrive/Win32_DiskPartition/Win32_LogicalDisk使うとか
いい加減スレチ
XmlSerializeについて質問です <?xml version=""1.0""?> <test> <item> <str>aaa</str> </item> <item> <str>bbb</str> </item> </test> 上のようなXMLがあったとき、itemタグを読み込むにはどうしたらいいでしょうか? [XmlRoot("test")] class Test { [XmlArray] [XmlArrayItem(ElementName="item", IsNullable = true, Type=typeof(TestItem)] public TestItem[] Items { get; set; } } のように記述しても読み込まれないみたいです。よろしくお願いします
XmlElementAttribute いい加減「XMLを読むのにXmlSerializer」は滅びないかなぁ
DOM使え
System.Xml.Linq
XmlSerializerは宣言的で良いと思うけどな DOMこそ滅びるべき そのまま読みたいときもXLINQあればいいし
336 :
316 :2010/12/15(水) 14:36:06
>>319-329 皆さんありがとうございます。
>>320 >>326 をそのまま試してみましたが、Win32_USBControllerのDeviceIDやPNPDeviceIDでは上手く情報を取得することが出来ませんでした。
USBポートが3つのPCでUSBメモリを抜き差ししても、表示される項目は常に2つでしたので、PC側のUSBコントローラの情報を取得していると思われます。
Win32_USBHubのDeviceIDにて、VID・PID・SerialNoの情報を取得することが出来ました。
また、Win32_LogicalDiskのVolumeSerialNumberでも、個別のシリアル番号を取得することが出来ました。
Cドライブから順番にシリアル番号を表示してくれるので、ドライブ文字との対応も出来ました。(抜けているドライブ文字はnullになります)
別PCでも動作させてみましたが、同様の動作を確認しました。
本当にありがとうございました。
XLinq使ったほうが早いみたいですね。ありがとうございました
>>331 332も言っているが、
(Xml)Serializerというのは文字通り
オブジェクトが持ってるコンテンツを
XMLにシリアライズするための手段であって、
既存のXmlを解析して読むための方法じゃないんだよ。
そういう用途には読むために用意された手段を使うべき。
通常はDOMや、SAXや、System.Xml.Linqを使う。
そんなことないよ。XmlSerializerは既存のXMLの読み書きを重視したクラスだ。 スキーマがあればデシリアライズ用のクラスを自動生成したりできる。 シリアライズというよりXMLとオブジェクトのマッピングなんだよ。 DataContractSerializerなんかもXML吐くけどこっちはほんとにシリアライザ。
340 :
デフォルトの名無しさん :2010/12/15(水) 20:14:33
テキストボックスの縦幅固定って解除できませんか?
>>340 プロパティでMultilineにすればOK
342 :
デフォルトの名無しさん :2010/12/15(水) 21:32:52
343 :
デフォルトの名無しさん :2010/12/16(木) 00:55:09
スクロールバーで動かした瞬間にパネル内のものがヌルヌル動くときと マウスボタンをアップしたときじゃないと移動しない時の違いってなんでしょうか?
ああそれね うろ覚えだけどスクロール中にSelectするんだったような
Selectとはなんでしょうか? ググッてもそれらしい情報がありません。
GridのVirtualModeの事?
いえ、普通のフォームとかパネルで出てくるスクロールバーです。 たまにヌルヌル中のコントロールが動いてるときもあるんですが 条件がよく分からなくて。
そういうのは具体的にドレドレは動いてコレコレは動きません!って書けよ
>>343 ごめんSelect関係なかった
Formの中にPanel panel1;を置いてそのpanel1の中にPictureBox pictureBox1置いたクラス
pictureBox1にpanel1より大きい画像を読み込んでてpanel1にスクロールバーが表示されてる状態
panel1のScrollイベントにこれ↓を書けばスクロール中でもpictureBox1が連動して動く
private void panel1_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
this.panel1.HorizontalScroll.Value = e.NewValue;
else if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
this.panel1.VerticalScroll.Value = e.NewValue;
}
それ古いよ 今はxnaだよ ググってね
>>349 おお、ヌルヌルきました。
ありがとうございます!
Form.OnResize メソッドのヘルプに Resize イベントを発生させます。 とありますが、OnResizeはどこから呼ばれているのでしょうか?
ライブラリが呼ぶこともあるし 継承クラス作ったときに自分で呼ぶこともあるし
基底クラス
>>354 Formをマウスで引き伸ばし際
具体的にはどのクラスのどのメソッドが呼んでるのでしょうか
WndProcでOnResize呼んでるんじゃないかな
回答する側もてきとーですね
>>356 それを知って何の意味があるのかは考えてる?
>>359 知らないことでなんのメリットがあるのかしらん?
>>360 知る必要の無いことを知る為に浪費する無駄な時間を削減できる事がメリット
知らないならレスしなければいいことじゃん 知らない話題に無理やりレスしてスレ引っ掻き回して、無駄な時間とかどの口がいってんの
知らない話題に無理やりレスしてスレ引っ掻き回してるくせに何言ってんだw
>>351 グラフィックカードが糞でXNA使えないんだ。
だから教えてくれないかな・・・?
このスレの人たちはなまじっか頭いいから煽り方も陰湿だよね
へー、きみ、陰湿に見えるのかい? 君とは話が合わないようだね
>>364 現在利用できるMDX1.1は.NET1.1用のみ
.NET2.0用のMDX2.0はβ版で開発停止。現在使用期限切れにより使えない状態になっている。
古いDirectX SDKなんかから今でも入手できるけど、情報少ない死んだライブラリだよ?
それを分かった上で使いたいなら続きはゲ制作板で聞いてくれ。
陰湿だね
>>362 誰も必要としなかった情報を求めてソース追うためにかかる時間と1行レスするためにかかる時間を一緒にすんなw
>>356 を調べるのに時間かかりすぎってそれソース読むの遅いだけじゃね?
陰湿で無駄にプライド高いよね
おまえは今まで呼んだメソッドの回数を覚えているのか?
この板ID表示すればいいのに
深夜に孤独で陰湿な自演か
せやな
自演してるやつは2ch運営に笑われてるってこと忘れんなよな
だから?
結局、誰も答えれないかったか・・・
日本語でおk
イベントはOSが呼んでるんだよ コールバック関数というんだよ
>>386 みたいな中途半端な知識しかないような奴ばっかだなw
C言語でおk
回路図も読めないのに偉そうなやつらだな
よく、常に手前に表示するためのボタンに、プッシュピンアイコンが付いていますが、 あれの画像はドコに格納されているんでしょうか。 最初はフォントかと思って、Wingdingsフォント、Webdingsフォントの中を 探してみたのですが、見つかりませんでした。
392 :
デフォルトの名無しさん :2010/12/17(金) 17:37:49
VC2008でMicrosoft Chart Controlsを使ってるんですが、これってX軸とY軸を入れ替えたりは出来ないんでしょうか? 横折れ線グラフ(上から下に向かって伸びていく折れ線グラフ)を作りたいんですが・・・。 VS2010では標準で入ってると聞きますが、こういうことをしたご経験のある方はいらっしゃいます?
C#でGoogle カレンダー表示するにはどうしたらいいんでしょうか。 環境はVS2008です SDKインストール後、参照設定はついかしました。
>>393 WebBrowserコントロール貼り付けてNavigateするだけ
はい次の方どうぞ
ちょい質問 public interface IA<T>{ event Action<T> ev; } こういうインターフェースがあるとして class A:IA<A>,IA<B> とすると、明示的実装になるしかない? 明示的実装と言えば聞こえはいいけど、結局eventの場合は別途実体手書きするしかない ev_Aとかev_Bみたいに、名前に型付けてとか出来ないかね
明示的実装しておいて public event ev_A { add { ((IA<A>)this).ev += value; } remove { ((IA<A>)this).ev -= value; } } みたいにする
イベントアクセサ知らないだけ?こうかけるよ event Action<A> IA.ev { add { ev_A += value; } remove { ev_A -= value; } } public event Action<A> ev_A;
勉強になるなぁ
400 :
396 :2010/12/18(土) 18:12:27
なるほどその発想はなかった THX.
なんてテレパス
log4netでデバッグビルドとリリースビルドで 出力レベルとappenderが変わるようにしたいんですけどどうするのがいいですか? 出力レベルはapp.configで設定しているのですが手で値を変更しないといけなくて面倒です。
log4net使ったことないけどコードから設定できるなら #if DEBUG デバッグ用の設定 #else リリース用の設定 #endif でいいだろ
log4netは使ったこと無いんだが、log4jにはログ設定が書かれたファイル(log4j.properties)を 手動で読み込ませるメソッドがあります。 これと、[Conditional("DEBUG")]なメソッドを組み合わせればデバッグビルドの場合だけ ログの設定をapp.config以外のファイルから読ませることができるはず。 たとえば [Conditional("DEBUG")] static void loadDebugLogConfig() { デバッグ用ログ設定の読み込み処理・・・ } みたいな感じで、DEBUG用の設定ファイルを読み込む処理をDEBUG ビルド版でしか実行されないように作っておく。(または#if DEBUGで リリース版でもデバッグ版でも設定ファイルは手動ロードにする。)
405 :
404 :2010/12/19(日) 15:15:21
おっと亀レスだったか。
406 :
デフォルトの名無しさん :2010/12/19(日) 16:21:51
PictureBoxコントローラの派生クラスみたいので、 実行時に枠を変化させて、画像のサイズも変化することができる コンポーネントってどっかに落ちてないですか?
「枠を変化」の意味が分からないけど、 PictureBoxのSizeModeプロパティをStretchImageにしといて 実行時にPictureBoxのサイズを変えるのはダメなの?
408 :
406 :2010/12/19(日) 16:56:10
>>407 実行時のPictureBoxをマウス操作で変化させたいんです
デバッガビジュアライザ用に似たようなの自作したことあるな 移動はドラッグだけど面倒だからサイズ変更は数値入力で コンポーネントにもせずに適当にフォームに書き捨てただけ
410 :
406 :2010/12/19(日) 17:12:16
>>409 やっぱ数値入力しかないんですかね。
要は、VSのGUIデザイナでコンポーネントを貼り付けると
回りに枠が現れて、その枠をマウス操作することでサイズ変更できますよね?
それを実行時にPictureBoxでもできないかと思ったんです。そうすれば、StretchImageにしておけば、
画像サイズも変更できますので。。
ありがとう。
それくらい自分で組もうぜ
public partial class Form1 : Form { int xx,yy,ww,hh; Boolean flg = false; public Form1() { InitializeComponent(); } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (flg) { pictureBox1.Width = ww - (xx - e.X); pictureBox1.Height = hh - (yy - e.Y); } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (flg) return; xx = e.X; yy = e.Y; ww = pictureBox1.Width; hh = pictureBox1.Height; flg = true; } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { flg = false; } }
それだと枠を操作してる感覚にはならないじゃん 枠の判定とかマウスカーソルの形変えたりとかハンドル表示したりとかカーソルがウィンドウ外に出たときとか ちゃんと作ろうとすると微妙に面倒
数値入力よりはよくない?
ドラッグでリサイズできるならドラッグで移動(もしくは枠の左側ドラッグ)も必要でしょ? めんどくせーよけっこう
そんなにめんどくさいならPGやめろよw
ピクチャボックスにしか使えないのは勿体ないから、
リサイズするための枠とドラッグして移動させる機能を中のコントロールに与えるパネルとして作るのがいいかな
ResizablePanelみたいなコンポーネントにして公開してね
>>416 任せた
418 :
402 :2010/12/19(日) 17:59:20
>> 404 どうもです。 ここにはlog4net使ってる人あまりいないようですね。 app.config以外で設定する方法を調べてみます。
めんどくせーよw
明日からまた仕事だ面倒だ 誰か俺の代わりにやってくんない?
あたし素人だけど、FrameworkElementあたりを相手に リサイズ機能付けるクラスを作るだけじゃないの? そんなに面倒くさいかな
どう見てもWinFormsだろ WPFならもっと面倒だぞ コントロールの位置決めが親要素に依存するから移動させるのはクソ難しい
WPFで作ってもCanvasに乗っけてDragイベント拾うだけじゃん。
■環境 ・C#2010 + .NET2.0 ・Windowsフォームアプリケーション ■やりたい事 ・タスクマネージャーからプロセスの終了をされてもメッセージボックスを表示したい。 ■ためした事1 ・Form1_Shownに Application.ApplicationExit += new EventHandler(End_Proc); Application.ThreadExit += new EventHandler(End_Proc); を追加 ・private void End_Proc(object sender, EventArgs e){ MessageBox.Show("hoge") }; を追加 この2つを追加して実際にプロセスを終了させた 結果->メッセージボックスは表示されずに終了。 ■ためした事2 ・Form_Closingイベントを作成し、MessageBox.Sho("hoge");を入れる。 結果->メッセージボックスは表示されずに終了。 ■聞きたい事 ・どうすればプロセスの終了をされてもメッセージボックスを表示することができるのか。 ・Form_Closingイベントはなぜ呼ばれなかったのか。 よろしくお願います。
無理
別プロセス立ちあげて監視
無理でしたか・・ dllをインジェクトしてそこから監視させる方法を取ることにします。 有難う御座いました。
なんでDLLインジェクションなんて話になるんだ…?
単体でできたら怖いだろ……
動画を再生するには何を使えばいいのでしょうか。 どこか説明している場所があれば教えて下さい フォームを使うなりcreateWindowなりで新しいウインドウを作成して、WAV形式の動画を再生したいと考えてます イメージとしては、フォームのタイトル部分が消えた、動画だけのウインドウです プレイヤーを作成するのではなく、ゲーム中にカットインを挿入するために使用します
wavは普通音声フォーマットであって動画フォーマットではないんだが まあ取り敢えずWMPコントロールでも使ってみれば
ゲームはXNAで作るべ XNAなら動画再生も思いのままだべ
Backgroundworkerクラスにはスレッドの優先度を設定する ことができないのでしょうか?ThreadクラスのPriorityみたいな。
うん無理
Thread.Priorityをいじればいいんじゃないの?
つーかMSDNを探せば一応どういうメソッドとかプロパティがあるか わかるし説明や使い方書いてあるだろうに・・・
スレッドの優先度って変えたことないな
440 :
デフォルトの名無しさん :2010/12/21(火) 14:37:37
C#でサーバー側を作る場合はどの編から手をつければいいでしょうか? ヒントでもいいので教えてください
441 :
デフォルトの名無しさん :2010/12/21(火) 14:58:25
サーバ側のソケット待ちうけするところからじゃない?
WCFの類いとはちがうん?
あーすみません サーバーを0から作るというより従来のcgiに相当する物を作る場合に 手をつけることですね・・・ linuxだとapach+phpとか用意してphpでcgi書いたりしますけど・・・ .netで同じようなことやろうとするとどうなるのかなあ・・・と思いまして
asp.net
ASP.NETは糞だけどね ライブラリ部分無視してPHP的に使ったほうがいいよ
phpから入ったんならASP.NET MVCがいいと思う ASP.NET無印、AJAXは表面上簡単だけど、いいかげんに作ってるとすぐ激重になる
447 :
440 :2010/12/22(水) 10:47:07
ASP.netというのがあるですね 調べてみたいと思います。 ありがとうございました
ASP.netってWebProgにスレが立っては消えていくんだよな
ほとんど企業しか採用しないからじゃないか?
450 :
デフォルトの名無しさん :2010/12/22(水) 12:31:24
すみません。FormやコントロールにGraphicsクラスで書いたり塗りつぶしたりした RectangleやTextを消すブラシっていうのは、ないんですか?
451 :
450 :2010/12/22(水) 12:56:33
調べてみたら、無いらしい・・ 書いたらそのまんまかよ・・消しゴムくらい用意してほしいっす。 スレ汚しゴメソ
452 :
デフォルトの名無しさん :2010/12/22(水) 12:58:18
>>451 何をいいたいのかわからんがキャンバスになってる色でRectangleで上書きするだけじゃないの?
まぁ、そうなんすけど・・
最近、この手の聞き方をする人増えたよね 煽りながらやるタイプ 2003年頃に裏情報で出てきて流行ってたよなw
455 :
デフォルトの名無しさん :2010/12/22(水) 13:02:57
そんなことより、おまえら、聞いてくれよ。 昨日、スーパーでお釣りもらうとき、プログラムの難しいことを考えながら お釣りをもらおうとしたら、女の店員の指をけっこう触ってしまったのだよ。 で、なんかすげえ久しぶりに女の肌にふれて、その女の手もすげえすべすべだったから なんかもうすげえさわっちゃったわけよ。 いやがられてるのは、わかりきったことだけど たまんなくて、すげえ触っちまった。 帰るときにごめんなさいっていって出てきたよ。
おさわり探偵乙
とりま痴漢で通報しておいた
そんな手でちんこ触られたら気持ちいいんだろうなー 胸熱
職場のやつに取らせればいいんだよなw
最後に謝るのがもうダメ、屁タレ、痴漢として最後まで自分に誇りをもつべき
痴漢が自分に誇りを持つなw
462 :
デフォルトの名無しさん :2010/12/24(金) 14:33:08
463 :
デフォルトの名無しさん :2010/12/24(金) 14:35:11
>>462 ドライバーとその上のレイヤーの構造がわかれば余裕でしょ
win32APIとか触れるのに
464 :
デフォルトの名無しさん :2010/12/24(金) 15:23:41
自作ライブラリを作成していて、このライブラリの中で、 同じディレクトリに置いてある専用のデータファイルに読み書きしたいと考えています。 このとき、データファイルの絶対パスを取得する必要があると思うのですが、 どのように取得すればよいでしょうか。 以下は同等のPHPコード(例)です。 $data_file_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . "foo.dat";
>>464 .netに絶対パスとか取得するクラスあるよ
ぐぐってみ
>>464 スレ違い。
(PHPでDirectXを動かすという狂気な実装でなければ)
System.IO.Pathでぐぐれ 次からは初心者用スレでな
>>464 Assembly.GetExecutingAssembly().Location
作法的にはよろしくない
ライブラリは複数のアプリから共有されるわけで、個別に状態持たせたりとかは普通やらない
そもそもprogram filesとかに配置されたら読みはともかく書きができない
470 :
464 :2010/12/24(金) 16:16:38
すいません、初心者スレが別にあるんですね。 System.IO.Pathはmsdnで読んでいたのですが、 カレントディレクトリの移動が必要になるようだったので、躊躇していました。 あとレスをいただいて気づいたのですが、やはりスレ違いだったみたいです。 自分がやってるのはASP.NETです。 C#力が貧弱なこともあり、コマンドラインでちまちま勉強中だったため、 言語スレ的なつもりでこちらに投下してしまいました。 現実的にASPに置き換えて考えるとファイル配置や検索方法も変わってきます。 少し整理してやりなおしてみようと思います。 ありがとうございました。
ASP.NETならRequest.MapPath
こちらには初めてお邪魔します。 MSC#でコンソールアプリケーションの開発を計画しているのですが、一つだけググっても分からないことがあったので着工前に質問させてください。 インターネットに接続することは可能ですか? できるとしたら、どのように記述するのですか? コンソールアプリケーションであることが影響しないのならそうあしらっていただいて結構です。 皆様お忙しい中恐縮ですが、よろしくご教授ください。
473 :
デフォルトの名無しさん :2010/12/24(金) 17:32:47
System.Net System.Web あたりが使えるなら可能じゃないの?
>>472 可能か不可能かで言えば可能だけど、
まずはサーバーサイドなのかクライアントサイドなのかが
分からないと答えようがないよ。
全然関係ない
関係ない。ぜんっぜん関係ない。
今時ほんとうにコンソールアプリなの?
>>472 HTTP/HTTPSならSystem.Net.HttpWebRequest。
SOAP(HTTP/HTTPS)ならsvcutil.exeの生成するクラス。
TCP/IPならSystem.Net.Socket。
>>478 バッチ処理とかじゃねーの?
CodeDomについて質問させておくれ。 .net2.0です。 目的はプロパティ作る時にget/set単位でのスコープ指定する事です。 CodeMemberPropertyじゃ出来ないようなので、CodeSnippetTypeMemberでコード直接書いてるんだけど、インデントズレたり出力される位置がCodeMemberPropertyで出力したプロパティと離れたりで気持ち悪いのをなんとかしたいです。 こういうピンポイントの出力をいじるのって、何をすればいいのでしょうか?
どうせプログラム言語に依存するならCodeDOM使う意味無いから VSのテキストテンプレート(T4)使ったほうが楽だよ
>>478 本当にコンソールアプリです。GUIのいらないものがGUIで出回りすぎているので、自分用にCUIで作ろうと…。自分のPCが低スペなのもあります。
>>479 参考にさせていただきます。ありがとうございます
なにげにコンソールのが便利だよね コンソールからForm起動するとConsole.WriteLine使えてデバッグにも便利だし
>>481 なるほど。
後出し情報で申し訳無いけど、MSBuildの処理内でコード生成してるpartialクラスなので、T4でのコード出力がMSBuildから制御できたら万々歳。
ちょいと調べてみます。
確かT4はMSBuildから使えたはず MSDNにやり方が書いてあった
test
うぉぉぉぉぉぉぉぉ C#めんどくせええええええええええ!!!!!!!!!!!!!!!!!! 使い物にならないIDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!! 市ね!
VC#はIDEとしては最高の出来でしょ それが使い物にならないというなら、VB以外の全ての言語のIDEはVC#に遥かに劣るゴミクズだよ
m9(^д^)<プギャー!!!!!!!!!!!!!!!!!! Visual F#!!!!!!!!!!!!!!!!!!!!!!!!!
本当にC#は冗談抜きで史上最高の生産性持ってると思う。
持っててもユーザー数という物量作戦の前に無力 それと自分の知ってる道具以外拒否るマにあるまじき弩バカ(→VB6.0)
言語と生産性の関連は証明されていません。 思い込みや宣伝以外のきちんとした証明を提示すれば状況は自ずと変わるでしょう。
C#はどっちかというと言語はIDEの付属品と割り切ってるよね C#が便利というよりIDEを邪魔しない設計
>>493 というか、C#はコンパイラの効率やIDEの補完機能に留意して設計されてるんだよ。
だから構文自体は結構冗長な部分があって、
ただのテキストエディタだと入力しづらい。
しかしコンパイルはJavaと比べても圧倒的に高速だし、
大抵のコード片はIDEが補完してくれる。
C++はその点全然ダメ。JavaやC#だと当たり前のビルド前構文チェックすら容易ではない。
C++はマクロがあるだけで解析が大変になるからな
マクロはCからの伝統じゃん C++はテンプレートとかでもっと酷いけど
ビルド前構文チェックが出来ない最大の理由が マクロとテンプレートのカオスさだな
体験版のIDEはタブ部分が全部スペースになってて使いにくかった印象があるけど・・・
>>498 タブとスペースは設定で切り替えられるよ。
>>499 まじで?どのへん?
VC#EE2008だけどオプションのところにないんだけど・・・・
あれも、多人数開発してるとスペースの方がどこでも同じに表示されていいからって理由だしなぁ。 オプションで変えれるけども。
>>500 オプション、テキストエディター、C#、タブ設定みたいにたどる。
C#ってコンパイルアホみたいに早いけどちゃんと最適化してんのかって思う C++なんかやたら最適化長いのにな
そりゃ最初からコンパイルも楽なように設計してあるからなぁ。 C++ のコンパイルで一番時間かかってるのはヘッダーファイルの展開であって、 実は最適化じゃなかったり。 あと、C# の場合、実は常時バックグラウンドでインクリメンタルコンパイルしてるんで、 ビルド操作した時の負荷が低いというのもある。
言語が複雑だと最適かもやりづらくなるしな Fortranなんか最適化しやすくてC++より実行速度もコンパイルも速い
客先でサーバー作業するとき、ちょっとしたツールが欲しくてメモ帳でC#プログラムを その場で作ったりするけど、IDEがなくてもC#は優秀だなと思う。 久しぶりにJavaやってnew BufferedReader(new InputSteamReader(new FileInputStream(f))) とか書いてたら発狂しそうになった。
そこはC#じゃなくて.NETを褒めてやれよw
一応突っ込んでおくけど、C++比でC#の方がコンパイラが楽できる設計になっている、 っていうのは何か勘違いをしているとしか思えない。 ちょっと前に別スレで話題になった前方参照の問題や、プロトタイプなんてものの 存在一つとっても事実は逆。 何のために人間様にあんな猿仕事が押し付けられていると思ってるの。
XDocumentで、どうやればXmlDocumentのInnerXmlやOuterXmlに相当するものを 取得できますか?
出先でちょっとしたツール(というかスクリプト)がほしい時は、俺の場合VBSだな バッチで事足りるならそれで十分だけど
サーバーではvbsで作る
もうそろそろPowerShellに移行してほしい。 毎回psスクリプトを実行可能にする設定が面倒ではあるけど。
>>508 細かいところでそうだとしても、実際にコンパイル速度が早いのはC#だし、
構文解析が簡単なのもそう。
テキストエディタ用のHighlighterの実装を読んだことがあるけど、
C#用のは拍子抜けするくらい簡単だった。
まあこのスレでC++の話をする奴はたいていC++の事分かってないからなw
C++なんて時代遅れゲソ
>>508 long long int x = 0;
if(long volatile int const long * const p = &x);
↑
こんなのコンパイル可能にするためにパーサーがばんばってんだぜ、C++ は。
それくらいならまだマシなような。templateの方が地獄でしょ。
templateの複雑さは、マクロ的な展開を再帰的にしまくるところであって、構文解析のとこじゃないような。 構文解析的にも、>> とかの解釈面倒なんだけども。
終わりましたか? 結局どんなに吠えてもC++の必要性と実用性は揺るがないんですけどねw
今年買った新しいPC(win7x64 SSD)だと初回でも.NETアプリが 一瞬で起動するので、そろそろC++は存在がやばいんじゃないかと思う。 俺の会社だと50代のCプログラマが必死にC#研修受けに来ていてかわいそうだ。
Cしかできないとかだときつそうだね C#しかできない人も数年後にはそうなる可能性もあるわけだけど
>>520 XPとかに慣れた身だと、Win7での.NETアプリの起動の速さがなんか逆に気持ち悪いw
C#できてCできない人っているのかな? それってC#もできてるつもりなだけなんじゃないかな?
むしろCできない人の方が多いと思うのだが。 リソース解放が面倒な所とかクラスが無い所とか拷問に近い。
525 :
デフォルトの名無しさん :2010/12/25(土) 22:06:40
>>524 クラスはまあまだなんとかなる
構造体+関数ポインタで同じような構造にできるし
でもやっぱCでクラスもどきとかやってるとあほらしくなるけどねw
でもC++はあまりにも継ぎ接ぎ実装なんでC#やった後だと辛い・・・
テンプレート面白いよね あくまでパズルとしてはだけど
急ぎの質問なのですが、 現在、VS2008を使いC#で開発をしています。 ユーザーコントロールを作成し、フォームに置きました。 ユーザーコントロールのクリックのイベントハンドラに buttonのsenderでボタンのテキストを取得するように書き、stringで別フォームのプロパティに飛ばしました。 別フォームでlabelに、ユーザーコントロールのクラスから受け取ったstringを書き込んだのですが、反映されません。 コマンドウィンドウ上ではちゃんとフォーム間の受け渡しはできているようなので、なぜ反映されないのかわかりません。 ご教授お願いします。
俺を教授と呼んでくれるのか///
ご教示お願いします。
すいません! ご教示おねがいします。
>>527 その調査が正しいならユーザーコントロールは問題の本質でなく
Labelのバグを疑った方がいい。
Labelのプロパティ書き込む直前にメッセージボックスで表示させても
正しく表示できるんだよな?
コード晒せや
>コンソールからForm起動するとConsole.WriteLine使えてデバッグにも便利だし いや普通にDebug(またはTrace).WriteLineで十分だろ。
メッセージボックスで表示させようとしたところ、 そのイベントハンドラ内のソースがすべて反映されてないみたいです。 しかし、ブレークポイントは反応しているのでイベントハンドラには到達しています。 コマンドウインドウで変数の中身を確認しても、しっかりstring型で文字が入っていました。 ソースは少々お待ちください。まとめます。
糞業務アプリの糞カスタムコントロールなんかだとプロパティ変えても再描画されない糞実装見かけるけど、
>>527 のはMS純正のLabelなんかね?
純正のlabelです。 よくわからないのですが、別フォームはすでに起動されていて、そのフォーム内にユーザーコントロールを置いているので、 この new であらたに別フォームを宣言しているのがまずいのでしょうか? ユーザーコントロールのクラス private void btnMenu_Click(object sender, EventArgs e) { Button btMenu = (Button)sender; FormKaisi kaisi = new FormKaisi(); kaisi.Strmenutext = btMenu.Text; } 別フォームのソース private String strmenutext; public String Strmenutext { get { return strmenutext; } set { strmenutext = value; label5.Text = strmenutext; } }
そりゃだめだわ
>別フォームはすでに起動されていて、そのフォーム内にユーザーコントロールを置いているので、 >この new であらたに別フォームを宣言しているのがまずいのでしょうか? 当たり前だろ
オマエしんでいいよ。VB6プログラマ時代の頭の悪さを感じる。
>FormKaisi kaisi = new FormKaisi(); >kaisi.Strmenutext = btMenu.Text; この後にkaisi.Show()を書いてみよう!
newで宣言せずにすでに起動しているフォームに値を受け渡すことはできないのでしょうか。
viewとmodel直結か たのむからbindつかおうぜ…
開いた時にインスタンスを保存しとくなり、Application.OpenFormsから探すなりすれば? あとstrmenutextとlabel5.Textの値が一緒ならstrmenutextいらなくね?
>>540 kaisi をshowすると値は入っているのですが、それは困るのです。すでに起動しているフォームのラベルに変化がほしいです。
初心者すぎる質問で申し訳ないのですが、助けてください。
>>541 class Unko {
public static FormKaisi Manko = null;
}
を作成しておいて、FormKaisiのコンストラクタで
Unko.Manko = this;
これでおk。後はbtnMenu_Clickから
Unko.Manko.Strmenutext = btMenu.Textすればいい。
人 ( ) ( ) ( ´д`) ウンコー /⌒ `ヽ / / ノ.\_n● ( /ヽ |\___Lノ \ / | ( _ノ | | / / | / / ( ) ) | | / | | |. / |\ \
>>546 のソースコードがよくわからなかったんですけど、ユーザーコントロールのクラスに、
別フォームのロードイベント時に別フォームをthisで送っているのですが、これだけでは別フォームの関数に引数をもって入れないのでしょうか。
日本語でおk
551 :
546 :2010/12/25(土) 23:12:32
>>549 すまんが俺も日本語の意味がわからなかった。
急ぎのようだから、まずは
>>546 のコードを貼り付けて試してもらえないだろうか。
>>549 >>536 があまりに見当違いだから送ってるとか言われても全く信用できない
インスタンスとかの概念理解してなさそうに思える
>>546 のソースでできました。
ありがとうございます。
ちょっとソースを理解してみたいと思います
ありがとうございました!
554 :
546 :2010/12/25(土) 23:18:55
どういたしまして!
List<string> のコピーをつくる一番簡単な方法を教えてください
ToList
神様ありがとう
DataGridViewでFullRowSelectにしたとき 選択線が行全体を囲うようにしたいのですが わかりませぬか・・・
ToList()でいいのか。へー。 以前はコンストラクタに入れるのが王道だったよね。 List<string> listB = new List<string>(listA); で、stringなら良いけど、中身が参照型ならちょっと気をつけないとイカンよ。 List自体は別物でも中身は参照のままだから、場合によっては問題が起こる。
.Select(item=>item.Clone()).ToList()だな
Clone()はDeepCopyじゃないよね?
ICloneableは今はいらない子扱いだよ 新規に実装するのは非推奨 さすがにObsoleteにはならんけど
インタフェース使わずに実装する
それはどうして? ポリモーフィズム使えなくなるじゃん それにメソッドだけ追加するのも居心地悪い感じがする
Clone が浅いコピーか深いコピーか規定されてなくて、各実装でバラバラ だから、使えなくなった。
ありがとう なるほど・・・・・
void Test<T>(T a) where T : IHoge, ICloneable { var b = a.Clone(); b.Hoge(); // aに影響すると困る } としたときにaの状態が変化しないかどうかはICloneableの実装依存だからな 結局具体的な実装の知識が必要なのでインターフェイスとしては意味無
個人的にIcolonable気に入ってたんだがダメな子だったのか
某パッケージではICloneable実装が義務付けられていたから、 シャロー、ディープ、MemberwiseCloneが入り混じって酷いバグの温床になってた経験がある
IClonableのメソッドがShallowClone, DeepClone, MemberwiseCloneの3つあれば良かったのか 実装面倒かもしれないけど、クローンの方法が複数あるにも関わらず メソッドがClone1つしかないのがそもそもの問題な気がする
ディープコピーだけでいいでしょ ICloneable.Cloneのドキュメントに、あらゆるパブリックメンバの操作に対して 元のインスタンスに影響が出ないように実装しろと書いてあればよかったんだよ
でもディープコピーされたら困る場合もけっこうある
そういう場合はそう書いとけよ
つかそもそも なぜ違う機能を同じメソッド名に割り当てたのかがわからない 小一時間問い詰めたい
シングルトンをシリアライザつかってディープコピーしてやるですぅ
579 :
デフォルトの名無しさん :2010/12/26(日) 16:18:13
クラスの複製を作りたいケースが思い浮かばないだが 実際はどうやればいいの?
580 :
デフォルトの名無しさん :2010/12/26(日) 16:19:36
もとい >クラスの複製を作りたいケースが思い浮かばないだが >実際はどうやればいいの? インスタンスの複製を作りたいケースが思い浮かばないだが 実際はどうやればいいの?
汎用性なら578が言ってるシリアライズ→デシリアライズが楽 一時的にMemoryStreamか何かに、BinaryFomatterか何かで書き込む
582 :
デフォルトの名無しさん :2010/12/26(日) 16:26:09
編集画面開いたらViewModelの中でModelをコピーしてそっちを編集して、 キャンセルボタンが押されたら無かったことにして、とかで
え、
>>580 はCloneの使用パターンじゃなくて実装法聞いてたのか?
585 :
デフォルトの名無しさん :2010/12/26(日) 16:32:05
>>584 両方
クラスからインスタンスをいくつか作るケースは普通にあるけど
インスタンスになった物を複製ってかかないからな・・・
メメントパターンで編集履歴を残したり、スレッドセーフでないDB系のインスタンスをCloneして別スレッドで使ったりした経験はある
>>574 じゃあIShallowClonable, IDeepClonableがあればいいんじゃね
>>586 なるほど
手を出してないところだな
作ってる物がまだまだということか
参考になったよ、ありがとう
>>587 シャローコピーのインターフェイスはいらないんじゃないかなあ
シャローコピーってインターフェイス経由では使いようがなくね?
もしインターフェイス経由でクローン使うとしたら
>>570 のような状況くらいしか考えられないけど
その場合一般的に扱うならディープコピーを前提にするしかないと思う
そもそもクローンは一般的な操作にするには複雑すぎると思うんだよな 一部のメンバーを値型から参照型に書き換えただけで破綻するし クローンが必要なケースごとに実装するのが無難じゃね
コンソールアプリのフロントエンドを作りたいんですが、 簡単な作り方とか解説されてるサイトってありませんか?
>>591 コンソールアプリをたたくGUI作りたいってこと?
普通はライブラリにしておいて、それを参照するコンソール版とGUI版作るけども。
そういう設計になってなくてソースコードなしのコンソールアプリしかないとかなら、
しょうがないからProcessクラス使う。
>>591 フォームにテキストボックスとボタンを貼る
ボタンクリックでProcess.Start()でコンソールアプリを起動する
その際テキストボックスに入力されたパラメータも一緒に指定する
>>592 自分の作ったものではないので、ソースコードとか無いんです
>>593 出力の取得はどうやればいいのかと思ったんですが、
Process.StandardOutputを読めばいいんですね
ありがとう
出力はTextWriter実装してリダイレクトするのが楽
そういうこと
598 :
デフォルトの名無しさん :2010/12/27(月) 11:07:53
だね
なるほど
ありがとうございました
どういたしまして
これはほんのつまらないものですが
あぁありがとうございます
つまらないものは要りません
おまえがつまらないんですよ
そんなそんな
>>485 お礼が遅れましたが、T4への置き換えなんとかなりました。
ありがとう!
どういたしまして
昨日のCloneの話はなかなか有意義だったのに 今日のおまいらはアホの子かとw
610 :
デフォルトの名無しさん :2010/12/27(月) 19:41:16
Sandcastleとか使う
SHFB
ということでした
こちらからは以上です。
TEST
てすと
617 :
デフォルトの名無しさん :2010/12/29(水) 19:50:08
test
C言語を勉強して、次はオブジェクト指向言語に挑戦しようと C#を勉強しているのですが、まったくオブジェクト指向と言うものがまったく理解出来ません プロパティ、メソッド、クラス?なにそれって感じです まったく進まないので何か解決できるアドバイスをお願いします
Cでも複数ファイルに分けて開発してれば自然とオブジェクト指向的になるもんなんだがな
自然にはならないだろ。
そこまで上達してなければならん
自然にというか、データ構造とか勉強しだすとオブジェクト指向的になるね。
まったく理解できないんだから,アドバイスは一つ プログラミングはやめなさい!
まったく進まないってだけじゃどんな状況なのか分からない 1行も書けないのか、ビルドが通らないのか、バグが直せないのか、正常動作するけど意味が分からないのか、どんな感じなんだよ
プログラミングはやめなさい!
627 :
618 :2010/12/30(木) 17:09:32
>>625 正常動作するんですけど意味がわからないんです
public class〜は関数と同じ感じなのでしょうか?
インスタンスを実体化というものは変数に代入するのとはまた違うんでしょうか?
C#ができなければJavaをやればいいじゃない
>>627 まずロジック中心に考えるのを辞めるところからだな。
データ構造の設計ありきで、それに関数が付随する。
Cどこまでできるのか知らないけど、Cやってると自然に HogeHandle hHoge = CreateHoge(); Hoge_SetName(hHoge, "あ"); Hoge_Work(hHoge); Hoge_Run(hHoge); みたいなパターンが頻出するんだよ。これがオブジェクト指向。 これを、 Hoge hoge = new Hoge(); hoge.SetName("あ"); hoge.Work(); hoge.Run(); と書けるようにしただけ。
オブジェクト指向を使いこなすのは難しいと思うけど オブジェクト指向の考え方はそんなに難しく無いだろ そもそもプロパティ、メソッド、クラスも分からん奴が Cのポインタとか理解できたとは到底思えん
JavaやC#, C++あたりを使ってる現場でも、ひどいコードが氾濫してるのに 非オブジェクト指向言語でも使ってれば自然にオブジェクト指向っぽい コードになるとかないよ。
C#はコンポーネント指向って感じがするけどね
C#はコンポーネント指向だから、ひどいコードが氾濫してたのか。
ひどいコードが氾濫してる所は誰かの頭が固いんだよ
オブジェクト指向とコンポーネント指向って相反するものじゃないだろ コンポーネント指向をオブジェクト指向で実装してるんだよ
1行目は分かるけど2行目は何なの?
C#は、オブジェクト指向的では無い機能も積極的に取り入れてる感は有る。 C++程のマルチパラダイムぶりでは無いけれども。
C#はイベントの実装にJavaみたいにObserver使わずに デリゲート使ってるからオブジェクト指向じゃないとかいうのは無意味 結局Observerだってオブジェクト指向じゃ自然に作れないものをトリッキーな形で実現してるだけ
>>627 >public class〜は関数と同じ感じなのでしょうか?
Cから入ったなら、構造体 (struct) と似た様なもんだと考えた方が解り易そうな。
(C#にも構造体は有ってCとは相当別物だけど、その辺りはややこしいので置いておく)
Cの構造体は、大雑把には 「データ」 の集合を表現する物だけれども
「データの集合」 に 「自分が持ってるデータを処理する関数」 をくっ付けた物がクラス、というか何というか。
何なら、 「関数ポインタをメンバ変数に持った構造体」 でも良い。
(実態はかなり違う物だけれども、とっかかりとしては)
パラダイムにまで宗教家がいるからこういう論争を生む どうでもいいんだよ書き易ければな
Cに習熟していれば自然にオブジェクト指向になるとまではいえないけど、 Cでオブジェクト指向的なプログラミングをすることはたしかに少なくないよ。 そこまでするなら素直にC++とかJavaとか使えよ、とか思うけども。
再入可能にしようと思ったら勝手にオブジェクト指向になるよ 状態を構造体にまとめて第一引数に渡す形になる
初級から抜けだせない。 家で勉強しようとしてんだが何すればいいのかわからない 上級者は家でも常にプログラムしてるらしいが何のプログラム組んでんだ ゆとりの俺にアドバイスしてくれる猛者はいないか
他の言語やれば? なかなか一つの言語だけじゃオブジェクト指向とかちゃんと理解できないよ
>>646 なにかツール的なものを作ってみるとか。画像編集ツールだったり関数電卓だったり。
車輪の再発明になってしまうものばかりだけど、自分流の作ればその後役に立ったりすることもあるしね。
>>648 ローカルアプリからwebまで広く勉強できる2ch専用ブラウザがいいかもね
オープンソースで公開されてるのもいくつかあるし
>>648 おれはVisualStudio見たいにMDIウインドウを任意にドッキングできるライブラリで、
自前の専ブラ書こうとしてる。まだ何もやってないけどね。
ついでに思うんだが、専ブラで板一覧とかお気に入りのスレ一覧がVisualStudio風に
ドッキングしつつ任意の場所に配置できたらさぞかし便利そうだとか思わないか?
C言語でしか実現できない要素なんてなさそうだし、今まさにV2C使ってるがJaneとか
と比べて遅いと感じない。Javaで作れるWindowsアプリなら、C#ならより良く実現できる
と思うんだ。
>>650 ドッキングもなにもインスタンスさえ把握してればどのコントロールの子に張り替えるかだけだよ
652 :
デフォルトの名無しさん :2010/12/31(金) 00:36:44
twintailとかいう2chブラウザ昔あったよね? あれどうなったの? あれを逆コンパイルしてだれか新しいの作ればいいのに。 WPFとか使って。
WinFormsで作られたアプリってたいてい全体がUIべったりで移植性ゼロ
逆コンパイルっつーかソース配ってるだろ 今も
それはVSが悪い VSでプログラム覚えたらFormにコード書くのが普通だと思い込んじゃうんだよなぁ
ダイアログ単位でカプセル化できちゃうからUIとロジックごちゃまぜでも大して問題にならないんだよな
次はProgram.csに書こうとするんだな
次は Program.cs 削除だろ よく見るけど。
VSてかM$式は、基本パーツ単位で物事考えるきらいがある それはそれである程度正しいと思うが、パーツ間通信が分かりやすい形で用意されてない そこんとこはなんとかしてほしい
コードからUML自動生成みたいなの欲しい
WPFの公式サンプルはMVVM+DIとか 別次元の訳のわからんことになってるよ
ダイアログはダイアログ単位で扱えるからいいけど メインフォームとメインコードが融合してると保守がめんどくさい
分離してあっても今度は逆にロジックがテキストボックスを直接操作してたりする
>>663 あるある
MVCとか本読まないと載ってないから適当に作ってた頃はそうなった
間にコントローラー挟むなんて発想は独学じゃなかなか身につかないよね
MVCかどうかはともかく、UIに依存する(C#で言えばフォームやコントロールの 参照を別の何かが握ってるような)コードがマズいのは普通は何とく直感的に 分かるものだと思うけど。 少なくとも俺はそうだった。
>>666 私も経験でそう感じたクチだ。
MFCの時代から、ロジックとUIの分離に拘ったが、
やはりそのためのインフラから作らねばならないのが非常に面倒だった。
バックグラウンドで、つまり最小化した状態で、 スクリーンショットを取ることは可能なのでしょうか。 教えていただけませんか。よろしくお願いします。
可能です
>>669 方法を教えてください。
アクティブウィンドウによる取得は考えていません(ALT+printsreec)。
>>670 windowsXPってオフスクリーンバッファもってたっけ?
Aero搭載のOSは仕組み上確かオフスクリーンバッファでウインドウを持ってたはずだけどさ
672 :
671 :2010/12/31(金) 09:06:28
今調べたら丁度いいのがあったわ
http://okwave.jp/qa/q5439510.html Bitmap myBmp = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(myBmp, new Rectangle(0, 0, this.Width, this.Height));
Clipboard.SetDataObject(myBmp, false);
これでいけるね
>>666-667 分離しにくくね?
フォームを継承させて作ってる構造and適切なメッセージがきた瞬間にしか活きてない値(and動かない処理)がある
からか弄ろうとしたらコントロールの内部に潜り込む必要がある
のに、別のクラスにして強引に分離しようとするとデリゲートとか呼びまくらないといけなくなる
で、デリゲートって大抵そのクラス専用なわけで「あれ?これ分離とはほど遠くね?」って感じで結局分離できてなかったり・・・
ってことよくない?
ちょっと勘違いしてるよ。そういうのはビューの一部だから分離しなくていい。たとえばメールソフトなら、 private void SendButtonClick(略) { var mail = new Mail(); mail.Content = textBox1.Text; mail.Address = textBox2.Text; mail.Send(); } これがビューとモデル(Mail)の分離。MailクラスはUIに依存しないでしょ。 イベントハンドラはビューの一部だからコントロールを自由に触っていい。
それは分け方がおかしいだけのようなw
明けましておめでとう おまえら今年も何でも聞いてくれ
>>675 それだとあとでViewだけ取り替えたい時大変だけどね
というかMVCではないな ビューとロジックの分離という文脈の上の話ならわかるけど
Viewが交換可能なMVCの場合はViewにViewインターフェイスを実装して、 ControllerからViewインターフェイスとModelを使うという考えで合ってる?
CからVに通知するときはインターフェイス使うしかないけど Modelのプロパティをテキストボックスに表示するのはViewの仕事だよ ViewのプロパティをぜんぶインターフェイスでControllerに公開してしまって ViewをすっからかんにするとMVPになる
質問ですが、MVCとかそこら辺の知識をお前様達は一体どうやって身につけましたか?
C#での構造体に関する質問です。 構造体の要素数を数えた上で、 構造体に設定した内容をfor文でまわして コンボボックスなどに設定したいのですが、 構造体の要素数と構造体の要素数文まわして、 構造体の一番上の要素から値をとって設定する。 という作業はどのようなコードで可能ですか。
>>682 大抵はJ2EEじゃないか?一昔前にEJBを崇拝すると極楽浄土に
いけるという謎の新興宗教がIT業界で流行ってたし。
>>683 リフレクション、TypeクラスのGetMembers()など
>>684 なるほど…。
それから察するに、C#界隈はJavaから流れ着いた人が多いって噂は本当っぽいですね。
自分は非情報系→C言語→.Netと来たので、皆さんがどこで技術を身につけてきたか今一分かりませんでした。
ありがとうございます。
MVCとかオブジェクト指向の本や記事を読んでれば自然に目にするだろ。
俺はCakePHPの案件に放り込まれてMVC勉強したわ
MVCのために、いまさらながらservlet本読んでるわ・・・
オブジェクト指向のオススメ本とかあります?
Javaではクラスをパズルのように組み合わせたりしたけど、C#ではあまりしないな 継承自体使う機会が減った
継承が余程適切な場合を除いて、インターフェース使う事の方が多いもんなあ
機能を拡張するために継承を使ってはいけないっていうのも眼から鱗だった
既存のコードを再利用するには継承を使わないといけないと信じてる人いるよね 再利用に継承は必要ないし、むしろ継承すると派生クラスの再利用性は下がる
>>691 みたいな古臭いものじゃない、C#らしいデザインパターンの本出して欲しいな。
>>696 それやろうとしたけど、ただの言語仕様でパターンって感じにならなかったw
・VC# 2008 Pro
GridViewの並び替えについて質問です。
画像リンクを添付しているので一緒にご覧下さい。
右中央のdataGridView1にアイテムがある時、
赤く塗ってある「1つ上へ(button7)」や「1つ下へ(button8)」をクリックしたら順番を入れ替えられるようにしたいのですがうまくできません。
更にアイテムをD&Dでも並び替えできるようにもしたいのですがやり方教えていただけませんでしょうか。
ttp://uproda.2ch-library.com/329017H7m/lib329017.png
>>698 >赤く塗ってある「1つ上へ(button7)」や「1つ下へ(button8)」をクリックしたら順番を入れ替えられるようにしたいのですがうまくできません。
具体的に何がどう上手くいかないの?
>更にアイテムをD&Dでも並び替えできるようにもしたいのですがやり方教えていただけませんでしょうか。
検索すれば沢山見つかる。それを試してから出直してこい。
UMLで書いたクラス図から自動でコード生成してくれるソフトを探してるんですが、 Visio以外というか、フリーでそんなものはありますか? 出来ればWindowsで動くと嬉しいです
VSのクラスダイアグラム
astah
Visual Studio 2008(または2010、ともにPro) C#での質問です。 質問内容はコメントに関するものです。 たとえば、以下のサンプルのようなコードとコメントを書きました。 これは意図的に、コメント内のexceptionが実装と一致していない例ですが、これをコンパイル時や実行前に警告してくれるツールはないでしょうか。 また、<exception>忘れや、以下の処理で言うと、new FileStreamなどで発生するexceptionの記述漏れなどもフォローしてくれるツールがほしいです。 ご存知の方、よろしくお願いいたします。 /// <summary> /// ファイルから適当なもん読み込む。 /// </summary> /// <param name="fileName"></param> /// <exception cref="ArgumentNullException"></exception> /// <returns></returns> public object Read(string fileName) { if (string.IsNullOrEmpty(fileName)) { throw new InvalidOperationException("fileName"); } using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { //適当な処理 } }
706 :
デフォルトの名無しさん :2011/01/03(月) 16:43:13
フリーでそんな物があると思ってる方が・・・・ というか自分で作れよ 図形を元にクラスのコードをアウトプットするのならそれほど難しくねーだろ すでにあるコードを解析して図にするとなると面倒だが
CodeDomとか使ってお手軽に作れないものかな
CodeDOMは面倒だよ C#のコード吐くだけならTextReader.WriteやT4でベターっと生成したほうがずっと手軽 CodeDOMはC#とVB両対応したい場合とかに使う
>>705 そういや Express 版にはクラスダイアグラムないんだな。
>>708 いや、CodeDOMを使ってソースコードからUML図作れないかなと思って
残念ながらCodeDOMにはパーサーは付いてない それにUML作るだけだったらリフレクションでメンバ名と型を調べるだけで十分
712 :
デフォルトの名無しさん :2011/01/03(月) 17:14:52
>>709 それがいわゆる差別化だろうw
無料であそこまでのIDEが使えるだけでもかなりの物だ
第一オブジェクト指向やるなら脳内であれくらいの図は頭に描けないと・・・
仕事で資料として図が居るとかなら買えって話だ
>>711 パーサーないんだ・・・・
たしかにリフレクションでクラス構造調べてUMLに変換はそんなに難しくなさそう
.net用の実行ファイル⇔UMLのフリーツールくらいありそうなもんだけど
UML書く必要性を感じない
>>714 それだとクラスを設計したとして、どうやって他の人に説明するんだ?
それこそ毎回コードレビューするとかだったら面倒くさすぎる
>>715 仕事で使うならツール買えるだろw
個人でやる上ではいらないツール
?
>>716 UMLをツールだと思ってるの?
どういう意味?
716じゃないけど、UMLを手書きはしないだろう おまけにUML自身も説明ツールとかコミュニケーションツールと言ってもまあ妥当かと。
図だけどそのままクラスにも落とし込めるしツールで作るだろ?って話 だから開発ツール=UML作成ツールともいえるのでUML書くことで悩む必要性がないと思うが・・・
Expressとかタダで・・・みたいな人はそりゃUML作るのにコードとの連携が取れないので 手書きか別ツールで別途作成だろうけどさw 上位版買えば一発だし・・・
クラス図くらいならExcelでも簡単に作れるじゃない そんなツールに拘らなくてもいいと思うけど
>図だけどそのままクラスにも落とし込めるしツールで作るだろ? ないないw
UML書かないと説明できないような設計はちょっとね・・・
UMLに起こせないようなスパゲッティコードの愛好家を 隔離できるのがいいんだよ
726 :
デフォルトの名無しさん :2011/01/03(月) 22:21:20
クラスを使っていけばスパゲティってかけなくね? まあメソッドの中でぐだぐだコード書いていけば別だがw
クラス図の話でしょ? 数千行のExecuteメソッドが一個だけあるような糞スパゲッティの方が クラス図はシンプルになるでしょ
他クラスにまたがるスパゲッティってのもあるとおもう。
729 :
デフォルトの名無しさん :2011/01/03(月) 22:23:13
>>728 >他クラスにまたがるスパゲッティってのもあるとおもう。
あるかなあ・・・
あったとしてもさすがにクラス図に起こせないってことはないだろ 中がどうなってようとメンバの宣言だけで静的に決まるんだから
正しくカプセル化されていればスパゲッティにはなり難いだろうな 馬鹿みたいに集約じゃなく継承しまくってるようなクラスは それらをまとめてスパゲッティと見なしていいと思うけど
クラス図は自己満足の為にある
733 :
デフォルトの名無しさん :2011/01/03(月) 22:42:24
>>732 でもある程度ごりごり書いたソースをたまーに全体図で眺めてみたくなることもある
クラスビューかオブジェクトブラウザの方がコンパクトで見やすいような気もしますが
DIやれば? 最近のMSのアプリケーションサンプルはDIばっかりだからきっと点数上がるよ
クラス図は顧客に仕様変更を思いとどまらせたり、ロックインを覚悟させるためのコミュニケーションツールだよ
739 :
735 :2011/01/03(月) 23:44:48
>>736 確かに名案だ。
もしよかったら他の人にも聞いてみたい。
ダメダメなソースコードを見たときに何をするべきか。
よい意見があったら、教えてほしい。
相手の書いたコードを尊重して放置 大人は責任の所在を考えるもの
>>739 今後も自分が保守を担当し続けるならリファクタリングを検討
それ以外なら放置(触るな危険)
>>742 だから、 あのー、 その リファクタリングの話をしてるのですが−、
あー、 おわかりに なりません でしょうかー、
>>739 ,743
それはプロジェクト全体で駄目駄目な場合?
それとも、クラス単位やメソッド単位でリファクタリングする場合の話?
>>743 お前が具体的に書くべきだろ
> ダメダメなソースコード
お前のいうダメダメってのはなんだよ?
> よい意見があったら、教えてほしい。
どこにリファクタリングについて求めてんだよ?
それFFみたいなゲームを作りたいけどどうしたら良いですか?並に無茶な質問だって気づけよ
747 :
735 :2011/01/04(火) 01:22:23
>>740 すまない、その通りだ。
とりあえず具体化できるところまで考えてみてから質問するわ。
あと、735≠743なので。
List<T>クラスにForEach()メソッドがあるのですが、 IEnumerable<T>にはForEachのようなメソッドはないのでしょうか?
無限に列挙するタイプのIEnumerable<T>とかどうすんのさ 自分で適当に拡張メソッド書いとけ
static class Extension { static public void ForEach<T>(this IEnumerable<T> collection, Action<T> action){ foreach(var x in collection) action(x); } }
自作するって言っても、this IEnumerable<T>, Func<T,TResult>を引数にしてforeachで回すだけだしな。
>>749 無限に列挙するタイプだとCount()とかもやばくないですかね
>>750 ,751
ありがとうございました。参考にして自作したいと思います
>>748 副作用起こすタイプのメソッドは標準に入れたくなかったみたい。
例外を投げること 列挙中に例外が発生するのを嫌った。 こう言う副作用ありのものは foreach 文で処理するのが LINQ だったはず
いまいちよくわからないんだけど、例外はラムダ式受け取るメソッドなら発生するような・・・
ForEachは要素数が変わるのを許さないだろ?
>>754 LINQ がある今、foreachとかForEach()で受けるってのがどういうことかというと、
Console.Write したりファイルに書きだしたりに使うはずなのね。
Console.Write とかファイル書き出しって、システムに対して何か状態変化起こすわけで。
状態変化起こすことを副作用っていう。
状態変化起こす場合、並列処理すると普通は lock 書けなきゃいけないし。
Console クラスはスレッドセーフに作ってあるらしいけども。
xhtmlを生成したい時ってXmlWriterとXDocumentどっち使います?
俺はXDocumentのほうが好き
ありがとうございました、XDocument調べてみます
ニコニコ生放送のコメントをAPIを使って取得するにはどうすればいいのでしょうか?
ttp://www.asterios.biz/softwareNikoInfo.html 上記の公開されているソースを使って試しているのですが、クラスをフォームへ呼び出すのでしょうか?
それともクラスにフォームを呼び出すのでしょうか?
フォームにて行う動作は「TextBoxにニコニコ生放送のURLを入力→OKボタンを押す」と呼び出せる、
または呼び出されるようにしたいのですがどなたか教えていただけませんでしょうか?
お願いいたします。
764 :
デフォルトの名無しさん :2011/01/06(木) 07:10:12
何で悩むのかよくわからんがそのクラスを使ってインスタンス作って メソッド呼び出せば取得できると思うんだけどw
やりたいことがあるのはよいことだw
そしてドヤ顔で作ってみた動画をうp と
767 :
デフォルトの名無しさん :2011/01/06(木) 13:08:25
つまり
>>763 のサイトの主に
そのクラスを使ったサンプルコードくらい書いとけや!!
ということですね
じゃあ新しい書き方で書いてみれば。無理なの知ってるけど
煽っても無料じゃ書かないよ。
グリー「無料です」 モバゲー「無料です」 スレ「無料です」 基本無料3兄弟
グリー「無料です」
モバゲー「無料です」
スレ「無料です」
>>769 「無理です」 ←New!!
ちょっと疑問 Control.Invoke()を複数スレッドから同時に呼んだ場合ってどうなるんだろう InvokeはUIスレッドのみで動くんだから、暗黙的に排他になる? もしそうならlock要らずになるんだけど、そんなこと書いてるサイトどこにもないし
そりゃあUIスレッドは一個なんだから排他になるよ
論理的に考えればそうなるが、それにしてはそういうやり方してるとこにお目にかからないのが気になる ロックよりコスト掛かるとか?
そういうやり方って何? ロックの代わりにわざわざInvoke使うとか言うわけ?
777 :
デフォルトの名無しさん :2011/01/06(木) 19:12:33
マネージドな12bitのJPEGを読み込めるライブラリないですか? C++をラップしたアンマネージドなヤツはJPEG公式サイトで発見したんですが。
複数のスレッドが画面に直接アクセスするのが汚いから少ないだけでしょ。 暗黙的な排他とかはどうでもよくて、InvokeはスレッドセーフとMSDNに書かれて いるんだからlockが要るわけがない。
JpegBitmapDecoderとかもアンマネージコードのラッパーだよ System.Drawingもそうだし、グラフィック関連でpureマネージドなライブラリってほとんど無いと思う
>>780 内部実装の問題じゃなくて、C# で書いててネイティブ意識するかどうかの問題じゃない?
COM ラッパーとかだと ref Type.Missing 地獄になるような、あのキモさがなければ。
782 :
777 :2011/01/07(金) 00:18:15
まず何をやってるかと言うとWinFormsアプリをSilverlightに移植してるのです。 WinFormsアプリだと、拾ってきたCのライブラリをC++/CLIでラップして 逃げていたのですが、Silverlightだと100%ピュアなコードで置き換えねば ならないようで開発が止まってしまいました。 以前、C#でSQLiteを書き直した人がニュースになっていましたが、 同様の手法が必要になってきてしまいました。
サーバーサイドで変換して送れば
784 :
デフォルトの名無しさん :2011/01/07(金) 01:44:04
Silverlightってその12bitのjpegを標準のクラスとかで扱えないの?
64ビットで動かしたいからマネージにこだわってるんでないの? 32ビット版と32ビット版のラッパーを両方入手すればおk
void sendStr(string str) { strSend = str; th = new Thread(new ThreadStart(WriteString)); th.IsBackground = true; th.Start(); } void WriteString() { //swはStreamWriterです sw.WriteLine(strSend); } クリックするたびにこんな感じで文字列を送信するプログラムを書いたんですが 1クリックに複数回上記のsendStr関数を呼び出すと立てたはずのスレッドが実行されていません なんか解決策はないでしょうか?
>>782 作ってやるよ
とりあえずそのライブラリとサンプル画像くれ
788 :
デフォルトの名無しさん :2011/01/07(金) 09:42:53
JPEGは各色8bitで非可逆圧縮だと一般には認知されているしな。 12bitや16bit、可逆圧縮(LS)などのクソマイナーな仕様は 一般には知られてないので実装も皆無。くそ真面目に標準で それらに対応しているのはJava(JDK1.4〜)くらいなもん。 そのJavaもAndroidでは無駄と判断され削除されるくらいマイナー。
789 :
デフォルトの名無しさん :2011/01/07(金) 10:59:16
>>789 本名?
ちょっと普通に本垢ぽくてワロタ
libjpeg移植すんの?w
逃げるなよ
>>787
792 :
デフォルトの名無しさん :2011/01/07(金) 12:06:43
なんかこの際サポートしない勇気みたいなのも必要だなw なんでもかんでもサポートすればいいってもんじゃないし
青木純とかいい名前じゃないか
Silverlight4でWindows + out of browser + elevated permission 限定でいいなら COM経由でネイティブコード呼べるよ Silverlight5では外部のプロセス起動したりPInvokeができるようになったりするらしいけど
sl5すげぇなおい・・・・
>外部のプロセス起動したり これはブラウザのプラグインなのにいいのか?
だから Windows + ブラウザ外実行 + 権限昇格モード 限定 どっちかというとClickOnceみたいなもん Silverlight4でもCOM通せばプロセス起動できるけど直接サポートされる予定 他にもウィンドウを複数表示できるようになったりするらしい
正直それってWPFだよね
まあWPFがSLに吸収されるからね
WPF並の性能でるの?
性能が必要ならWPF使えばいい
なんで劣ってるSLに吸収されるの?
別にフルセットの.NETを潰そうとしてるんじゃなくて、現在ClickOnceが使われてるような用途を取り込もうとしてるんだよね サーバーと通信できてフォームがあって印刷できてOffice操作もできたらたいがい十分なんだから それだけに特化した最小限の.NETを目指してる
>>802 ネイティブアプリよりブラウザ関連のアプリの時代だからな
効率を犠牲にしても利用者にとってお手軽な方を重視する
805 :
777 :2011/01/07(金) 14:38:38
>>794 残念ながらターゲットは Silverlight4 (Windows Phone 7) です。
>>805 モバイルならなおさらサポートしないという決断も必要だよ
807 :
777 :2011/01/07(金) 14:44:50
そこまでこだわる理由がわからん
809 :
777 :2011/01/07(金) 14:54:16
>>808 画像ビューアが画像表示できないとか冗談にもならないのです
こだわりがあってどうしても必要だけど無いなら自作 libjpegあるんだし解析して12bit部分だけでも取り出すとかさw
C#捨ててJava使えば解決するな。
Silverlightで表示できない画像フォーマットなんて12bitJPEG以外にも GIFとかBMPとかTIFFとかよく使われるのが沢山あるだろ 優先順位がおかしい
まあそのうちデフォで使えるようになるんじゃね
ないない Silverlightは「サーバーでやれ」が基本 ましてそんなマイナーな形式
まー端末側で完結させたいってのもわかるが無いなら自力で作るしかないよな 作るのがいやならサーバーへ一旦投げて変換させて受け取るとかさ・・・
>>815 ピクセルデータが取り出せれば後はどうとでもなる。
そのピクセルデータを取り出すのがムズい。
PNGなんかは比較的簡単なんだけどJPEGは…
819 :
デフォルトの名無しさん :2011/01/07(金) 15:59:33
Silverlightと言ってもWP7に限ればスタンドアロンなアプリだからな。 「サーバーでやれ」は通用しない罠。
WP7は流行らないから問題ない
もうAndroid一人がちの流れだ
アンドロイドはエンジニアの好奇心を満たしてるだけだろ 満たされるから勝手に勝ちと持ってるだけで 実際は安かろう悪かろうな端末で統一感も何もないタダ乱立してるだけw
全然違う 売れてるから勝ち
統一感を求める人はiPhone 自由度を求める人はAndroid Windows Phone 7 出番なし
なんだそのコカコーラは・・とか描いてた漫画のような根拠は・・・
iOSもAndroidも消えていいって思ってるMS信者は俺だけなんだろうかw VSですませられると楽なんだよなあ…ww
たしかにWP7は100%Pureなコードが求められるのがネックになるな。 .NETといってもWindowsからの移植すら絶望的となると開発者からも見放される予感。
ビット数拡張するだけでやってることは普通のJPEGと同じなんでしょ コードの変更なんかほぼ単純作業じゃん
830 :
デフォルトの名無しさん :2011/01/07(金) 16:26:04
iPhoneもAndroidも開発環境はショボいが過去のソースコード資産はモリモリあるからな。 WP7はVisualStudioが凄くても流用できるソースコードが皆無という状況が続けば、 WP7である必要など一切無い汎用的なWebアプリに開発者は流れてしまうと思う。
831 :
デフォルトの名無しさん :2011/01/07(金) 16:27:00
>>828 MSがいかに下地を用意するかだな
ピュアなコードでそろえるとなる野良開発で何もないところでやるのと変わらなくなってしまう
これじゃあマイナーな端末と一緒だよw
むしろC/C++使えないことがデメリットになってるw
なんかWP7で盛り上がってるみたいだけど ARM版 Windows8の方が凄いニュースじゃね?
>>832 それは俺もびびったな。
Win9ならまだしも8でやってくるとは…結構危機感持ってるんだろうか。
WP7ピュアマネージドコード問題に比べりゃ、再コンパイルで9割方なんとかなるARMの方が軽い話だな。
CPUにGPUが統合される時代がやってきて、NVIDIAどうなってしまうん?と心配してたが まさかGPUが統合された高性能ARMプロセッサ作ってIntel/AMDに挑むとは思わなんだ。
これ積んだWP7かWP8が出るんだろ?
いらねぇw
\(^o^)/オワタ
C#の話しろよ
CILのバイトコードを直接実行するプロセッサを作ればいいのに
そんなことしなくてもコンバートすればいいだけじゃん Monotouchだってそんな感じでやってるんだし
CILはれっきとしたオブジェクト指向高級言語だよ 直接実行は無理がある
いつになったらネイティブコードはくようになるん?
結局なんだかんだいって普及しちゃったな
>>843 みたいなのもあまり聞かなくなった
ネイティブと.NET それぞれ必要な部分で使い分けたり組み合わせたりしてて それで充分だしな
ネイティブコードに変換して配置するツール使ってるけどイマイチ効果のほどがわからない
>>827 そう、開発者的にはWP7はたぶん救世主。
後発という理由でWP7がすたれていくとなると、それは開発者にとってはつらい事だと思う。
一昔前のPCとかノートPCだとやっぱりGUIの起動の遅さは気になるよ。 メモリ256MB以下でHDDが2.5inchだと(そんなマシンを使ってる人はまだ大勢いる) もう気になるなんてもんじゃない。 ネイティブコンパイラの要望が消えたとはとても思えんな。
>>848 そんなマシンに.netが対応してる重いOS載せて.netアプリ動かそうって方がどうかしてるけどな
スマフォの方はさすがにPCに比べて非力なんだからMSがなんとかしろとか思うけど
CES で Windows 8 がらみの話題がさらっと出てるんだけども、 聞こえてくる話だと、UI 層は今の WPF 的に XAML 的で書けるようなネイティブアプリを書けるようになるっぽい?
>>849 なんか子供の論理だなあ。
ユーザーにとっては.NETかどうかなんて関係ない話なのに。
ヲタ相手のゲームならそういう高飛車な考えでもいいかもしれんが、
ビジネスユーザー相手にそんなこと言ったら商売にならない。
852 :
デフォルトの名無しさん :2011/01/08(土) 01:23:44
>>851 子供ぽいってw
さすがに少しは買い換えろって話だよ
そのもっさりノートで動画みて動画を重くするのが悪いっていうのか?
まあ、その辺り、人の入れ替わり激しいアメリカだと、UX とかに投資してくれるけど、 年功序列な日本だと、昔のままにするのが一番いいからねぇ・・・
改善すれども、「前と違うからわからない」の一言で一蹴されるんだぜ。 経営側も、買い替える気なくす。
855 :
デフォルトの名無しさん :2011/01/08(土) 01:27:15
>>854 それは人を変えた方がいいんじゃないのか?
そんなもっさりマシンで仕事してても効率が悪いと感じない人間なんだろ?
Tera Term、Excel、Wordだけで仕事は済む
>>855 だから、パソヲタじゃあるまいし普通の会社が数年ごとにホイホイPC替えられるかって。
社会人経験ないのかよ。
それに、重要な点はXPが普通に動くようなPCなら、大概のネイティブアプリは
それほど重くないってことだ。
>>855 ヒント: 年功序列、終身雇用。
ほんと、雇用流動性高めるのは急務だと思う。
>>857 その考え方はおかしい。
人件費が一番高い。
新システム導入で人1人減らせるなら結構長く出せる。
860 :
デフォルトの名無しさん :2011/01/08(土) 01:35:17
>>857 いやいやw
256MBのマシンってXPの初期のモデルだろw
中身はPenIIIかPen4になったかどうか(ノートだからPenMになってればいいほう)
さすがにそれはがんばって買い換えろよ
最近だと鼻毛鯖とかあるんだしさ
>>859 どんな逆立ちした思考だ。
そう人件費が一番高いから、ユーザは起動が遅いアプリには不満があるわけ。
起動が遅いのはお前のマシンが古いからだ、なんてのはガキの.....
まあ、君には言っても無駄そうだな。
がんばって買い換えろとか、もう思考がパソヲタ丸出し過ぎる。 企業はパソヲタ君と違ってPCにだけ経費使えるわけじゃないのに。
863 :
デフォルトの名無しさん :2011/01/08(土) 01:40:04
>>861 その人は違うw
ニュー速の癖でage書き込みしてるのが最初に突っ込まれた俺
他にも数人いるよ
お前らはC#の話出来ないんですか?
それは明日でもできるだろ
866 :
デフォルトの名無しさん :2011/01/08(土) 01:41:50
>>862 それは経営者もやばくないか?
遅いマシンで休憩とは別に待ち時間が発生するんだろ?
その待ち時間を時給換算して年間とか計算すればマシン買い替えと比べて・・・とかやるんじゃね?
それをやらないってことは相当無駄があるんじゃないの?
>>861 ビジネスって、「1円のクリップは拾うな、拾う人件費の方が高い」って世界よ。
ほんとにPC使えてる人を雇えてる、使えないやつがクビにできるんなら、新しいPC買う。
実際アメリカだと、PC使えないとクビにされるからって理由で高齢者も普通にPC使えるようになる。
日本は、クビになりにくいからだらだら仕事引き延ばすおじさんほんとに多い。
それで生きていけるならそれがベストだろ 無理してアメ公の真似する必要はない
869 :
デフォルトの名無しさん :2011/01/08(土) 01:51:19
>>868 まあそうだが日本が生産性悪いと言われるのはまさに古いマシンでスワップで
ひたすら待ち時間を発生させつつ集中できないどころかイライラしながら
作業やってしかも残業までして「がんばってます」とかだったら笑ってしまうぜ
というか日本の経営者ってPCにほんと金かけないよな
メモリだけでも増やせばスワップで消費する時間もなくなるのに
あのスワップで思考が止まるのがすげーいやだわ
4GBとか8GBとか載せろってわけじゃなくXPだったら512MBじゃなく1GBあれば
かなり違うのに・・・
256MBのノートのHDDなんて今と比べて遅いしバスの能力も遅いので
スワップなんて発生させたらすげー時間の無駄だよ
ハイエンドをよこせって話じゃないよ
最低限OSの仕組みを理解してぎりぎりの出費でなんとかしてくれって話だけど
どうもアレルギーでまくりの経営者様がいるようだね
>>868 もう破綻済み。
そしてそのしわ寄せが、若者の薄給、就職難。
>>866-867 PCを買い換えた方が効率が高いかどうかはプログラマにとっては関係がない。
関係があるのは、古いロースペーックのPCを使ってるユーザが
現に無視できない割合で存在するということ。
こんなところで「古いPC使うのは非効率だ」などと言っても現実は変わらない。
>>869 いや、ほんと導入ためらうレベルで、PC 使える若い人雇い入れる余裕ない。
全体的に若い会社は普通に PC 買ってる。
873 :
デフォルトの名無しさん :2011/01/08(土) 01:57:57
結論としては社員システム(老人優遇)の弊害ここにありってこと?
>>896 北米やヨーローッパだってそれは似たようなもの。
というより、個人的感触だと日本の方がまだマシだと思う。
なんかバリバリ仕事こなすエリートがいる超優良企業みたいなのだけ想像してないか?
じゃ明日から皆さんはバイトということですので、よろしくお願いします
マ板みたいな話やめろよ そういうのが嫌がここきたのに
C#と全然関係ない話ばかりでワラタ お前らまずは就活しろよw
初回起動以外はネイティブだよね それでも遅いならc++やそもそも機能を減らすしか無いんじゃ
CLRが進化していくからだいじょぶ〜だいじょぶ〜
linqの遅延実行とかC++にない機能がきけばC++よりも速くなったりするんじゃね
JITの結果ってキャッシュされて 次回起動以降にも使われたりするの?
うん
次回起動時もキャッシュされるの?初耳。
されないんじゃなかったっけ NGenかけるかGACに入れたらキャッシュされるんだった気が
#if TEST (略) private void Func() { string s = @" #test ←この行でコンパイルエラー "; } (略) #endif 上記のコードが/d:TESTを指定しないとき error CS1024: プリプロセッサ ディレクティブが必要です。 となるは仕様ですか?
イミフ
仕様 プリプロセッサディレクティブによってスキップされる部分は字句解析の対象にならないから 当然逐語的リテラル文字列中かどうかも判断されない
こんなとこだったよね?
>>881 JITのキャッシュは保存されない。
複数起動してもプロセス間で共有されない。
プロセスが終了した段階で全て破棄される。
1回目が遅いのはコールド スタートアップだから
2回目が早いのはウォーム スタートアップだから +OSのディスク キャッシュが効いてるから
JIT自体は意外と早くて、CLRやJITコンパイラを読み込むためのディスクIOがでかい。
.NETランタイムはネイティブ イメージ サービスでngenされているため、JITされるのはユーザコードのみ。
.NETアプリがVista以降で起動が早いのはプリフェッチ機構でディスクIOの時間を削減できるから。
一回起動したらネイティブイメージを保存しとけばいいと思うんだがどうしてそうしないんだろう
実際ほとんど時間かからないから
>>889 の言うように.NETアプリの起動時間はほぼディスクIO
>>899 うぉーむすたーとあっぷってなんですか?
894 :
デフォルトの名無しさん :2011/01/09(日) 13:57:12
つーか、なんか会社のシステムに立地UI使ってもあれだよね・・ 会社のアプリは地味なのが無難
業務向けアプリでリッチさを売りにしようとするところって、 分析系の可視化くらいよね。 作業用端末をスレートっぽいのにしてタッチ UI にする、 その際に UI もうちょっと真剣に考えてみましょうとかはありかもしれないけど、 物理的なボタンの、指で押してる感覚ないと大分効率落ちるというし。
yahooにログインするプログラムを作ろうとしている者です。 ログインページでPOSTすると、、、 ↓ Response ↓ 自動リダイレクト ↓ Response でリクエスト送信しいるようです。 そして、自動リダイレクト時のクッキーを送信したときに 正しくログインできるみたいなのですが 自動リダイレクト時のクッキーを 取得する方法・方法はありますか? ご教授おねがいします。
yahooってAPI提供してなかったっけ?
複雑なことやりたいときはソケット使ったほうがいいよ HttpWebRequest系は痒いところに手が届かない
>>896 送信も受信もクッキー用のプロパティあるんじゃないの?
900 :
デフォルトの名無しさん :2011/01/09(日) 18:18:40
HttpWebResponse見ながらクッキープロパティ設定してリクエストすればいけるかも
httpで通信するのにソケットからとかいってだるすぎだろ。
つかCookie使うくらいで複雑ってすごいな 今まで良く生きてこれたな
おまいら
>>896 のレスの意図をちゃんと読み取れよwww
>>896 はログインできるコードをつくってうpしてってことだよ
どんだけなんだよw
>>904 知ってるw
クッキーの使い方を解説してるサイトはあるんだし自分でやれってことだよ
>>906 このクソ寒いのに表とかバカの上にマゾかてめーは
>>907 この程度でクソ寒いってすごいな
今まで良く生きてこれたな
試される大地では軒先で人が死んでんねんで
WebRequestとか面倒だからWebBrowserを使ってログインするわ。
もしかして: AllowAutoRedirect
質問です。 Windowsアプリケーションで、再生ボタンを押してwavファイルを再生中に、またボタンを押すとまた一から音声が再生されます。 再生がやり直されず音声が重なるようにするにはどうすればいいでしょうか?
914 :
デフォルトの名無しさん :2011/01/09(日) 23:25:34
>>911 >>896 はそれだろう。
1.AllowAutoRedirectをfalseにする。
2.自動ディレクションせずに1回1回HttpWebResposeを取得。
3.RedirectUriを取得して、リクエスト実行。
4.RedirectUriがnullになるまで2,3を繰り返す。
でいいと思う。
ただし、クッキーをcookiecontainerでそのまま管理すると駄目。
cookiecontainerにAddすると、domain名の1文字目に"."が
追加されてしまうから。微調整が必要。
AllowAutoRedirectはデフォルトだとtrueだから
自動ディレクションでクッキー管理できないからね。
これで
>>896 は解決かな。
タイマーの競合に関する質問です。 現在,Windows.Form.Timerを用いてプログラムを作っています。 一定間隔で動作するタイマーイベントを複数個作ったのですが、 このイベントが最小公倍数で競合を起こしてしまいます。 これを回避したいと思っています。 回避の仕方として考えているのが、 もしAとBが競合を起こしたら、Aをまず実行し、 A終了後必ず次にBを実行するということをしようと思っています。 もちろん複数個なのでタイマー 二個限りのことではありません。 どのようにすればできるのでしょうか。
WinFormsのタイマのイベントハンドラは常にGUIスレッド上で呼び出されるので 平行して複数のイベントハンドラが動作するようなことはありません
917 :
915 :2011/01/10(月) 16:41:34
>>916 早速のご回答ありがとうございます。
もし同じ時間間隔を指定していても、
順番に指定したイベント全てを処理してもらえるのでしょうか?
タイマーは1個にする 次までのインターバルは毎回処理で求める(A用なのかB用なのか、AB両用なのか) タイムアウト時には何用かわかっているので、それに応じて処理する (A処理のみ、B処理のみ、AB両方)
1秒のタイマーを作成してカウンタが3で割り切れるときAを、5で割り切れるときBを実行すればいいとか そういう話ではねえの
順番に呼び出されます 呼び出される順序は、特に変わった実装になっていない限りは先に登録したものが先になるはずですが 保証されているわけではないので順序に依存するようなコードは書いてはいけません
921 :
920 :2011/01/10(月) 16:49:26
すまん上のは文脈を勘違いしたので無視して
競合の意味がよくわからないけど、スレッドタイマー使うんじゃダメなの? FormのISynchronizeInvokeインターフェイスからBeginInvoke呼び出せばGUIスレッドと合流できるし
923 :
915 :2011/01/10(月) 16:59:04
>>918 予めストップウォッチなどで時間を計っておき、
タイマーイベントが呼ばれたときに、
イベント関数内部でどういう処理を行うか判別するということですね。
つまり、指定時間がきたら、該当の関数を実行するという意味でしょうか?
違うのかな?
ところで、タイムアウト時というのは、
どうやってタイムアウトされたというタイミングを取得するのでしょうか。
また、ストップウォッチなどで時間計測していると、
長時間使用しているとオーバーフローが起こりそうで心配です。
まず競合とはどのような状態なのか説明していただきたい
>>923 ストップウォッチじゃなくてタイマー呼び出すごとにカウントされるカウンター使うんじゃね
タイマーが1秒呼び出しなら、1秒xカウントで秒数がでる
で、3とか5の倍数でそれぞれの処理を分けるっていう話じゃね
オーバーフローは21億だから21億秒以上動かすならlong型にすればいいと思うけどそれはまぁないな
>>923 タイムアウトは普通にTickイベントじゃないの?
そもそも今どうやってんの?
>>923 普通に考えるならスレッド立ててスリープ時間設定して起きたらイベント発生
テレパススレw
929 :
915 :2011/01/10(月) 17:19:56
>>925 理解しました。まずはそのやり方でやってみます。
それでもできないようならスレッドタイマーを使うやり方も考えてみます。
他にもご回答くださった方、ありがとうございます。
「複数のタイマー使いたいんですけどどうすればいいでしょう?」 という質問の答えが「タイマー1個にしろ」でいいのか?
本人が納得するなら経過なんぞどうでもよかろうなのだ
932 :
デフォルトの名無しさん :2011/01/10(月) 17:41:41
競合が起こりうるなら、1秒単位とかで駆動させて
処理Aと処理B用のカウンターをカウントアップして
時間になったら目的の処理を行えばいいだけ
>>930 よく分かってない人が2個タイマーが必要と思い込んでるだけの場合は
1個で・・・みたいなのでもいいと思うよ
どうしても2個じゃなければいけないという根拠があるならそりゃね・・・
ちょっと不安になってきたんだが timer1とtimer2のtickイベントがほぼ同時に起きたとしてなにか問題ってあるんか?
大丈夫だ、問題ない
935 :
933 :2011/01/10(月) 17:48:27
どういう問題を想定しているのか、に訂正 バカな俺に教えてくれ
一方のTickしか発生しないかもしれないと心配してるんだろ 普通に考えて全て順番に発生すると思うけどなぜ試さない
カウントアップする方法だと誤差が大きいと思うが大丈夫か?
938 :
デフォルトの名無しさん :2011/01/10(月) 18:07:37
>>936 タイマーってわりといい加減じゃなかったっけ?
AとBという処理があって同時に発生した場合は先にどちらかを・・というのであれば
>>932 のように一つのタイマーでやるのが簡単でしょ
大丈夫だ、問題ない
940 :
デフォルトの名無しさん :2011/01/10(月) 18:09:11
WM_TIMER自体優先度最低だから気にすんな
GUIスレッドが忙しい時は呼ばれなかったりするんだっけ? 忙しくてキューに溜まりまくったタイマーイベントが一斉に発生とかあったら怖いな
時計の秒針をすすめるとかどうでも良い処理ならGUIタイマーでいいかもしんないけど 厳密に処理したいときはスレッドタイマー使うべき ていうか、ViewのコードでView以外のことするのは悪い習慣
その場合は一つのタイマにつき一つにまとめられるはず 今問題になってるのはタイマが複数あったときに区別されるかどうかという話だろ? それは心配要らない
一番いいタイマーを頼む
>>945 くそっこんなのでwwwあまりにも不意打ちwwww
無料RPG製作ツール「ロープレジェネレーター」 直感的操作で簡単なゲームが作れます。 簡単に配布可能な状態に出力することができます。 (HSP製のソースコード付きで、スクリプトの知識があれば自由度の非常に高いカスタマイズ ができます) 他にも仲間預かり機能(100人も)や、仲間の状態/状態異常を細かく設定できたり、 乗り物が作れたりゲーム中に画像を差し込んだり、回転やフラッシュなどのエフェクト なんかも簡単に作れる様です。戦闘はデフォだとドラクエ系。 移動は矢印キーの他に、キャラがマウスを追っかけたりするとのこと。 他にはオートアクションというのがあってオリジナルシステムの製作に役に立つかも しれない機能です。これは、マップエディタで設定することで、「マップに入った時・ 出た時・一歩歩いた時・戦闘開始前」に自動的に実行されるアクションを設定できる 機能です。 ■分からないことや要望は掲示板へどうぞ。他にもいろいろ進化中みたい。
OK NGワードに登録した
HSPかよ
仮想キーコード定数をスキャンコードに変換する際に、 MapVirtualKeyを用いたくないのですが、 どのようにすれば実現できますか?
お前らHSP馬鹿にするけどHSPで市販ゲームクラスのRPG作った奴いるんだぞ まぁHSPはゴミだけどね
「ロープレジェネレーター」とやらのネガキャンか、C#スレの荒らしのどっちか。 HSPユーザならゲ制作板以外の場所に張りに来るわけないな。
HSPはC#と何か関係があるの?HSPはC#で作られてるとか
関係ないよ
以下この話題に触れた者には災いが訪れる
最近やっと少女時代のメンバーの顔を見分けられるようになった
顔認識ですか。興味深いですね
どうせなら顔の作者まで見分けてくれ
そんなに自分の顔ころころとかわってたの?
.NETで顔認識とかマジかよ
>>919 >>925 >>932 の考え方(毎Tickカウントアップ)は超初心者が嵌り易い罠だから絶対に参考にしないように
タイマコントロールのTickイベントなんて簡単にずれるしすっ飛ばされる
既に何人かが指摘してるけど、明確に否定してあげないと今後も犠牲者が出そう
タイマコントロールを使うときは短くTickさせて毎回基準時との差分を見て処理させた方が良い
その点で
>>923 の方が優れたセンスを持ってる
>>930 「複数のタイマーが使いたい」なんて誰が言ってんだ?
>>936 お前が試しもせずに言ってる「普通」は完全に間違ってるわけだが何故試さない
え?
>>961 なんだとてめーセンスあるとか何様のつもりだ表出ろ
私の為に争うのはやめてっ!!!>_<
女はすっこんでろ!!
俺の為に争うのはやめてっ!!!>_<
俺女キモいです( ^ω^)
>>968 ごめん、俺もその方法がすごくいいと思います。
ちょっと逝ってくる
λ..............
崖| ̄ ̄ ̄ ̄ ̄
>>968 僕もその方法がすごくいいと思います。
ちょっと吊ってくる
:: .|ミ|
:: .|ミ|
:: .|ミ| ::::::::
::::: ____ |ミ| ::::
:: ,. -'"´ `¨ー 、 ::
:: / ,,.-'" ヽ ヽ、 ::
:: ,,.-'"_ r‐'" ,,.-'"` ヽ、 ::
:: / ヾ ( _,,.-='==-、ヽ ヽ、
:: i へ___ ヽゝ=-'"/ _,,> ヽ
:: ./ / > ='''"  ̄ ̄ ̄ ヽ
:: / .<_ ノ''" ヽ i
:: / i 人_ ノ .l
:: ,' ' ,_,,ノエエエェェ了 /
i じエ='='='" ', / ::
', (___,,..----U / ::
ヽ、 __,,.. --------------i-'" ::
ヽ、_ __ -_'"--''"ニニニニニニニニヽ ::
`¨i三彡--''"´ ヽ ::
/ ヽ :: ┼ヽ -|r‐、. レ |
/ ヽ:: d⌒) ./| _ノ __ノ
PrintWindow以外で、かつALT+PrintScreen以外で、 隠れたウィンドウのキャプチャリングを行う方法を教えてください。
>>969 ,970,971
一つ賢くなってよかったな
人の話を素直に聞く姿勢は大事
しかも自演っぽい。
ばれたか
俺がガンダムだ!!!
>>977 お前だけはお呼びでない
俺はザクの方が好きだ
ばかたれ
俺が自演だ
コンソールアプリの新しいプロジェクトを作成して 名前空間を全部削除しました program.csには namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } } だけ書かれています ライブラリを使わずに文字を表示させるにはどうしたら良いでしょうか? つまりConsoleクラスとその中のWriteメソッドを自作したいです どういうコードを書けば表示できるのか興味本位の質問なので実用的でないのは承知してます
C#じゃアセンブラは書けないなぁ
実用的云々の前にframeworkとC#がどういうものか判ってない MSDN読み直してくるべき
Consoleクラスを自作したいならReflectorでソースコード見てみたら? さすがにライブラリ使わずにっていうのは無理だろうけど
Win32API呼べばいいよ
Win32API呼ぶのにSystem.Runtime使うなよ
988 :
デフォルトの名無しさん :2011/01/11(火) 14:40:55
>>987 じゃあSystem.Runtimeも自作で・・・
.net意味ねーw
intやstringも使えないな
DataGridViewがあまりにも使いにくいです。 助けて。
ライブラリ使わずにシステムコールを呼ぶ仕様なんてWindowsにあったっけ? なければ、リバースエンジニアリングしないかぎり、ライブラリは必須。 Linuxならアセンブラで呼ぶための仕様があったと思うけど。
さあどうする
それは知りません
では終了します
ところで・・・
次スレの季節ですね。
だが断る
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。