X



ふらっと C#,C♯,C#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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
0136デフォルトの名無しさん
垢版 |
2017/12/01(金) 21:14:22.99ID:IpWMomyL
outって使った記憶無いなぁってプログラム書いてたらTryParseで普通に使ってた
0138デフォルトの名無しさん
垢版 |
2017/12/02(土) 02:52:21.48ID:GXJK2Or3
Parallelで走らせてる処理を一時停止させる方法ない?
0140デフォルトの名無しさん
垢版 |
2017/12/02(土) 09:04:32.19ID:VVl/8CKy
private class Pixel
{
public byte R { get; }
public byte G { get; }
public byte B { get; }
public int Index { get; }

public Pixel(IList<byte> data, int index)
{
B = data[0];
G = data[1];
R = data[2];
Index = index;
}
}

private static (int x1, int x2, int y1, int y2) Solve(BitmapSource source)
{
var width = source.PixelWidth;
var height = source.PixelHeight;
var stride = width * source.Format.BitsPerPixel / 8;
var data = new byte[stride * height];

source.CopyPixels(data, stride, 0);

var pixels = data.Buffer(source.Format.BitsPerPixel / 8).Select((x, i) => new Pixel(x, i));

あるところのコピペですが、最後の行の data.Bufferで 「'byte[]' に 'Buffer' の定義が含まれておらず、型 'byte[]' の最初の引数を受け付ける拡張メソッド 'Buffer' が見つかりませんでした。」
となります。 Byte型にBufferメソッドはないのですが、なぜこのような記述になっているのでしょうか?
0143デフォルトの名無しさん
垢版 |
2017/12/02(土) 09:20:05.04ID:y4HB0lRC
>>140
多分元々はBufferメソッドは拡張メソッドとして定義されてたものだと思う。配列型のメンバに無くてもあとから追加したように見せるやつ。
0145デフォルトの名無しさん
垢版 |
2017/12/02(土) 11:40:59.81ID:VVl/8CKy
みなさんどうもありがとうございます。

>>141
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
なので問題はないと思います。

>>142
古い.NET Frameworkしろってことですよね?
やってみたんたんですけど、Byte型に Bufferメソッドはなかったです。

>>143
自作した拡張メソッドなら他人にはわからないですね。
やってることはBitmapImageからピクセルデータの配列を取得してるので
べつのものに置き換えて済みそうな気がするんですが・・・
>>144
知らないのでググってみました。色々できそうなので調べてみます。
0147デフォルトの名無しさん
垢版 |
2017/12/02(土) 14:36:47.13ID:d+Ubtrjs
C#のint配列はArrayの派生クラスですか?
0149デフォルトの名無しさん
垢版 |
2017/12/02(土) 15:33:22.07ID:suCQ4i95
>>147
形式的にそう見えるようになっているけど、実際には通常のクラスの継承とは異なってるよ
配列は配列型という特別な種類の型であって、クラスや構造体とはまた異なるものだ
0150デフォルトの名無しさん
垢版 |
2017/12/04(月) 23:04:09.19ID:vR5lLnEi
AngleSharpの使い方について教えてください!

<div class="aaa" hoge="javascript:changeBackgroundColor(this);"> 
<span id="idxxx" class="laste_span">取得したい箇所</span> 
</div> 

このようなelementがあったとして、 

// 指定したサイトのHTMLをストリームで取得する 
var doc = default(IHtmlDocument); 
using (var client = new HttpClient()) 
using (var stream = await client.GetStreamAsync(new Uri(urlstring))) { 
  // AngleSharp.Parser.Html.HtmlParserオブジェクトにHTMLをパースさせる 
  var parser = new HtmlParser(); 
  doc = await parser.ParseAsync(stream); 
}

ここからdocに対してどのようにすれば取得したい箇所が得られるのでしょうか?
0151デフォルトの名無しさん
垢版 |
2017/12/04(月) 23:14:30.56ID:LqjCBPi+
...
}

