ふらっと C#,C♯,C#(初心者用) Part134

■ このスレッドは過去ログ倉庫に格納されています
2017/11/28(火) 21:30:48.55ID:7U+HR4FY
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/12/05(火) 00:13:40.14ID:bv7GN3wK
id よりも先祖の階層は、指定する必要がない

最も子孫の、id 以降を指定するだけでよい
2017/12/05(火) 00:37:34.79ID:me3XgAZI
>>151
>>152
>>153
ありがとうございます!
明日確認してみます。
155デフォルトの名無しさん
垢版 |
2017/12/05(火) 05:15:33.65ID:cXtd7Bhl
あるtextBox1と表示内容が同じtextBox2を作りたいのですが
textBox1.Text="hoge";
textBox2.Text="hoge";
と記述するのではなくて
visualstudioのデザイナーでコピーするだけでtextBox2を簡単に作れる様な方法はないでしょうか?
2017/12/05(火) 06:21:13.05ID:td42eqy6
デザイナーでコピーすればいいじゃん
157デフォルトの名無しさん
垢版 |
2017/12/05(火) 07:59:45.98ID:IsGNrsv0
連動させたいってこと?
158デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:01:01.32ID:cXtd7Bhl
すいません、Textの内容hogeは計算結果をstringに変換したもので毎回違うので
単にコピーしただけでは出来なくて困っています
159デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:02:23.95ID:cXtd7Bhl
はい、連動させたいということです
データバインドというので出来るのかなと思ったのですが難しくてよくわかりませんでした…
160デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:05:41.37ID:cXtd7Bhl
複数のタブで色々な計算をしていて、その結果を見やすい様にひとつのタブにまとめて表示させたい
という感じです
161デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:09:42.45ID:IsGNrsv0
コンテクストクラスを作ってタブ開いたときにそのコンテクストオブジェクトの内容を表示させる
2017/12/05(火) 08:49:06.85ID:aO16oHUn
更新タイミングでそうなるように値入れればいいじゃん
2017/12/05(火) 08:50:24.01ID:aO16oHUn
何ができなくて困ってるのか全くわからない
164デフォルトの名無しさん
垢版 |
2017/12/05(火) 09:35:53.48ID:5W3/kp5y
うむ。
textBox1.Text=res1;
textBox2.Text=res1;

textBox1.Text=res2;
textBox2.Text=res2;

こんな感じで毎回両方に代入すればいい。
2017/12/05(火) 11:10:31.20ID:8/AWIhin
なんで要素1つのタプルが宣言できねえんだよこのポンコツ
166デフォルトの名無しさん
垢版 |
2017/12/05(火) 12:23:48.53ID:Z3/XP0Jc
changed使えば
2017/12/05(火) 13:39:29.23ID:92ldxPu3
>>155
文字通りに解釈すると表示が同期するコントロールを継承・またはユーザーコントロールとして新しく作るってなるけど
>>164とどっちが楽とか考えてみたらいいよ
2017/12/05(火) 13:44:53.19ID:yVpW5F/D
EF初心者なんですがPKが有るDBでsaveChangesしようとするとPKが重複してるというエラー出ます。解決策を教えてください。
2017/12/05(火) 14:34:58.67ID:dOKGjr2C
コードを修正する
2017/12/05(火) 18:14:21.88ID:BG6o1pBu
増減する情報(例えば、車種、色、ナンバー等)を管理するのに適したものは何ですか?

自作クラスを作って
  List<myClass> myList;
  myList.Add(new myClass());
myList.Remove(〜);
とするのと、
DataTableで、車種、色、ナンバーを Columnsとし、
Row の Add と Remove するのと、

実行速度とかの面で、どちらがよいでしょうか。
171デフォルトの名無しさん
垢版 |
2017/12/05(火) 18:27:09.86ID:K4lUm6I7
>>170
Listに1票
2017/12/05(火) 18:28:03.32ID:AWED9izS
ListのAddはO(1)、RemoveはO(n)
DictionaryのAddはO(1)、RemoveはほぼO(1)
なのでキーがユニークになるならDictionaryを使えばOK

あとDataTableは余程のことが無い限り使っちゃダメ
2017/12/05(火) 18:38:38.70ID:xkHn8EO8
>>170
それを保存するならDBを使うべき
SQLiteとか
2017/12/05(火) 18:39:45.00ID:BG6o1pBu
DataTable はダメなんですか?

