X



ふらっと C#,C♯,C#(初心者用) Part140
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 9e9f-LwdJ)
垢版 |
2018/10/04(木) 18:56:38.41ID:JnxMNCXd0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
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
0002デフォルトの名無しさん (ワッチョイ e9c9-vBoO)
垢版 |
2018/10/04(木) 23:05:26.82ID:qWTjGweS0
ネットワークやバイナリファイル編集でバイト配列操作する機会多いんだけど、何を使うのが一般的なの?
StreamにしてBinaryReaderやBinaryWriterで読み書きしてたら、バイト配列は添字使って編集するのが速いし確実とかCみたいなプログラム書くおっさんPGに言われちゃった・・・
0003デフォルトの名無しさん (ワッチョイ ce9a-GiWE)
垢版 |
2018/10/04(木) 23:23:18.76ID:qbe854ro0
>>1

>>2
用途によるし「確実」はちょっと意味がわからないけど構造体のように複数の長さのデータを格納・読込するのならそれでいいんじゃね?
1byteごととか任意のバイト長さとかファイル単位なら
https://dobon.net/vb/dotnet/file/filestream.html
でその人の言うように配列のインデックス使ってやればいいと思うし
0004デフォルトの名無しさん (アウアウウー Sa83-MQj3)
垢版 |
2018/10/04(木) 23:31:36.71ID:58olDMZFa
>>2
同じく「確実」の意図が分からないからそれは置いておいて
byte配列のほうが速いのは確か
ただしネットワーク通信やファイル入出力の所要時間と比べれば微々たる違いだろうから
先頭から順に読み書きできればいいならBinaryReader/Writerで、
ランダムアクセスしたいならbyte配列で操作すればいいと思う

StreamでもPositionやSeek()で位置を動かせるけどあまり見ない気がする
0005デフォルトの名無しさん (アウアウウー Sa08-Ww/X)
垢版 |
2018/10/04(木) 23:46:55.97ID:aAHFTiw7a
>>2
C#の最新事情でいうと、Span<T>という安全なポインタのようなものが入ったり、
それに伴ってBinaryPrimitivesみたいな低レベルなユーティリティが充実したりして、
残念ながら時代はCおじさんの方にある
0007デフォルトの名無しさん (ワントンキン MM1a-LjNM)
垢版 |
2018/10/05(金) 09:06:50.59ID:LGlJpP21M
C#という事ではないのかもしれませんが相談させてください。

複数のPCで複数のアプリが稼働していて、これらの稼働状態をモニタリングしたいと考えています。
正常に動作しているか、今どういう状態か程度で、止まっていたりしたら知りたいです。

各アプリから状態をDBに都度登録してもらい、それを監視すればいいかとも思うのですが、
この方法だとアプリが正常に動作していない場合とかは、DBの更新が止まっているのを判断するしかありません。

このような案件の場合、よい方法、定番の方法ってあるでしょうか?
0010デフォルトの名無しさん (スフッ Sd94-3Vr4)
垢版 |
2018/10/05(金) 12:25:06.26ID:3Syb0Y7Yd
>>7
正常に動作していない、を判定するのは無理だよ。
正常に動作していなかったら、「正常に動作できてません」って発言すら信用できないっしょ。
素直にアプリ側にたとえ報告することがなくても、忙しくても何が何でも一定時間おきに「動作中」を送信させて、DBには時間とともにそれを記録して、
確認側は最後の時間から一定時間過ぎても更新が無いことを確認するしかないと思うよ。
0015デフォルトの名無しさん (スプッッ Sd9e-RpCj)
垢版 |
2018/10/05(金) 20:17:35.38ID:N/cJ9waZd
一般的とか定番とかにこだわりすぎ
君のシステムにあったものを選択すればいい
すでにシステムとしてDBを利用してるなら、その横で正常動作を監視するのには何の違和感もない
0016デフォルトの名無しさん (アウアウエー Sa6a-u7Me)
垢版 |
2018/10/05(金) 20:29:12.88ID:A3z1jwkNa
>>14
いや、監視役のPCの監視用のアプリが直接各PCのアプリに確認するとか、
逆に各PCのアプリが定期的に報告するとか、そっちの方が回りくどくないんじゃないかと思っただけ。