var elm=doc.QuerySelector(“div.aaa span#idxxx”);
var text=elm.TextContent.Trim(); //文字列を取得
0153デフォルトの名無しさん
垢版 |
2017/12/05(火) 00:13:40.14ID:bv7GN3wK
id よりも先祖の階層は、指定する必要がない

最も子孫の、id 以降を指定するだけでよい
0155デフォルトの名無しさん
垢版 |
2017/12/05(火) 05:15:33.65ID:cXtd7Bhl
あるtextBox1と表示内容が同じtextBox2を作りたいのですが
textBox1.Text="hoge";
textBox2.Text="hoge";
と記述するのではなくて
visualstudioのデザイナーでコピーするだけでtextBox2を簡単に作れる様な方法はないでしょうか?
0157デフォルトの名無しさん
垢版 |
2017/12/05(火) 07:59:45.98ID:IsGNrsv0
連動させたいってこと?
0158デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:01:01.32ID:cXtd7Bhl
すいません、Textの内容hogeは計算結果をstringに変換したもので毎回違うので
単にコピーしただけでは出来なくて困っています
0159デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:02:23.95ID:cXtd7Bhl
はい、連動させたいということです
データバインドというので出来るのかなと思ったのですが難しくてよくわかりませんでした…
0160デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:05:41.37ID:cXtd7Bhl
複数のタブで色々な計算をしていて、その結果を見やすい様にひとつのタブにまとめて表示させたい
という感じです
0161デフォルトの名無しさん
垢版 |
2017/12/05(火) 08:09:42.45ID:IsGNrsv0
コンテクストクラスを作ってタブ開いたときにそのコンテクストオブジェクトの内容を表示させる
0164デフォルトの名無しさん
垢版 |
2017/12/05(火) 09:35:53.48ID:5W3/kp5y
うむ。
textBox1.Text=res1;
textBox2.Text=res1;

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

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

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

実行速度とかの面で、どちらがよいでしょうか。
0171デフォルトの名無しさん
垢版 |
2017/12/05(火) 18:27:09.86ID:K4lUm6I7
>>170
Listに1票
0172デフォルトの名無しさん
垢版 |
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は余程のことが無い限り使っちゃダメ
0174デフォルトの名無しさん
垢版 |
2017/12/05(火) 18:39:45.00ID:BG6o1pBu
DataTable はダメなんですか?

別件ですが、日時を有する情報で、ある特定の期間の直近のデータを特定したい場合があり、
Selectを使いたいのでDataTableを使った経験があるのですが、よくなかったですか?
0176デフォルトの名無しさん
垢版 |
2017/12/05(火) 18:43:51.03ID:xkHn8EO8
DataTableは土方臭いから、やり方に拘るタイプの人は嫌ってることが多い
DataTable自体は、パフォーマンスに優れ、クソ安定した優秀な技術
愛用してるプログラマがクソなだけ
0177デフォルトの名無しさん
垢版 |
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 倍早くなっています。
0179デフォルトの名無しさん
垢版 |
2017/12/05(火) 19:04:36.42ID:rIDRW6+f
>>178
質問者が実行速度にこだわっているのならどうでもよくはない
そんな話するのならこの質問がどうでもいいってなる
0180デフォルトの名無しさん
垢版 |
2017/12/05(火) 19:13:14.27ID:BG6o1pBu
皆さん、ありがとうございます。
速度も速いしクソにはなりたくないので、今回の案件ではlistを使う方向で進めることにします。

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

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

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

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

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

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

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

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

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

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


>>194
同じくもう少しヒントを!どんな感じの実装ですか?
0196デフォルトの名無しさん
垢版 |
2017/12/06(水) 16:07:24.35ID:sywZU+Dz
>>195
ごめん、Webプッシュと言うらしいけど未だ使ったことは無いんだ
グーグル先生に聞いてください
0198デフォルトの名無しさん
垢版 |
2017/12/06(水) 17:50:23.31ID:3KlZJVUn
C#を採用したTizen4.0っていうOSのスマホが発展途上国でバカ売れらしい
0200デフォルトの名無しさん
垢版 |
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のアプリ画面だけをネット越しに共有する感じです。
0206デフォルトの名無しさん
垢版 |
2017/12/06(水) 20:24:33.34ID:WLCLi8WA
通知が取得できるようになるまで長いことセッション張りっぱなしにするだけだぞ
悪手もクソも普通に使われてる手法
0210デフォルトの名無しさん
垢版 |
2017/12/06(水) 21:59:20.59ID:W/tg1Ic8
>>208
それが何か?
普通のHTTPリクエスト処理だって、リクエストを受け付けてからレスポンスを返すまで、
君の言葉で言えばクライアントを管理してるだろ
そのレスポンスを返すまでの時間が長いだけだよ
0215デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:31:12.35ID:9Cl2Q0EY
そもそもサーバーのファイル一覧を表示するWebアプリなんか自分で作らなくても出来合いのOSSが腐るほどあるだろ
自分で作るより遥かに品質もいいよ
0218デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:36:33.33ID:W/tg1Ic8
>>214
キャパシティ的な話をするなら、そもそもサーバーのディレクトリを各クライアントがネットワークドライブにマウントしても全く問題もないだろうな
用途的に、問題になるほどにクライアントの数が多いとは思えん
0219213
垢版 |
2017/12/06(水) 22:36:35.54ID:H2dXQlT6
って違うw釣られて間違えたw
クライアント側の話だよ
0220デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:41:18.34ID:9Cl2Q0EY
>>219
ロングポーリングなら関係ないぞ
結局はサーバー側でのファイル生成イベントの発生頻度次第
0222デフォルトの名無しさん
垢版 |
2017/12/06(水) 23:56:51.95ID:5T1FsMv1
サーバー側はFileSystemWatcher(だったっけ?)でフォルダ監視してなんかあったらテキストファイルでもDBでも適当な保管場所に情報を保存するサービスと
その保存場所から自動更新でひたすら情報を読み取るWeb画面作ればよくね?

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

これでパンクするならごく普通のWebサービスも作れんわ
0231デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:31:29.62ID:vYoZ1cCC
>>229
パフォーマンスを要求するなら適切なタイミングで解放すべき。
どうでもいいならガーベッジコレクタに任せる
0232デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:32:55.56ID:vYoZ1cCC
質問の答えになってなかった
0233デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:43:44.03ID:teoFHcQT
>>229
IDisposable実装してないクラスは放置で良いと思ってる。
0234デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:56:49.03ID:ODzGS5Kr
FontをDisposeするコードは見たことも発想も無かったな
newで作ったら全部Disposeする発想なのか
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況