ふらっと C#,C♯,C#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらない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 outって使った記憶無いなぁってプログラム書いてたらTryParseで普通に使ってた >>123
うむ
ほとんどの人は気にする必要すらない Parallelで走らせてる処理を一時停止させる方法ない? 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メソッドはないのですが、なぜこのような記述になっているのでしょうか? >>140
多分元々はBufferメソッドは拡張メソッドとして定義されてたものだと思う。配列型のメンバに無くてもあとから追加したように見せるやつ。 みなさんどうもありがとうございます。
>>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
知らないのでググってみました。色々できそうなので調べてみます。 小さいから見えんかったけど
IListじゃん
ググると微妙に出てくる >>147
形式的にそう見えるようになっているけど、実際には通常のクラスの継承とは異なってるよ
配列は配列型という特別な種類の型であって、クラスや構造体とはまた異なるものだ 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に対してどのようにすれば取得したい箇所が得られるのでしょうか? ...
}
var elm=doc.QuerySelector(“div.aaa span#idxxx”);
var text=elm.TextContent.Trim(); //文字列を取得 id よりも先祖の階層は、指定する必要がない
最も子孫の、id 以降を指定するだけでよい >>151
>>152
>>153
ありがとうございます!
明日確認してみます。 あるtextBox1と表示内容が同じtextBox2を作りたいのですが
textBox1.Text="hoge";
textBox2.Text="hoge";
と記述するのではなくて
visualstudioのデザイナーでコピーするだけでtextBox2を簡単に作れる様な方法はないでしょうか? すいません、Textの内容hogeは計算結果をstringに変換したもので毎回違うので
単にコピーしただけでは出来なくて困っています はい、連動させたいということです
データバインドというので出来るのかなと思ったのですが難しくてよくわかりませんでした… 複数のタブで色々な計算をしていて、その結果を見やすい様にひとつのタブにまとめて表示させたい
という感じです コンテクストクラスを作ってタブ開いたときにそのコンテクストオブジェクトの内容を表示させる 更新タイミングでそうなるように値入れればいいじゃん うむ。
textBox1.Text=res1;
textBox2.Text=res1;
textBox1.Text=res2;
textBox2.Text=res2;
こんな感じで毎回両方に代入すればいい。 なんで要素1つのタプルが宣言できねえんだよこのポンコツ >>155
文字通りに解釈すると表示が同期するコントロールを継承・またはユーザーコントロールとして新しく作るってなるけど
>>164とどっちが楽とか考えてみたらいいよ EF初心者なんですがPKが有るDBでsaveChangesしようとするとPKが重複してるというエラー出ます。解決策を教えてください。 増減する情報(例えば、車種、色、ナンバー等)を管理するのに適したものは何ですか?
自作クラスを作って
List<myClass> myList;
myList.Add(new myClass());
myList.Remove(〜);
とするのと、
DataTableで、車種、色、ナンバーを Columnsとし、
Row の Add と Remove するのと、
実行速度とかの面で、どちらがよいでしょうか。 ListのAddはO(1)、RemoveはO(n)
DictionaryのAddはO(1)、RemoveはほぼO(1)
なのでキーがユニークになるならDictionaryを使えばOK
あとDataTableは余程のことが無い限り使っちゃダメ >>170
それを保存するならDBを使うべき
SQLiteとか DataTable はダメなんですか?
別件ですが、日時を有する情報で、ある特定の期間の直近のデータを特定したい場合があり、
Selectを使いたいのでDataTableを使った経験があるのですが、よくなかったですか? >>173
保存はしません。あくまでも内部の情報としての利用です。 DataTableは土方臭いから、やり方に拘るタイプの人は嫌ってることが多い
DataTable自体は、パフォーマンスに優れ、クソ安定した優秀な技術
愛用してるプログラマがクソなだけ DataTable よりも List を使うと 10 倍早くなる
略
DataTable 8.32, 8.12, 8.12 sec
list 0.88, 0.83, 0.83 sec
とう具合に、DataTable よりも list のほうが 10 倍早くなっています。 >>178
質問者が実行速度にこだわっているのならどうでもよくはない
そんな話するのならこの質問がどうでもいいってなる 皆さん、ありがとうございます。
速度も速いしクソにはなりたくないので、今回の案件ではlistを使う方向で進めることにします。
先ほど書いたとおり、以前DateTime型の絞込みでSelectが便利だと思いDataTableを使ったことがあります。
この場合も、listで、自力でソードや比較を実装した方が良かったのでしょうか?
まぁ速度の兼ね合いかとは思うのですが、皆様ならどうしますか。 8秒と0.8秒だったら大騒ぎだが80msと8msの差だったら無視できるという意味では
どういうものをどのくらい扱うかで違うから本人がテストしなきゃ仕方ないね DataTableはオワコン
Microsoftも切捨てようとしたがクレーマーの圧力に負けてしぶしぶサポートすることになった >>180
まず用途が管理なのに保存しないとか意味不明なんだけど
データその都度読み込んで捨てるのなら作りやすい方で作って
速度アップ見込めそうなら形式を変えるだけ RemoveするならGetHashCodeとEqualsをちゃんと実装してHashSetにぶち込んだ方が良くない…? リストに重複データが存在するかもしれないしHashsetにしていいかは不明だな
設計書とか作って主キーやユニークキーにあたるデータを明示的にしてんならそれでいいけど大抵はIEqualityComparer指定する方が使い勝手がよさそう >>180
先ずは作り易い方で作れ
速度面の改善をするのは、一通り完成してからでいい
ボトルネックは大抵、標準ライブラリからどのクラスを採用するかなんてレベルには無いから気にすんな 皆さん、レスありがとうございます。
色々と馴染みのないキーワードが出てきたので少しずつ調べて行きたいと思います。 >>182
クレーマー言うな。
EFが普及してないんだから仕方ない。
msはDataTableよりvb6に引導を渡してくれ。 Webフォームを作っています。
サーバ上の特定のフォルダに、とあるファイルが不定期に生成されます。
それを監視してWebフォームに表示したいのですが、FileSystemWatherのようなコントロールはないでしょうか?
ない場合、Timerで回すしかない考え付かないのですが、通常Webフォームで1秒間隔程度なら許容されるインターバルでしょうか? >>192
無いと言うか、あったところでその状況をサーバに取りに行かないとどうにもならん。
ユースケースによるかと。
コネクション数を気にしないなら、ファイルが生成されるまでタイムアウトしないAPI作って、ajaxで呼ぶのが一番機敏に動くと思う。
一秒間隔でリクエストはちょっと多いんじゃないかな。生成されてない画面を10人が10分開いたままにしたら、それだけで6000行もログが埋まってしまう気がする。 >>192
問題ないけど不定期ならプッシュ通知の実装もありますよ >>193
言葉足らずですみません。
IISが動いているサーバにデータのファイルが不定期に生成されます。
それをWeb画面で様子をみたいという要望です。
動いてる様子が分かればいいのですが、ファイルがまとまって生成される事があるため、
ある程度短いインターバルにしたいとは思ってたのですが。
ローカルアプリも考えたのですが、その場合、複数のPCがサーバのファイルを覗きに行く事になるので、それはそれで嫌かなと思いまして。
> ファイルが生成されるまでタイムアウトしないAPI作って、ajaxで呼ぶ
もう少し教えてもらえないでしょうか。
APIって具体的に何で作ったどんな形式のものですか?
調べるヒントをください。
>>194
同じくもう少しヒントを!どんな感じの実装ですか? >>195
ごめん、Webプッシュと言うらしいけど未だ使ったことは無いんだ
グーグル先生に聞いてください C#を採用したTizen4.0っていうOSのスマホが発展途上国でバカ売れらしい この人と同一人物じゃないかと疑ってしまう
703 名前:デフォルトの名無しさん (ワッチョイ 02c2-8CrJ)[sage] 投稿日:2017/11/21(火) 21:20:36.17 ID:8K/pnPq30 [1/2]
最近のオシロスコープはWebサーバー機能を持っていて、Webブラウザでアクセスすると
計測画面を表示させることができますが、C#で同じような機能を簡単に実装することはできるでしょうか?
リモートデスクトップではなく、WinFormsのアプリ画面だけをネット越しに共有する感じです。 >>195
Web Socketかポーリングを使う
つまりSignalR ポーリング間隔はどっちにしろ決めないと話にならない ロングポーリングかWebSocketならポーリング間隔は不要だぞ サーバー側でクライアント数の把握をするの?
悪手じゃね? 通知が取得できるようになるまで長いことセッション張りっぱなしにするだけだぞ
悪手もクソも普通に使われてる手法 >>206
それってサーバー側でクライアントを管理してないとできないよね? >>208
それが何か?
普通のHTTPリクエスト処理だって、リクエストを受け付けてからレスポンスを返すまで、
君の言葉で言えばクライアントを管理してるだろ
そのレスポンスを返すまでの時間が長いだけだよ >>210
ファイル更新が丸一日無かったらどうなんの? >>211
リクエストにタイムアウト付けるに決まってるだろ 元の質問Timerで一秒間隔で呼び出すとかなんだが大丈夫なのか? >>213
5chのリクエスト数に比べると屁みたいなもんだろな。 そもそもサーバーのファイル一覧を表示するWebアプリなんか自分で作らなくても出来合いのOSSが腐るほどあるだろ
自分で作るより遥かに品質もいいよ webベースのファイル管理サービスでイケてるやつあったっけ? >>214
キャパシティ的な話をするなら、そもそもサーバーのディレクトリを各クライアントがネットワークドライブにマウントしても全く問題もないだろうな
用途的に、問題になるほどにクライアントの数が多いとは思えん って違うw釣られて間違えたw
クライアント側の話だよ >>219
ロングポーリングなら関係ないぞ
結局はサーバー側でのファイル生成イベントの発生頻度次第 >>218
タスクトレイ常駐型のデスクトップアプリでも作った方が使いやすいだろうな。 サーバー側はFileSystemWatcher(だったっけ?)でフォルダ監視してなんかあったらテキストファイルでもDBでも適当な保管場所に情報を保存するサービスと
その保存場所から自動更新でひたすら情報を読み取るWeb画面作ればよくね?
自分ならそうするわ
ボリューム的に半日仕事で終わるし 他のアプリにキーボードのコマンドを送りたいのですが、どの様な方法があるでしょうか?
sendinputなど調べてみたのですが例が少なく今一理解出来ませんでした >>222
> その保存場所から自動更新でひたすら情報を読み取るWeb画面作ればよくね?
だからそれやるとクライアントが多い時にサーバーがパンクするからSignalRとかでサーバーから通知するって話
まあサーバーから通知って言うけど仕組み的にはイベント発生までレスポンスを返さないって言うだけのことなんだけどな >>224
SendKeysで
sendinputは他のプロセスには送れない .netの場合クラスないでFontオブジェクトを生成した場合にはクラスを解放した場合は
Fontオブジェクトは解放されるの? Disposeすべきかどうかはどうやって調べたら
いいのだ? >>226
しないっつうのw どういう理解してる?
なんのためにわざわざ別にサービス作って保存してんだ
これでパンクするならごく普通のWebサービスも作れんわ >>229
パフォーマンスを要求するなら適切なタイミングで解放すべき。
どうでもいいならガーベッジコレクタに任せる >>229
IDisposable実装してないクラスは放置で良いと思ってる。 FontをDisposeするコードは見たことも発想も無かったな
newで作ったら全部Disposeする発想なのか ■ このスレッドは過去ログ倉庫に格納されています