だから直接通信できないとか何か事情があるのかなと
0017デフォルトの名無しさん (ワッチョイ bc06-LjNM)
垢版 |
2018/10/05(金) 23:36:46.57ID:hL15zPdp0
>>16
なるほど、確かにそうですね。
ソケット通信みたいなプロセス間通信でって事でしょうか?
時間の関係で監視アプリはまだ未定で、取り敢えずネタを仕込む仕組みだけは考えておこうと言う思いでDBが浮かんだんでしょうか。
0018デフォルトの名無しさん (アウアウウー Sa08-Ww/X)
垢版 |
2018/10/06(土) 01:17:30.44ID:GDCWtS3pa
それこそZabbixなどの監視スイートでいいだろ
サーバーとクライアントに出来合いのフリーソフト入れるだけで、このスレの連中が10年かけても作れない立派な監視システムの出来上がり
0023デフォルトの名無しさん (ワッチョイ 968a-XM+q)
垢版 |
2018/10/07(日) 04:08:03.95ID:VK7xOYMb0
他のPCの共有フォルダの内容を表示したいのですが、どうやってIDとパスワードを使って接続すればよいのでしょうか?
0031デフォルトの名無しさん (ワッチョイ e2d2-pJhu)
垢版 |
2018/10/08(月) 02:16:46.72ID:fwPk56zX0
>>26
過去のしがらみがないので
(ちょっとはあるけど)
良い進化ができる
0036デフォルトの名無しさん (ワッチョイ d0e8-vBoO)
垢版 |
2018/10/08(月) 08:47:31.14ID:BjxsuyVh0
Javaはレガシィと言われる時代か
0039デフォルトの名無しさん (ワッチョイ 671e-HFxR)
垢版 |
2018/10/08(月) 10:35:09.02ID:jzUSomae0
まぁ、ラピッドリリースになった最新のJavaならラムダに始まってvarによる型推論もできるようになったり結構ストレスなく使える。
後はProject panamaやヴァルハラ?などのvaluetypeやら。コルーチンやasnc/awaitやらが来れば後10年は戦える。
プロパティも欲しいとこだが今さらこれは望み薄だろう。
0041デフォルトの名無しさん (アウアウウー Sa08-Ww/X)
垢版 |
2018/10/08(月) 11:59:18.45ID:3oh/BVONa
C#は7.xで参照が強化されて超複雑になったよ
低レベルなタスクに関わる一部の人だけが知っていればいいと思われがちだが、実は決してそうではない
最新のBCLには従来は配列とインデックスをセットで渡してたメソッドに軒並みSpan<T>のオーバーロードが追加されていて、早くも第一級の扱い
今後は新規APIについては基本的にSpan<T>のみをサポートするようになるだろう
0044デフォルトの名無しさん (ブーイモ MM5e-Ww/X)
垢版 |
2018/10/08(月) 14:44:04.44ID:QmlHMP6PM
EFはモデルの一貫性を強力に維持しながら継続的にモデルに手を入れていくような開発スタイルに適してる
巨大な単一のデータモデルを維持するようにはできてない
大規模開発でEFなら適切にドメインを分けてやらないとスケールしないよ
0045デフォルトの名無しさん (ワッチョイ 968a-XM+q)
垢版 |
2018/10/08(月) 17:44:43.35ID:ejHrcIFn0
2つのPC間でデータ送受信を行う際、現状はデータの最後に"<EOF>"を付加してファイルの末尾であることを通知しています。
これをなくして、送信側がデータの最初にデータサイズを明記し、受信側はそのサイズだけデータを受信したら受信完了という処理に変更しようと思うのですが、
みなさんの経験則的にはこれは悪手でしょうか?
0049デフォルトの名無しさん (アウアウエー Sa6a-u7Me)
垢版 |
2018/10/08(月) 18:41:57.27ID:ikezuOk7a
>>45
申し訳ないけど全体的に何を言ってるのかよく分からないけど、
現状データ長を含まないってことは必然的にデリミタで区切る文字列ベースの
メッセージってことになると思うけど、そういうこと?