別件ですが、日時を有する情報で、ある特定の期間の直近のデータを特定したい場合があり、
Selectを使いたいのでDataTableを使った経験があるのですが、よくなかったですか?
2017/12/05(火) 18:41:02.99ID:BG6o1pBu
>>173
保存はしません。あくまでも内部の情報としての利用です。
2017/12/05(火) 18:43:51.03ID:xkHn8EO8
DataTableは土方臭いから、やり方に拘るタイプの人は嫌ってることが多い
DataTable自体は、パフォーマンスに優れ、クソ安定した優秀な技術
愛用してるプログラマがクソなだけ
2017/12/05(火) 18:47:31.87ID:Yyswv8hy
DataTable よりも List を使うと 10 倍早くなる

DataTable 8.32, 8.12, 8.12 sec
list 0.88, 0.83, 0.83 sec
とう具合に、DataTable よりも list のほうが 10 倍早くなっています。
2017/12/05(火) 19:00:51.66ID:PhhOBNeX
その10倍がボトルネックにならなきゃどうでもいい
2017/12/05(火) 19:04:36.42ID:rIDRW6+f
>>178
質問者が実行速度にこだわっているのならどうでもよくはない
そんな話するのならこの質問がどうでもいいってなる
2017/12/05(火) 19:13:14.27ID:BG6o1pBu
皆さん、ありがとうございます。
速度も速いしクソにはなりたくないので、今回の案件ではlistを使う方向で進めることにします。

先ほど書いたとおり、以前DateTime型の絞込みでSelectが便利だと思いDataTableを使ったことがあります。
この場合も、listで、自力でソードや比較を実装した方が良かったのでしょうか?

まぁ速度の兼ね合いかとは思うのですが、皆様ならどうしますか。
2017/12/05(火) 19:15:08.60ID:0r8GtYYi
8秒と0.8秒だったら大騒ぎだが80msと8msの差だったら無視できるという意味では
どういうものをどのくらい扱うかで違うから本人がテストしなきゃ仕方ないね
2017/12/05(火) 19:17:31.03ID:k+S65OIc
DataTableはオワコン
Microsoftも切捨てようとしたがクレーマーの圧力に負けてしぶしぶサポートすることになった
2017/12/05(火) 19:19:50.77ID:rIDRW6+f
>>180
まず用途が管理なのに保存しないとか意味不明なんだけど
データその都度読み込んで捨てるのなら作りやすい方で作って
速度アップ見込めそうなら形式を変えるだけ
2017/12/05(火) 19:21:31.02ID:ICEc9nSZ
何れにしてもLinqは覚えておこう
2017/12/05(火) 19:47:42.46ID:C7A8AnoX
RemoveするならGetHashCodeとEqualsをちゃんと実装してHashSetにぶち込んだ方が良くない…?
2017/12/05(火) 20:12:24.58ID:ParyWK8l
リストに重複データが存在するかもしれないしHashsetにしていいかは不明だな
設計書とか作って主キーやユニークキーにあたるデータを明示的にしてんならそれでいいけど大抵はIEqualityComparer指定する方が使い勝手がよさそう
2017/12/05(火) 20:22:49.22ID:PhhOBNeX
>>180
先ずは作り易い方で作れ
速度面の改善をするのは、一通り完成してからでいい

ボトルネックは大抵、標準ライブラリからどのクラスを採用するかなんてレベルには無いから気にすんな
188デフォルトの名無しさん
垢版 |
2017/12/05(火) 20:48:47.73ID:XeWx8Qol
>>169
分からないなら答えなくてもいいよ
2017/12/05(火) 21:03:05.57ID:BG6o1pBu
皆さん、レスありがとうございます。

色々と馴染みのないキーワードが出てきたので少しずつ調べて行きたいと思います。
190デフォルトの名無しさん
垢版 |
2017/12/05(火) 21:42:08.05ID:IsGNrsv0
Googleのトップがプログラミング
191デフォルトの名無しさん
垢版 |
2017/12/06(水) 08:39:00.97ID:Y6zaPgMb
>>182
クレーマー言うな。
EFが普及してないんだから仕方ない。

msはDataTableよりvb6に引導を渡してくれ。
2017/12/06(水) 15:27:39.07ID:nfsVfh5P
Webフォームを作っています。
サーバ上の特定のフォルダに、とあるファイルが不定期に生成されます。
それを監視してWebフォームに表示したいのですが、FileSystemWatherのようなコントロールはないでしょうか?