それならむしろ何のためにデータ長を含めたいのか分からない
送る方のコードも面倒が増えるだけだし、万が一データ長が間違ったメッセージが
送られてきたら後まで引きずっちゃうと思うけど
0050デフォルトの名無しさん (ワッチョイ ba99-3Vr4)
垢版 |
2018/10/08(月) 18:56:25.00ID:Py80K8TM0
データ長が狂う環境なら、何かがEOFになったり、EOFが何かになったりする可能性を潰すほうが大変じゃないか?
化けにくくてチェックもしやすい、データ長を渡すほうが良いと思うよ。
0053デフォルトの名無しさん (ワッチョイ 72c3-DRaL)
垢版 |
2018/10/08(月) 20:46:47.49ID:nA3KYx400
受信インターバルタイムアウトってのもあるな。

例えば9600bpsの場合、ざっくり1文字送るのに、
パリティとエラー含めて11ビット位だったかな。
めんどくせーから16ビットで1文字送ったとして、
1000[ms]÷9600[bps]×16[bit]で、1.66666…[ms]。
2文字無通信時間で打ち切るとして、約3.2[ms]の間、文字が来なかったら、そこで通信を打ち切る。

C#でそこまで精度でるか知らんけどな
0055デフォルトの名無しさん (ワッチョイ 6ee3-BBJl)
垢版 |
2018/10/08(月) 21:49:06.47ID:kgyl4Ui40
>>52
ケースバイケースだよね
どういう方式っつかタイムアウトで全ての辻褄を途中でリセットする仕組みがあって実際に復帰できるか?
が重要
大手の試験もそういうのが多い

asioとかタイムアウト設定できなくてクソ過ぎて死んだけど
0056デフォルトの名無しさん (ワッチョイ aab3-GL8C)
垢版 |
2018/10/08(月) 21:51:03.18ID:sIA/07pT0
>>53
> パリティとエラー含めて11ビット位だったかな。
エラーってなんだよ w
8ビットデータを調歩同期で送るなら
スタート(1) + データ(8) + パリティ(1) + ストップ(1〜2)
だから11〜12ビット/フレームだな
てか、今どきシリアル通信じゃなくて独自プロコトル + TCP/IPとかじゃないかな
0058デフォルトの名無しさん (ワッチョイ 3c19-vBoO)
垢版 |
2018/10/08(月) 22:23:12.19ID:JzRq+M5U0
例えば下限が-10、上限が10として、
上限がくるまではずっとインクリメントして、
上限到達後、下限がくるまではずっとデクリメントするような、
数値間で折り返しを続けるプログラムを考えてみました。

https://ideone.com/LVqCtz

↑これだと上限に達したか、下限に達したかのフラグや
それを判定する箇所がスマートではない気がするのですが、
よりよい方法をお教えいただけないでしょうか
0062デフォルトの名無しさん (アウアウエー Sa6a-u7Me)
垢版 |
2018/10/09(火) 00:09:25.69ID:7r5/ETxRa
>>58
ベタに書くのが一番でしょ
難しく考えるのも変な技巧を凝らすのもよくない
IEnumerable<int> AlternatingSequence()
{
  const int min = -10;
  const int max = 10;
  for (;;)
  {
    for (int i = min; i < max; i++) yield return i;
    for (int i = max; i > min; i--) yield return i;
  }
}
0069デフォルトの名無しさん (ワッチョイ 84b3-bwKK)
垢版 |
2018/10/09(火) 18:39:44.42ID:CLgat4sk0
情報処理試験の勉強をしていてセマフォというものを知ったのですが、C#の実務で使うシチュエーションはあるでしょうか?

いつ使うのかなと疑問に思いまして
0070デフォルトの名無しさん (ブーイモ MMed-Ww/X)
垢版 |
2018/10/09(火) 18:46:58.59ID:iDNploc3M
使わないよ
ドカタ現場で使っても誰も理解できないだろうし、業務アプリのアプリケーションコードのレベルでそんな細かい排他制御が必要になることはまず無い
普通にロックすればよい
0072デフォルトの名無しさん (ワッチョイ ee9f-GiWE)
垢版 |
2018/10/09(火) 19:37:27.51ID:2+Q7pYPf0
WindowsFormでテキストボックスのスクロールバーを切り離したいのですが
テキストボックスとは別に配置したVScrollBarをコントロールの
スクロールバーと連動させるにはどうすればいいですか?
スクロール位置については調べて出てきた物を弄ればいけそうなのですが、
長さをどこで読めば良いのかわからず……