ない場合、Timerで回すしかない考え付かないのですが、通常Webフォームで1秒間隔程度なら許容されるインターバルでしょうか?
2017/12/06(水) 15:39:57.42ID:A61Dczsv
>>192
無いと言うか、あったところでその状況をサーバに取りに行かないとどうにもならん。

ユースケースによるかと。
コネクション数を気にしないなら、ファイルが生成されるまでタイムアウトしないAPI作って、ajaxで呼ぶのが一番機敏に動くと思う。
一秒間隔でリクエストはちょっと多いんじゃないかな。生成されてない画面を10人が10分開いたままにしたら、それだけで6000行もログが埋まってしまう気がする。
194デフォルトの名無しさん
垢版 |
2017/12/06(水) 15:53:34.43ID:sywZU+Dz
>>192
問題ないけど不定期ならプッシュ通知の実装もありますよ
2017/12/06(水) 15:55:24.63ID:nfsVfh5P
>>193
言葉足らずですみません。

IISが動いているサーバにデータのファイルが不定期に生成されます。
それをWeb画面で様子をみたいという要望です。
動いてる様子が分かればいいのですが、ファイルがまとまって生成される事があるため、
ある程度短いインターバルにしたいとは思ってたのですが。

ローカルアプリも考えたのですが、その場合、複数のPCがサーバのファイルを覗きに行く事になるので、それはそれで嫌かなと思いまして。

> ファイルが生成されるまでタイムアウトしないAPI作って、ajaxで呼ぶ
もう少し教えてもらえないでしょうか。
APIって具体的に何で作ったどんな形式のものですか?
調べるヒントをください。


>>194
同じくもう少しヒントを!どんな感じの実装ですか?
196デフォルトの名無しさん
垢版 |
2017/12/06(水) 16:07:24.35ID:sywZU+Dz
>>195
ごめん、Webプッシュと言うらしいけど未だ使ったことは無いんだ
グーグル先生に聞いてください
2017/12/06(水) 16:32:05.88ID:0RCrbv9w
>>195
SignalR
198デフォルトの名無しさん
垢版 |
2017/12/06(水) 17:50:23.31ID:3KlZJVUn
C#を採用したTizen4.0っていうOSのスマホが発展途上国でバカ売れらしい
2017/12/06(水) 18:10:03.35ID:nv7gWMkp
indexでF5連打
2017/12/06(水) 18:21:23.18ID:nv7gWMkp
この人と同一人物じゃないかと疑ってしまう

703 名前:デフォルトの名無しさん (ワッチョイ 02c2-8CrJ)[sage] 投稿日:2017/11/21(火) 21:20:36.17 ID:8K/pnPq30 [1/2]
最近のオシロスコープはWebサーバー機能を持っていて、Webブラウザでアクセスすると
計測画面を表示させることができますが、C#で同じような機能を簡単に実装することはできるでしょうか?
リモートデスクトップではなく、WinFormsのアプリ画面だけをネット越しに共有する感じです。
2017/12/06(水) 18:23:00.31ID:zMhQDjeD
>>195
Web Socketかポーリングを使う
つまりSignalR
2017/12/06(水) 19:40:50.48ID:trEM6d6d
ポーリング間隔はどっちにしろ決めないと話にならない
2017/12/06(水) 19:44:16.54ID:WLCLi8WA
ロングポーリングかWebSocketならポーリング間隔は不要だぞ
2017/12/06(水) 19:50:30.04ID:trEM6d6d
>>203
どういう仕組み?
2017/12/06(水) 19:54:18.94ID:trEM6d6d
サーバー側でクライアント数の把握をするの?
悪手じゃね?
2017/12/06(水) 20:24:33.34ID:WLCLi8WA
通知が取得できるようになるまで長いことセッション張りっぱなしにするだけだぞ
悪手もクソも普通に使われてる手法
2017/12/06(水) 20:26:17.59ID:jQEB5IsZ
>>205
SignalR知らんの?
2017/12/06(水) 20:50:56.89ID:trEM6d6d
>>206
それってサーバー側でクライアントを管理してないとできないよね?
2017/12/06(水) 20:51:29.75ID:trEM6d6d
>>207
いや、これ仕組みの話だから
2017/12/06(水) 21:59:20.59ID:W/tg1Ic8
>>208
それが何か?
普通のHTTPリクエスト処理だって、リクエストを受け付けてからレスポンスを返すまで、
君の言葉で言えばクライアントを管理してるだろ
そのレスポンスを返すまでの時間が長いだけだよ
2017/12/06(水) 22:02:13.59ID:trEM6d6d
>>210
ファイル更新が丸一日無かったらどうなんの?
2017/12/06(水) 22:13:07.11ID:W/tg1Ic8
>>211
リクエストにタイムアウト付けるに決まってるだろ
2017/12/06(水) 22:15:10.75ID:H2dXQlT6
元の質問Timerで一秒間隔で呼び出すとかなんだが大丈夫なのか?
2017/12/06(水) 22:29:46.09ID:JrOz0Sq/
>>213
5chのリクエスト数に比べると屁みたいなもんだろな。
2017/12/06(水) 22:31:12.35ID:9Cl2Q0EY
そもそもサーバーのファイル一覧を表示するWebアプリなんか自分で作らなくても出来合いのOSSが腐るほどあるだろ
自分で作るより遥かに品質もいいよ
2017/12/06(水) 22:34:48.06ID:H2dXQlT6
>>214
サーバーがそんな強力な前提か
2017/12/06(水) 22:35:13.44ID:lccJ0ap6
webベースのファイル管理サービスでイケてるやつあったっけ?
2017/12/06(水) 22:36:33.33ID:W/tg1Ic8
>>214
キャパシティ的な話をするなら、そもそもサーバーのディレクトリを各クライアントがネットワークドライブにマウントしても全く問題もないだろうな
用途的に、問題になるほどにクライアントの数が多いとは思えん
219213
垢版 |
2017/12/06(水) 22:36:35.54ID:H2dXQlT6
って違うw釣られて間違えたw
クライアント側の話だよ
2017/12/06(水) 22:41:18.34ID:9Cl2Q0EY
>>219
ロングポーリングなら関係ないぞ
結局はサーバー側でのファイル生成イベントの発生頻度次第
2017/12/06(水) 22:43:23.56ID:JrOz0Sq/
>>218
タスクトレイ常駐型のデスクトップアプリでも作った方が使いやすいだろうな。
2017/12/06(水) 23:56:51.95ID:5T1FsMv1
サーバー側はFileSystemWatcher(だったっけ?)でフォルダ監視してなんかあったらテキストファイルでもDBでも適当な保管場所に情報を保存するサービスと
その保存場所から自動更新でひたすら情報を読み取るWeb画面作ればよくね?

自分ならそうするわ
ボリューム的に半日仕事で終わるし
223デフォルトの名無しさん
垢版 |
2017/12/07(木) 01:41:57.78ID:h6BVmLyc
1秒じゃなくて4秒にしよう
2017/12/07(木) 07:03:53.69ID:e1xCIudC
他のアプリにキーボードのコマンドを送りたいのですが、どの様な方法があるでしょうか?
sendinputなど調べてみたのですが例が少なく今一理解出来ませんでした
225デフォルトの名無しさん
垢版 |
2017/12/07(木) 07:58:46.72ID:h6BVmLyc
プロセス間通信
2017/12/07(木) 08:07:25.81ID:QlnDuWpW
>>222
> その保存場所から自動更新でひたすら情報を読み取るWeb画面作ればよくね?
だからそれやるとクライアントが多い時にサーバーがパンクするからSignalRとかでサーバーから通知するって話
まあサーバーから通知って言うけど仕組み的にはイベント発生までレスポンスを返さないって言うだけのことなんだけどな
2017/12/07(木) 08:16:20.37ID:1QpgLYuZ
なつかしのSendMessageとか
228デフォルトの名無しさん
垢版 |
2017/12/07(木) 08:27:43.21ID:teoFHcQT
>>224
SendKeysで
sendinputは他のプロセスには送れない
229デフォルトの名無しさん
垢版 |
2017/12/07(木) 08:50:35.95ID:afn7IHoQ
.netの場合クラスないでFontオブジェクトを生成した場合にはクラスを解放した場合は
Fontオブジェクトは解放されるの? Disposeすべきかどうかはどうやって調べたら
いいのだ?
230デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:06:11.39ID:lA04OzcH
>>226
しないっつうのw どういう理解してる?
なんのためにわざわざ別にサービス作って保存してんだ