用途としてはテキストの折り返し位置を数値指定したくて無理矢理実装した状態です。
テキストボックスのサイズ自体を変更し、ワードラップを利用して無理矢理テキストの折り返しを作ってるので
テキストボックス自体のスクロールバーは隠してしまって
目に見える場所に操作用のスクロールバーを置きたい具合です。

Textboxをオーバーライドしてテキストの表示領域そのものを弄る事ができるなら
そちらのほうが理想なのですが、自分ではどこをどう弄ればいいのかわからず……

よろしくお願いします。
0075デフォルトの名無しさん (ワッチョイ ee9f-GiWE)
垢版 |
2018/10/09(火) 19:53:44.82ID:2+Q7pYPf0
>>72
すみませんPaddingとか右余白で散々ググって出てこなかったので
無いものと思い込んでたんですが>>73を見てプロパティ漁り直したら
普通にRightMarginを発見して解決して顔真っ赤にしてるので無かった事に……
俺の半月はなんだったんだ…………

スレ汚し失礼しました!!
0076デフォルトの名無しさん (ワッチョイ ee9f-GiWE)
垢版 |
2018/10/09(火) 19:58:09.84ID:2+Q7pYPf0
>>74
スクロール位置はそのページとかで沢山サンプルがあるのですが
スクロールバーの長さを連動させる方法が分からなかった具合です……!

結果そんなことをする必要はなかったのですが
色々応用が利きそうなので今後のために知っときたさはあります……
0080デフォルトの名無しさん (ワッチョイ d09b-RpCj)
垢版 |
2018/10/10(水) 23:35:14.94ID:DLFqb8zL0
VBA上がりでC#勉強中なんですが、
別クラスに書いたコードを使いたい時、
○○ △△ = new ○○を記述して使ってるんですが、form Loadとかchangeイベント等で復数回登場する時でも都度使う所の近くで書いた方がいいんですか?それとも上部のpublicの所に書くのがいいんですか?
0083デフォルトの名無しさん (ワッチョイ 67b3-9sSg)
垢版 |
2018/10/11(木) 07:18:56.97ID:8Foxk2RW0
namespaceまで作ってプログラムしたことが無いのですが、プロは駆使するのが普通なのでしょうか?

アニマルインタフェース実装した猫クラスと犬クラスを人クラスがメッセージ出して鳴かせるレベルの超初歩設計しかした事無いので、どこでnamespace使うのかなと悩んでおります
0087デフォルトの名無しさん (ワッチョイ ffeb-JlWZ)
垢版 |
2018/10/11(木) 14:06:58.98ID:sbec5Ilz0
JavaをやっていてJavaらしいコードを書ける人は大勢いるだろうけどさ
C#らしいコードを書ける人って、C#でプログラミングをしてる人の1割もいないんじゃねえのか?
0090デフォルトの名無しさん (アウアウエー Sa9f-NVVT)
垢版 |
2018/10/11(木) 16:52:44.52ID:lOIGtRbea
>>80
>それとも上部のpublicの所に書くのがいいんですか?

と書いているので、質問の意図はメソッド内の変数の宣言や初期化の位置についてではなく、
同じクラスのインスタンスを複数のメソッドでnewして使ってる時に、
これをローカル変数ではなくフィールドにした方がいいのか?ってことじゃないのかな。

そうであるなら答えはNo。
フィールドにしなくても要件を満たせるものをフィールドにしてはいけない。

何にしても、質問は意図が分かるように書いて欲しいね。
0094デフォルトの名無しさん (ワンミングク MMbf-s6iV)
垢版 |
2018/10/12(金) 09:49:30.31ID:+DY7sdXwM
W indows Fromアプリを作っています。
途中でアイコンを変更しました。Formプロパティ部分とプロジェクトのプロパティ-アプリケーションのアイコンの2か所です。
実行時のFormとエクスプローラでも詳細表示は変更後のアイコンになるのですが、エクスプローラでの大アイコンやショートカット、ドラッグした時のアイコンが古いままです。
どうすれば新しいアイコンに更新できますか。
0095デフォルトの名無しさん (ワッチョイ 27f2-7Kxw)
垢版 |
2018/10/12(金) 11:01:50.14ID:4rHGu3Q90
一度Windows標準のアイコンに戻して
再度新しいアイコンを選択してSaveしてから
再起動すれば更新されてない?
■ このスレッドは過去ログ倉庫に格納されています

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