これでパンクするならごく普通のWebサービスも作れんわ
231デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:31:29.62ID:vYoZ1cCC
>>229
パフォーマンスを要求するなら適切なタイミングで解放すべき。
どうでもいいならガーベッジコレクタに任せる
232デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:32:55.56ID:vYoZ1cCC
質問の答えになってなかった
233デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:43:44.03ID:teoFHcQT
>>229
IDisposable実装してないクラスは放置で良いと思ってる。
2017/12/07(木) 10:56:49.03ID:ODzGS5Kr
FontをDisposeするコードは見たことも発想も無かったな
newで作ったら全部Disposeする発想なのか
235デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:58:19.97ID:vYoZ1cCC
Font, Pen, Brushはサイズ重いしな
2017/12/07(木) 11:44:12.26ID:Rln0TdUu
>>234
Fontはコントロールを自作する場合は(ほとんどの場合手抜きで)コントロールと同じ寿命に
することもあるけど、usingで対処できる場合が大半でしょ
2017/12/07(木) 12:54:28.08ID:QlnDuWpW
>>230
見たときに最新情報になってりゃいいんじゃなくて、イベントが発生したらあまり遅れずにクライアント側の画面を更新するんだぞ?
なぜSignalRとかの話になってるのか理解してないだろ
238デフォルトの名無しさん
垢版 |
2017/12/07(木) 13:02:41.60ID:lA04OzcH
>>237
そもそもWeb画面で見たいっつう要望じゃん
つうか100台同時アクセスして毎秒更新してもカスみたいな負荷だわこんなもん
一体どんな骨董品で動かす想定してんだよ
239デフォルトの名無しさん
垢版 |
2017/12/07(木) 13:07:11.00ID:lA04OzcH
そうでなくてもSignalRなんているかよ
サービスでtcpポートlistenしてイベント発生する都度情報を垂れ流す古き良きソケット間通信で十分だろw
240デフォルトの名無しさん
垢版 |
2017/12/07(木) 13:09:35.59ID:teoFHcQT
日本語で
241デフォルトの名無しさん
垢版 |
2017/12/07(木) 13:22:15.77ID:2pT1zkKO
>>239
ブ ブラウザ画面の話してるから要するにWebSocketってこと?
242デフォルトの名無しさん
垢版 |
2017/12/07(木) 13:29:39.70ID:lA04OzcH
>>241
いや
デスクトップアプリにするんでもソケット間通信でいいよねっつう話
243デフォルトの名無しさん
垢版 |
2017/12/07(木) 13:51:52.29ID:+NxgTnqm
Webアプリで素のソケット通信って何なのさ?
2017/12/07(木) 14:33:53.52ID:LGA5S92E
質問者置いてけぼりでワロタ
いつの間にかサーバ側を何とかする話になってる
245デフォルトの名無しさん
垢版 |
2017/12/07(木) 14:40:55.27ID:+NxgTnqm
皆さん、単純なものを複雑に実装するスキルをお持ちのようでw
2017/12/07(木) 15:33:24.53ID:BPsvGxGu
C#でデーモン作って状況をDBに保管して、webシステムは普通にDBからページ作れば良いんじゃね?
セッション全てがフォルダアクセスに行くと面倒だからそれだけ避ければいい
247デフォルトの名無しさん
垢版 |
2017/12/07(木) 16:02:17.31ID:cbI0OqL3
知らないのならば
2017/12/07(木) 16:10:15.58ID:CONsZMOl
>>195
見たい時にボタンクリックして最新情報を取得すればいいやん。
常時モニターする必要性は無いだろ?
2017/12/07(木) 16:16:30.86ID:3BaUjcas
本当に初歩的なことで無知で予め謝るね、ごめんなさい。

var revokedPasswords = [
];

function getAuthenticationHash (password) {
var hasher = new jsSHA("SHA-256", "TEXT");
hasher.update("vira " + password.trim().toLowerCase() + " mate");
return hasher.getHash("HEX");
};

function isValidPassword (password) {
if (revokedPasswords.indexOf(hash) >= 0)
return false;

var hash = getAuthenticationHash(password);
if (validPasswords.indexOf(hash) >= 0)
return true;

return false;
};

context.getAuthenticationHash = getAuthenticationHash;
context.isValidPassword = isValidPassword;

というのがあって、これはパスワードを”SHA-256”ってやつで変換しろってことであってるのかな?
250デフォルトの名無しさん
垢版 |
2017/12/07(木) 16:19:30.73ID:bi5OWsBC
>>249
ここはc#スレです
251デフォルトの名無しさん
垢版 |
2017/12/07(木) 17:32:36.95ID:2pT1zkKO
>>249
はいそうです。
252デフォルトの名無しさん
垢版 |
2017/12/07(木) 18:14:35.54ID:+Wu2cJH/
>>227>>228
ありがとうございます

最終的にバックグラウンドでキー入力を他アプリに送りたいのですが
どういった方法があるでしょうか?
■ このスレッドは過去ログ倉庫に格納されています