X



C#, C♯, C#相談室 Part93©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0537デフォルトの名無しさん (ワッチョイ 4269-m0US)垢版2018/06/17(日) 09:14:51.45ID:R12hw8Jz0
HSTファイル
調べた限りだとHiSTory fileでFXの履歴を記録したファイルで使われることが多いのかな?
自分が使いたいのはFXの履歴ではないくてカメラの履歴などの情報を取りたいです。C++などのコードで書いてるサイトはあるけどC#が見つからない
0543デフォルトの名無しさん (ワッチョイ 4269-m0US)垢版2018/06/17(日) 22:37:48.08ID:R12hw8Jz0
内容しっかり見てなかったけど100行なかったははず
C#もどこかあるだろで探してたけどC#だけまったく見当たらなかったので、結果的には自分で移植のほうが早かったかな
0544デフォルトの名無しさん (ワッチョイ 9dd2-cPc7)垢版2018/06/18(月) 00:31:09.66ID:6KD+nJyx0
どなたか助けてください

PaSoRiでFelicaのReadをしたいのです。
winscard.dllを利用し
ScardTransmitにてADPUを送信することで
非暗号化領域のREAD/WRITEをすることはできました

追加で、暗号化領域のREADをしてほしいと言われ、
Group Service KeyとUser Service Keyという2つの鍵を渡されました。
どうやらこの2つの鍵を使って暗号化領域のREADを行うようなのですが
それに該当する情報が見つかりません。

この2つの鍵と縮退鍵の関連もわかりません。
2つの鍵を使って縮退鍵を合成する???
合成したとしてどういうAPDUコマンドを送る???

ご存知の方がいらっしゃいましたらご教授ください。
0548デフォルトの名無しさん (ブーイモ MM6d-2ITt)垢版2018/06/18(月) 15:38:53.66ID:XzDxjxqSM
バイナリファイルをバイト配列に一気に読み込んでLINQでゴリゴリするなんてC#って言うか.netの醍醐味だね。
C、C++と歩んできて正直C#なめてたが、プログラムの書き方変わったよ。
0549デフォルトの名無しさん (ワッチョイ 0296-gvEZ)垢版2018/06/18(月) 19:59:56.07ID:YV8aSpRw0
バイナリファイルのバイト配列はストリーム(BinaryReader/Writer)経由でしか扱ったことないな
浅学ですまないが非常に興味があるので、何をする処理にLINQを使っているのか教えてほしい
0552デフォルトの名無しさん (ワッチョイ dd9f-2ITt)垢版2018/06/18(月) 20:55:37.17ID:Dbb+UGxb0
テキストファイルを一行ずつ読み込むとか、バイナリファイルを1フレームずつ読み込むなんてのは時代遅れなんじゃねかと。
最近は一括読み込みしかしないな。
パフォーマンスはライブラリやOSが担保してくれる。
0553デフォルトの名無しさん (アウアウエー Sa4a-jhA2)垢版2018/06/18(月) 21:33:32.15ID:ubyRHWyfa
時代遅れかどうかは知らんけど(そういうネトウヨチックな「俺スゲー」という間抜けな自己陶酔、俺は大嫌いだがw)
富豪的であってもそれが一時的(たとえばメソッドの中だけ)なら何も問題ないね。

その方がより簡潔だったり可読的に書けるなら否定する理由は何もない
0557デフォルトの名無しさん (ワッチョイ dd9f-2ITt)垢版2018/06/18(月) 21:46:48.35ID:Dbb+UGxb0
時系列的に増えていくファイルだとか、ソケット通信のバイトストリートだとかは順次読み込みするしかないよ。
だけどドライブにあるファイルは一括読み込みの方が簡単だよ。1ステップだからね。それをソートするなりデータ抽出するなりLINQ使えば簡単だよ。
それを知ってから逐次読み出しなんか面倒くさくアホらしくなったよ。
0568デフォルトの名無しさん (ワッチョイ 1f8a-DJU/)垢版2018/06/25(月) 11:21:29.65ID:pxATIqrb0
Debug.Failのサンプルコードがこんなのなんですが
プログラムのバグでもない限りは絶対に訪れないような場所には
片っ端からDebug.Failを撒いておいたほうがいいんですか?
それともそれ専用のthrowすべき例外なりがあるんでしょうか?
Assert.Fail?
何も書かないのは気持ち悪いので指針を教えてください

switch (option) {
case Option.First:
result = 1.0;
break;

// Insert additional cases.

default:
Debug.Fail("Unknown Option " + option);
result = 1.0;
break;
}
0569デフォルトの名無しさん (ブーイモ MM0f-STG2)垢版2018/06/25(月) 12:12:52.11ID:DuFsc7dIM
>>568
そういうのはフロー解析による不要なコンパイルエラーを回避するために throw する
例外の種類は状況やポリシーに応じて InvalidOperationException, NotSupportedException, ArgumentException, NotImplementedException あたりを使うのが普通
0571デフォルトの名無しさん (アウアウエー Sa7f-3IMT)垢版2018/06/25(月) 12:33:59.90ID:G9vuY89la
そうかな
>>569が挙げてくれてるので十分でしょ。
少なくともメッセージは自由に設定できるし、本当に必要なら派生もできる。

そもそも例外をそんなに細かく分類する必要が本当にあるのかちょっと疑問
0572デフォルトの名無しさん (アウアウウー Sae3-STG2)垢版2018/06/25(月) 12:40:32.20ID:M/oLTPjda
常識的にキャッチされない種類の例外なら何でもいいわな
InvalidOperationExceptionだけはキャッチされる場合があるから微妙だけど、慣習的にはわりと多数派な気がする
個人的には常に NotImplementedException にしたい
0575デフォルトの名無しさん (ワッチョイ 7fe9-5Tpg)垢版2018/06/25(月) 13:00:29.11ID:5ya7SPIm0
細かいけどコンパイルエラー回避のためにthrowする、ってのは違くない?
現実問題そんな感じになってしまうことはあるけど理想はコンパイラの都合に合わせたコードなんて無いほうがいいんだから
0576568 (ワッチョイ 9f8a-DJU/)垢版2018/06/25(月) 13:23:21.50ID:vUyRGEqk0
>>569
>InvalidOperationException, NotSupportedException, ArgumentException, NotImplementedException
これらの例外は自クラスには非はなく、呼んだ側の使い方が間違っているといった感じの例外に見えますが
そんなにこだわらなくていいんでしょうか

public class MyClass
{
public class BugException: System.SystemException{}
public void buggedmethod() { ... throw new BugException(); }
}

これで良ければ1行で定義できて1番明快に思えますが
検索してもこんなことをやってる人は誰もいないっぽい…
0577デフォルトの名無しさん (ブーイモ MM0f-STG2)垢版2018/06/25(月) 14:49:07.56ID:o35Q9ijAM
>>574
>>568のケースに限れば、defaultに来るのはenumにメンバを追加したのにcaseを追加していない「変更漏れ」であると考えることもできるから、
NotImplementedException でも意味的におかしくはない
NotSupportedExceptionは(継承の都合で)メンバ自体が使えないことを意味するからちょっと違う
0579デフォルトの名無しさん (アウアウエー Sa7f-3IMT)垢版2018/06/25(月) 18:51:31.43ID:uZsljbpsa
>>577
なるほどそうかも

関係ないけど、いつも思うけどあるインターフェイスを継承してるのに
そのインターフェイスのメソッド使ったらNotSupportedExceptionが飛んでくるって設計は
なんか不条理を感じるのは俺だけかなあw

インターフェイスって契約じゃなかったのかよw
0583デフォルトの名無しさん (ワッチョイ 7f96-qn6i)垢版2018/06/25(月) 21:43:12.62ID:xJKhLBIA0
Debugクラスのメソッドはリリース版のとき消えます、素通りします
Debug.Fail() は起こりえない状況であり、かつ、素通りしても問題ない箇所、
またはリカバリ処理を行っている箇所にしか使用できません

基本は例外か Trace.Fail() を使用するべきです

Debug.Fail() を使用して問題ないのは具体的には下記の条件に当てはまるときぐらいだと思います

・『絶対』に起こらないことを目視や単体テストで確認した上で、後続のコードでリカバリ処理を行っている箇所で、
開発によってコードが壊れてないかチェックするためにコードに挿入する
(絶対に発生しないので単体テストを行う場合は #if で慎重にコードを切り替えてエラー状態を再現することになります)

つまり、リカバリ処理してるなら Debug.Fail() は入れなくても問題ないはずです
0584568 (ワッチョイ 618a-VCRa)垢版2018/06/28(木) 16:32:42.98ID:mhaIhaYV0
遅くなりましたが例外とログの使い方大変参考になりました。
ありがとうございます。
0585デフォルトの名無しさん (ワッチョイ 45fa-2e90)垢版2018/07/04(水) 22:15:33.33ID:gFgZc5FG0
81F
0589デフォルトの名無しさん (ササクッテロル Spbd-p+0f)垢版2018/07/12(木) 21:32:30.73ID:wWmeulvip
単なる構造体にインスタンスもくそもないからな。
0591デフォルトの名無しさん (ブーイモ MMc9-hVvx)垢版2018/07/14(土) 10:59:20.35ID:21Pqhes0M
型のデフォルト値でね?
0592デフォルトの名無しさん (ワッチョイ a5b3-8eTX)垢版2018/07/14(土) 11:24:43.76ID:td9rD4BU0
Visual Studio 2017
合計 90 日間が過ぎました。

無料で使いたいんですが、どうすれば良いでしょうか?
0596デフォルトの名無しさん (ワッチョイ a5b3-8eTX)垢版2018/07/14(土) 12:06:05.24ID:td9rD4BU0
Community版に移行する事にしました。
ありがとうございます
0599デフォルトの名無しさん (ワッチョイ 6db5-p+0f)垢版2018/07/15(日) 11:14:40.73ID:GMJtRfj30
サブスクリプションで全シリーズ揃えてる俺に死角無し。
0601デフォルトの名無しさん (ササクッテロル Spc7-Bhrm)垢版2018/08/02(木) 11:31:31.36ID:ijDqx/PBp
Entity Framework Coreについて質問です。

以下のように1対多の入れ子(left join)になったデータを取ってくる場合で、一番最下層のテーブルに取得条件を追加したいです。
どのようにしてwhereメソッドを書けばよいでしょうか。
.Include(x => x.Departments)
.ThenInclude(x => x.Groups)
.ThenInclude(x => x.SubGroups)
.ThenInclude(x => x.Employees)
.ThenInclude(x => x.Skills)

例えば以下のような感じです。
Skill.ExpireDate >= DateTime.Today

それぞれのプロパティはコレクションのため以下のようには書くことができません
Where(x => x.Departments.Groups.SubGroups.Employees.Skills.ExpireDate >= DateTime.Today)

ThenIncludeで指定しているプロパティがすべて列挙でなければ以下のように書けると思うのですが・・・
Where(x => x.Department.Group.SubGroup.Employee.Skill.ExpireDate >= DateTime.Today)

それぞれの階層のクラスは全プロパティ取得することを想定しています。
Entity Framework Coreで実現可能でしょうか。
0603デフォルトの名無しさん (ササクッテロル Spc7-Bhrm)垢版2018/08/02(木) 12:30:22.50ID:ijDqx/PBp
>>602
辿らない場合、スキルクラス単位で条件絞り込みができるのでしょうか?
これができればとても楽なのですが、、、
0605デフォルトの名無しさん (ササクッテロル Spc7-Bhrm)垢版2018/08/02(木) 15:11:34.29ID:ijDqx/PBp
いえ、辿りたいわけではなくて、辿らないとできないと勝手に思ってただけです
辿らなくて良いなら辿らないでやれればベストです。
ですがその方法がわからないので教えてもらえませんでしょうか。
0606デフォルトの名無しさん (ワッチョイ 8f9f-LI4B)垢版2018/08/02(木) 21:52:06.55ID:nmSSZypj0
var q = _context.Hoges.FromSql($@"
select H.* from Hoges H where exists (
select null from Departments D where H.DeptId = D.DeptId and exists (
select null from Groups G where D.DeptId = G.DeptId and exists (
select null from SubGroups SG where G.GrpId = SG.GrpId and exists (
select null from Employees E where SG.SGrpId = E.SGrpId and exists (
select null from Skills SK where E.EmpId = SK.EmpId and SK.ExpireDate >= {DateTime.Today}
)))))
");

var hoges = q.Include(x => x.Departments)
.ThenInclude(x => x.Groups)
.ThenInclude(x => x.SubGroups)
.ThenInclude(x => x.Employees)
.ThenInclude(x => x.Skills)
.ToList();
0610デフォルトの名無しさん (ワッチョイ ff58-0Uuo)垢版2018/08/07(火) 20:55:48.43ID:7nA6P5yg0
Linqでの書き方で質問なのですが
同じサイズのdataAとdataBのデータがあるとして
データが違う箇所のIndexを取り出すとしたらどう書けば良いでしょうか?
今は↓のようなコードになっています。

List<int> dataA = new List<int>() { 1, 2, 3, 4, 5, 6 };
List<int> dataB = new List<int>() { 1, 2, 4, 3, 5, 6 };
bool resultAB = dataA.SequenceEqual( dataB);

if(resultAB = false)
{
foreach(var A in dataA)
{

比較処理
}
}


結果
2
3
0611デフォルトの名無しさん (ワッチョイ b3e3-10BI)垢版2018/08/07(火) 21:22:20.14ID:UKw4EMmv0
>>610
ない頭絞って考えてみた。
Enumerable.Range(0, dataA.Count()).Where(p => dataA[p] != dataB[p]);
やら
dataA.Select((v, i) => new { value = v, index = i }).Where(p => p.value != dataB[p.index]).Select(p => p.index);

どっちも汚い。もっと賢いのおしえろください
0614611 (ワッチョイ b3e3-10BI)垢版2018/08/07(火) 21:35:47.39ID:UKw4EMmv0
無理矢理LINQつかってみたけど>>613に一票
0616デフォルトの名無しさん (ワッチョイ ff58-0Uuo)垢版2018/08/07(火) 21:41:47.05ID:7nA6P5yg0
dataAとdataBが1000件以上あるので、まず単純に変更してるのがあるか?で
SequenceEqualを使ってみた流れでLINQを調べていた流れで知りたかったです。
forで書くのがわかりやすいとは思うけど、LINQでもっとうまく書けるかなと思って

>>611参考になりました。ありがとうございます!
0618デフォルトの名無しさん (アウアウカー Sa07-kkiZ)垢版2018/08/07(火) 23:11:20.30ID:EHUuk9/6a
zip使えばいいんでね?
0619デフォルトの名無しさん (ワッチョイ 8f9f-I2NA)垢版2018/08/07(火) 23:26:49.96ID:WUtnzCvr0
Linqのほうがわかりやすいし、ソースがランダムアクセスできるとも限らんだろ

シーケンスを束ねてインデックス振って比較して違うやつだけ取り出してインデックスを取り出す
Linqなら思ったことをそのまま書けばいい

IEnumerable<int> Hoge<T>(IEnumerable<T> a, IEnumerable<T> b) {
var comp = Comparer<T>.Default;
return a.Zip(b, (x, y) => (x, y)) // シーケンスを束ねて
.Select((e, i) => (i, e.x, e.y)) // インデックス振って
.Where(e => comp.Compare(e.x, e.y) != 0) // 比較して違うやつだけ取り出して
.Select(e => e.i); // インデックスを取り出す
}

ループじゃぱっとみ何やってるかわかんねえよ
0621デフォルトの名無しさん (ワッチョイ cfe8-Xflc)垢版2018/08/07(火) 23:35:51.16ID:vAj7NHSO0
LINQってEntityFrameworkでしか用途なくねえ?
0624デフォルトの名無しさん (アウアウエー Sadf-Eypl)垢版2018/08/08(水) 00:39:26.55ID:cXv1v5r0a
>>619
うーん、普通にこっちのほうが分かりやすいと思うけどw
別にLINQ否定派じゃないよ
IEnumerable<int> GetIndices()
{
  List<int> dataA = new List<int>() { 1, 2, 3, 4, 5, 6 };
  List<int> dataB = new List<int>() { 1, 2, 4, 3, 5, 6 };
  for (int i = 0; i < dataA.Count; i++)
    if (dataA[i] != dataB[i]) yield return i;
}
0625デフォルトの名無しさん (ワッチョイ 338a-Xflc)垢版2018/08/08(水) 03:30:51.92ID:x4iNladl0
Zipしたものをforeachで回すのが一番自然
IEnumerable<int> Hoge(IEnumerable<int> A, IEnumerable<int> B)
{
  var i = 0;
  foreach (var eq in A.Zip(B, (a, b) => a == b))
  {
    if (!eq) yield return i;
    i++;
  }
}

自分はやらんけどLinqならこう
dataA.Zip(dataB, (a, b) => a == b).Select((eq, i) => eq ? -1 : i).Where(i => i >= 0);
0627デフォルトの名無しさん (スップ Sd1f-Bh6x)垢版2018/08/08(水) 13:38:09.59ID:CtU8HUVGd
インデックスが必要な時、わざわざselect挟んでインデックス貼るの馬鹿らしい感じがして好きになれないんだけど仕方ないよね?
そんなにインデックスを参照することが多いなら生成時に一緒に貼っとけって話かもしれんが…
そもそもlinqマスターはインデックスを必要としない設計にいつもなるの?
自分もインデックスが無くて済むように考えるけど結果的に必要になる箇所が細部で出てくるんだよね
0628デフォルトの名無しさん (スプッッ Sd1f-hmJy)垢版2018/08/08(水) 14:08:00.53ID:csO2M6exd
どうしても必要な時はselect((value, index) => new {V = value, I = index})でインデックス引っ張ってるわ
それでもインデックス欲しい条件1行で書けるのが楽だからLinq便利派だけども
0629デフォルトの名無しさん (スップ Sd1f-Bh6x)垢版2018/08/08(水) 14:25:20.52ID:CtU8HUVGd
>>628
俺もそれ、ちょくちょくするんだけどforで回したほうがよくね?って思っちゃうことがあるんだよね
もちろん処理によりけりと言ってしまえばそれまでなんだけど
比較するようなもんじゃないかもしれんがjavascriptなんかだと大抵インデックス取れるから、そっち触ったあとにC#に戻ると処理考えるときにインデックスありきで考えがちになっちゃう気がしてる
0630デフォルトの名無しさん (スップ Sd1f-Bh6x)垢版2018/08/08(水) 14:32:55.42ID:CtU8HUVGd
先に出てた課題でもzipしたあと、そのままlinqで処理を完結させるか、zip後にforで回すか
個人的にはzipがどちらにせよ入るなら最後までlinqの方が1つの処理を1つの手法で解決してる感じがして好き
だけどインデックスが処理に必要だからfor使いたいって気持ちもわかる
0632デフォルトの名無しさん (ワッチョイ 338a-Xflc)垢版2018/08/08(水) 15:07:53.10ID:x4iNladl0
こういう拡張メソッド作っておくのはたまにやる
public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> self, Func<T, bool> predicate)
{
  var i = 0;
  foreach(var s in self)
  {
    if(predicate(s)) yield return i;
    i++;
  }
}

dataA.Zip(dataB, (a, b) => a == b).WhereIndex(eq => !eq);

拡張メソッド嫌いな人もいるだろうけど一番読みやすい
わざわざSelectでインデックスつけてる冗長さもないし、添字アクセスもないし、使う時はすっきり意味がわかりやすい
0633デフォルトの名無しさん (ブーイモ MMa7-A/YO)垢版2018/08/08(水) 16:44:49.34ID:Gn4Y43YUM
>>632
正直クソ分かりにくい
俺がレビューしたらリジェクトするわ
WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する
そもそもメソッド名以前に、LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、
キーやインデックスの方を返すような操作については特に念入りにそれがわかるような明示的な表記になるように工夫したほうがいい
0639デフォルトの名無しさん (ワッチョイ 338a-Xflc)垢版2018/08/08(水) 18:27:19.45ID:x4iNladl0
>>633
>WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する

そんなのはWhereでできるし

>LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、
>キーやインデックスの方を返すような操作については

それもSelectでできるし
だいたい要素の値を操作していくものっていう暗黙的了解があるならWhereIndexも要素の値が対象と思うんじゃない?
なんか矛盾してね?
0644デフォルトの名無しさん (ワッチョイ de81-8ulZ)垢版2018/08/11(土) 00:11:00.13ID:p6HuaRWz0
>>643
それってインデックスつけることが一つの目的じゃない?
インデックスってかソートかな?
いろんなところでいろんな処理されるコレクションがあって、その処理の殆どにインデックスが不要だけどごく一部にインデックスがほしいとき、わざわざ1行追加するのスッキリしないなぁって感じ

たった1行なんだから書きゃいいんすよ?
それはわかってるけどなんか気持ち悪いなぁって気がするだけ
0645デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)垢版2018/08/11(土) 12:41:19.45ID:YyI+aygL0
ほとんど必要が無いインデックスだけど
ごく稀に必要になるから必要になるところでだけインデックスを追加するんだろ
ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
0648デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)垢版2018/08/11(土) 14:36:01.31ID:YyI+aygL0
>>647
なにいってんだ?
IEnumerable<T>にインデックスなんてない
ないからSelectで付与するんでしょ

そんなルールはないけどほとんどほとんどLinqで済むでしょ?
Linqでサクサク処理してるのに中に突然ループが紛れ込んできたらキモいって話をしてる

var tmp = list.Where(...).OrderBy(...).ToArray();

for (int i = 0; ...) {
...
}

var result = tmp.Where(...).Select(...);
0649デフォルトの名無しさん (ワッチョイ de81-8ulZ)垢版2018/08/11(土) 14:48:08.19ID:p6HuaRWz0
>>648
え?ずっとそういう話をしてたのになんで突然
>ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
って書いたの?

インデックスのないlinq処理でそれが必要になったときわざわざselectで付与するのなんか気持ち悪いねーって話よ?
0650デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)垢版2018/08/11(土) 14:59:36.83ID:YyI+aygL0
>>649
気持ち悪いのはお前の感覚ではという話だろ
俺からすればToArrayやToListをかましてメモリとCPUを無駄にしたり余計なメソッドを追加するほうが嫌
メソッド化に関しては再利用性が高いかうまく抽象化されていて可読性が高まるというなら別だが
真にランダムアクセス性が必要なアルゴリズムならば変換せざるを得ないがそもそも今回の問題には必要がない
0651デフォルトの名無しさん (ワッチョイ de81-8ulZ)垢版2018/08/11(土) 15:12:53.25ID:p6HuaRWz0
>>650
うん、そうだよ
個人的に気持ち悪いなーってだけ
はじめからそういうふうにしか話ししてないつもりだけど

ランダムアクセスが不要だからあえてランダムアクセスできないコレクションを選択するの?
ランダムアクセスは不要だけどあったって使わないだけだからどっちでもいい、ってなるのが普通じゃないの?
パフォーマンス要求がシビアでランダムアクセスできるコレクションを選択することで、その要求から外れてしまう、とかいうならわかるけど
0652デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)垢版2018/08/11(土) 15:28:37.80ID:YyI+aygL0
>>651
ランダムアクセスが不要なアルゴリズムなら「当然」IEnumerable<T>(ランダムアクセスできないコレクション)を選択するだろう
まったくもって「あえて」と言う理由が分からん
もしもSelectやWhereの引数が配列だったら普通のプログラマなら「あえて配列にしたのはなぜか」と疑問を持つだろう
なんか逆なんだよね思考パターンが
0654デフォルトの名無しさん (ササクッテロラ Sp03-bBK3)垢版2018/08/12(日) 00:56:37.14ID:UOoEXFjMp
コレクションって言葉がダメだと思うぞ?
そもそもIEnumerableはシーケンシャルな列挙の機能しか提供しない
根本的に理解が間違ってる
0660デフォルトの名無しさん (ワッチョイ b759-EyNT)垢版2018/09/13(木) 22:10:23.24ID:IOzhaO6j0
doxygenみたいなドキュメント生成ツールを使うとxaml部分がまともに解析出来ません。
bindingしているviewとviewmodelの関係なんかが分かるドキュメントにしたいんですが何か良い方法ないでしょうか?
0661デフォルトの名無しさん (ワッチョイ 57d2-NCQU)垢版2018/09/14(金) 22:17:10.47ID:BClpbb6X0
Func<string> func = () => { return "text"; };
var res = func();

これを一文で書くことはできますか。

ふと気になっただけではあるけれど、自分で解決できなくて気になって仕方がない。
基本的なことが分かってないような気がする。
0664デフォルトの名無しさん (ワッチョイ ffe8-okpm)垢版2018/09/15(土) 00:21:48.95ID:elLmwu/20
本当はなにをしたかったんだろう
例題が悪い気がする
0665661 (ワッチョイ 57d2-NCQU)垢版2018/09/15(土) 00:41:48.54ID:LMkhUY/p0
ああ、そうか。w

パラメータに対してちょっと複雑な変換を掛けるのだけど、汎用性がないから専用関数作るのもなんだし、
だったらラムダ式で書けばいいんじゃね?→ ラムダ式は Func 型?だから戻り値とれねーじゃん ってところから進めなった。
他にやり方はあるので出来なくてもいいのだけど、気にはなって。
0667デフォルトの名無しさん (ワッチョイ ff81-meyQ)垢版2018/09/15(土) 05:59:42.97ID:crViL/AR0
>>665
参照渡すとか?
0668デフォルトの名無しさん (アウアウエー Sadf-v8l+)垢版2018/09/15(土) 15:15:22.99ID:aC3C7hdpa
こんなのは嬉しくないね
var pi =
  (
    (Func<double>)
    (      
      () =>
      {
        const int total = 1000000;
        var inside = 0;
        var rnd = new Random();
        for (int i = 0; i < total; i++)
        {
          var x = rnd.NextDouble() * 2 - 1; var y = rnd.NextDouble() * 2 - 1;
          if (x * x + y * y < 1) inside++;
        }
        return 4.0 * inside / total;
      }
    )
  )();
0669デフォルトの名無しさん (アウアウエー Sadf-v8l+)垢版2018/09/15(土) 15:22:04.34ID:aC3C7hdpa
これも却下だな
Func<Func<double>, double> invoke = (f) => f();
var pi = invoke
  (
    () =>
    {
      const int total = 1000000;
      var inside = 0;
      var rnd = new Random();
      for (int i = 0; i < total; i++)
      {
        var x = rnd.NextDouble() * 2 - 1; var y = rnd.NextDouble() * 2 - 1;
        if (x * x + y * y < 1) inside++;
      }
      return 4.0 * inside / total;
    }
  );
0672デフォルトの名無しさん (ワッチョイ d79a-KGwk)垢版2018/09/15(土) 18:34:42.22ID:nwnNkRfe0
docsにもあるけど
https://docs.microsoft.com/ja-jp/dotnet/api/system.random?redirectedfrom=MSDN&;view=netframework-4.7.2
dobonの方が分かりやすいし読みやすいから
https://dobon.net/vb/dotnet/programing/random.html の
//0.0以上1.0未満の乱数を倍精度浮動小数点数で返す
Double d = r.NextDouble();
>>670こういう意味とは違うの?
整数範囲で出して割った方が範囲や有効桁も決められるからそっちの方がよさそうな気もする
0673デフォルトの名無しさん (アウアウエー Sadf-v8l+)垢版2018/09/15(土) 18:56:24.76ID:aC3C7hdpa
[0, 1]とか(0, 1)は数学の記号ね(多分高校1年ぐらいで習ってるはずw)

Random.DoubleNextの戻り値は[0, 1)(つまり0≦x<1)らしい
普段乱数使うようなコード書いてないからよく分からんけど、
0≦x≦1とか0<x<1でないと困る場面も多いんじゃないかなと思っただけ
0677デフォルトの名無しさん (ワッチョイ 9fb3-0AE+)垢版2018/09/15(土) 20:30:38.93ID:OUVvcRON0
>>665
> パラメータに対してちょっと複雑な変換を掛けるのだけど
と言うなら例もパラメーター使ってる例を書かなきゃ

>>668
俺もこれしか思いつかなかった
そもそも
var f = (string x) => { return "abc" + x; };
位は型推論してくれてもいいと思うんだけど難しいのかな?
0679デフォルトの名無しさん (ワッチョイ 9780-9b2l)垢版2018/09/15(土) 20:42:09.91ID:KIanXBkQ0
面倒だったら擬似乱数生成器を自分で作ればいい
キミラ程度が使う程度の擬似乱数だったら数行コピペでできる程度のもんで十分だからな
0681デフォルトの名無しさん (ワッチョイ 9780-9b2l)垢版2018/09/15(土) 20:53:08.93ID:KIanXBkQ0
https://ideone.com/PJDFVv

この程度で十分
0684デフォルトの名無しさん (ワッチョイ 9780-9b2l)垢版2018/09/15(土) 21:37:43.29ID:KIanXBkQ0
やっぱり低学歴知恵遅れは
内側の擬似乱数生成器をかえるだけの話なのがわかってないわ

きっと擬似乱数がなんなのかすらわかってないわ
擬似乱数がなんなのかわからずに乱数()とかいって数字使ってる程度だからな
0685デフォルトの名無しさん (ワッチョイ 9780-9b2l)垢版2018/09/15(土) 21:39:33.01ID:KIanXBkQ0
つまり
コレがC#なんか使ってるヤツラのオツムの程度
0686デフォルトの名無しさん (ワッチョイ b7e3-TNGn)垢版2018/09/15(土) 21:40:44.62ID:qw6mr0Vb0
>>673
(0,1)は[0,1)が0ならやりなおし、でいいんじゃないのと単純に思ったがそんなものじゃない?
0687デフォルトの名無しさん (ワッチョイ 9780-9b2l)垢版2018/09/15(土) 22:05:16.77ID:KIanXBkQ0
そもそも機械イプシロンのこと分かってて
ああいうレスしてるようにはまったく見えないからな
0689661 (ワッチョイ 57d2-NCQU)垢版2018/09/15(土) 23:10:36.43ID:LMkhUY/p0
気に掛けてくれた方々に。ありがとう。

>>668
ああ。なるほど。型を明示してあげたらよかったのか。
キャストを加えたら期待通りに書くことが出来ました。ありがとうございます。

これってラムダ式を var で宣言した変数に代入できなかったことがヒントになり得たんだな。頭が回ってなかった。
これくらいは型推論してくれても良さそうなのにとは原因が分かった後での負け惜しみ。

>>666,680
今回のはそういうことが出来そうなのに出来なくて悶々としてしまって。
実用性度外視で原因を知りたかったの。
0690デフォルトの名無しさん (ワッチョイ d7c4-8zjY)垢版2018/09/16(日) 10:09:07.69ID:QiF2mi6W0
今ならref/outがないならAction/Funcに型推論して
シグネチャが同じdelegate間の暗黙の型変換が行われる
初期化時に左辺とかキャストとかでdelegate型が明示されてたらそのdelegate型でnewされる
でいいと思うよな〜
0697デフォルトの名無しさん (ワッチョイ c1d2-C4Ur)垢版2018/09/26(水) 21:52:32.99ID:rAzbq+Jy0
下みたいなことって出来ます?
やりたいのは object 型の変数に代入したジェネリック系のインスタンスを、さらに元のジェネリックの型にキャストし直すってことなんですが。

void func( object dic )
{
var tmp = (Dictionary)dic;  // ← これみたいなことをやる方法がないかなと
tmp.Add( "test", new object() );
}

var dic = new Dictionary< string, object >();
func( dic );
0700デフォルトの名無しさん (ワッチョイ 17d2-svSY)垢版2018/09/27(木) 00:24:29.22ID:WuETTr790
>>698
言葉が足りてなかった。申し訳ない。

例示のケースの場合は、
var tmp = (Dictionary<string,object>)dic;
と指定すれば出来るのだけど、Dictionary だけでキャストし直すみたいなコトできないかなって。
as でも Dictionary だけではキャストできないことは確認しました。
0704デフォルトの名無しさん (アウアウエー Sadf-upLT)垢版2018/09/27(木) 12:48:53.74ID:sTtGwCQ3a
>>700
を読み直してみると、ひょっとして要するにジェネリックの型パラメータを書くのが面倒臭いから
省略できないか?、って言いたいのかな

それなら答えは「できないけど仮に出来たとしても絶対やるな」じゃないの?

もちろん、
using Dictionary = System.Collections.Generic.Dictionary<string, object>;
こういうエイリアスは書けるはずだと思うけど

何にしろ、質問は他人が読んで分かるように書いて欲しいよね
0707697 (ワッチョイ 17d2-svSY)垢版2018/09/29(土) 00:47:34.72ID:EY+8Y7mF0
ありがと。
やっぱり dynamic 使うしかないかな。避けたかったのだけど。

なにが入ってるか分からない配列の中身を文字列化してログ出力したかったの。(最初は)
object[] の要素の中身が generic だったりしたときに ToString() だとクラス名?にしかならないから。
0717デフォルトの名無しさん (アウアウエー Sadf-upLT)垢版2018/09/29(土) 18:05:26.03ID:w5r/wslsa
もういいでしょw
たぶん何か勘違いしてるだけだと思うよ

俺もプログラミング初めて2,3年は静的/動的とかコンパイル時/実行時の違いとか
分かってるようでよく分かってなかった
0723デフォルトの名無しさん (ブーイモ MM6b-wEhW)垢版2018/10/16(火) 16:00:38.35ID:y5q0bWlwM
Javaもクライアントアプリ分野から撤退したから今はクロスプラットフォーム度でいえばC#のほうが上なくらい(あくまでカタログスペック上は)
C#はWebかコンソールアプリなら.NET Core使えばLinuxやMacで動く
スマホやMac向けのGUIアプリならXamarinだな
0725デフォルトの名無しさん (ワッチョイ be9a-ypm2)垢版2018/10/21(日) 20:25:55.35ID:5Xb93YKt0
普及度とかマルチプラットフォームとかどうでもいいけど
Windows使っていて個人的に何かちょっと作ろうと思ったときに、もうC#以外考えられない体になってしまった
0740デフォルトの名無しさん (ワッチョイ bee8-nBLa)垢版2018/10/23(火) 12:52:00.65ID:Hcq+1RfE0
なお、どこも新規開発はFormの模様
0752デフォルトの名無しさん (アウアウカー Safb-WxZP)垢版2018/10/23(火) 17:39:47.89ID:PWuDtLsGa
Core3.0まで出てるんだ
なんか使いやすくなった?
0760デフォルトの名無しさん (アウアウウー Sa9f-tSmu)垢版2018/10/23(火) 21:26:47.62ID:+h1AjSvua
>>759
デプロイどうすんの?アップデートの度に君が出向いて客のPCでZip解凍して回るの?
それが面倒だからWebなのに、それが.NET Coreになったところで何も解決しないよ
というかClick Onceが無くなる分だけ状況は悪くなるな
0764デフォルトの名無しさん (ワッチョイ 1f9f-WxZP)垢版2018/10/23(火) 21:57:45.44ID:NgQNKVM70
.NET Coreって仕事で使う?
0777774 (ワントンキン MMff-1okT)垢版2018/10/25(木) 12:22:26.50ID:nll2w7iZM
特に怪しいものなんか動いてないと思うんだけどなぁ
アンチウイルスの保護停止しても変わらない

こんなときに効果的なログの張り方ってある?
一部がネックなのではなく、もう全部が緩慢な感じ
0779デフォルトの名無しさん (オイコラミネオ MM09-phox)垢版2018/10/25(木) 12:28:31.91ID:LYsln+4LM
例えばウィンドウズサーチとか重たいよね
リソース逼迫してないなら
ディスクI/OやネットワークI/Oや
ネットワーク構成が違うとかかね
全体的に緩慢となるとなあ

ヒント欲しいならもっと情報ださないとダメよ
0782デフォルトの名無しさん (ブーイモ MMf3-dYvX)垢版2018/10/25(木) 15:08:46.52ID:qGEaBy7DM
>>781
全然ちゃうで
0786デフォルトの名無しさん (ワッチョイ 277f-rZJc)垢版2018/10/26(金) 00:26:15.60ID:/Y6tHm6z0
スレチかもしれんけど、まだサポートしてないバージョンのアセンブリで定義されてるクラスをリフレクションでもいいから使う方法ってないかな。
具体的にはフレームワークのバージョンが2.0しか許可されない職場でxdocumentを使う方法…
dllを隣に持ってきて参照しても、型自体を認識してくれない
0787デフォルトの名無しさん (ワッチョイ 5781-dYvX)垢版2018/10/26(金) 00:59:31.47ID:HrTWAmck0
>>784
100万データ処理してから物言いなさい
0794デフォルトの名無しさん (アウアウウー Sa1f-DBFP)垢版2018/10/27(土) 11:23:19.53ID:zH3PfDR1a
普通にRESTか、クラウドプラットフォームが提供するメッセージキュー(SQSとか)などの外部サービスだよ
余計な囲い込みを廃して今時のWebシステムの構成要素として組み入れやすくするというのがCoreなんだから、今更.NET固有のRPCなんか要らん
0795デフォルトの名無しさん (ワッチョイ 1aaf-ZA70)垢版2018/11/05(月) 18:13:53.94ID:PEqFXj+e0
dllを修正する際にどの程度までの修正であれば問題ないかまとめてある
サイトってありますか?
dllのクラスの派生元に一つクラスを挟んだ修正では問題なく動いている
ようだったので・・・。
0797デフォルトの名無しさん (ワッチョイ 4e9a-Y/6i)垢版2018/11/05(月) 19:16:09.78ID:W+eHh5+20
>>795
逆に使えなくなる場合は(マネージドdllで)厳密な名前付きアセンブリとして作ってある物が名前などが変わってしまった場合
厳密な名前付きアセンブリ
https://docs.microsoft.com/ja-jp/dotnet/framework/app-domains/strong-named-assemblies
>厳密な名前付きのアセンブリを参照すると、バージョン管理や名前の一意性を保護できるなどの利点を期待できます
それ以外は変更のないクラスやフィールドにアクセスする分には問題にならないはず
0799デフォルトの名無しさん (ワッチョイ 8a16-zV7r)垢版2018/11/07(水) 16:08:10.06ID:Qrgo3xvC0
Monoの互換性についてなのですが、
Visual studio2017でWindowsクラシックデスクトップのWindowsフォームアプリケーション(.Net Framework)で書いたコードは
そのままMonoでコンパイルできるという認識であってますか?
0800デフォルトの名無しさん (ワッチョイ 41eb-K50l)垢版2018/11/10(土) 05:02:04.09ID:ZJVvB/9K0
>>799
できるし、VisualStudioでコンパイルしたものをMonoでコンパイル直す必要すらない建前なんだけど・・・・
実際には対応状況にかなりの差があってGUIアプリケーションやら暗号やらが絡むものについてはうまくいかない事が多い
0804デフォルトの名無しさん (アウアウウー Sa05-8u3a)垢版2018/11/11(日) 10:14:46.52ID:zL+4Qkmba
Javaのリモートデバッグは

1. 起動オプションでデバッグ用のリモートポートを指定
2. デバッガで同じポートを指定してアタッチ

でできますが
C#(DotNet Core 2.1)では同じような事は出来ませんか?
運用環境でしか発生しないバグのデバッグってどうやればいいんでしょうか?
0807デフォルトの名無しさん (ワッチョイ 09e3-BKZ1)垢版2018/11/15(木) 15:41:42.81ID:hjFVqahJ0
Unity って、Wikipedia によれば、600,000 (60万人) も、登録ユーザーがいて、
従業員が、2,000人以上、年間利上げが、100億円を超えるほどあるとされる。

ゲームエンジン Unity の使用料は、
・1,000万円までの売り上げなら、無料。
・2,000万円までの売り上げなら、年間5万円ほど。
・それ以上の売り上げなら、で年間18万円ほど。
とある。

でも、Wikipediaに載ってる Unity を使ったゲームのリストは、
100本あるかどうか程度しかない。

これだと、Unityには、年間2,000万円程度の収入にしかならないのでは
ないかと思う。

それに、アメリカですらプロのプログラマは、30万人くらいしかいない
とされることとも辻褄が合わないように思える。


なんかおかしくない?
0812デフォルトの名無しさん (ワッチョイ 7ae9-dRC3)垢版2018/11/15(木) 17:52:04.91ID:tBfV11FV0
最近スマホアプリのtop100くらいまでの使用エンジン調査した記事あった気がしたんだけど見つからんかった
たぶん半分くらいがunity製だった気がする
PCでもUnity製増えてきてるしswitchにもそこそこ出てる
日々山ほどのゲームがリリースされてるのにwikipediaで全てを網羅できるわけないと思うんだけど、なんで自分がおかしいと思わなかったの?
0813デフォルトの名無しさん (ワッチョイ 7ae9-dRC3)垢版2018/11/15(木) 17:56:18.66ID:tBfV11FV0
>>811
訪れる?利用するんじゃないの?
ディレクタやプランナがUnity上でプレイすることもあるし、CGデザイナやUIデザイナがUnity上で作業することもある
もちろん3Dモデリングなんかは専用のツールのほうが作業はしやすいけどね
0814デフォルトの名無しさん (ワッチョイ 7ae9-dRC3)垢版2018/11/15(木) 18:00:10.49ID:tBfV11FV0
っていうか普通の企業なら間違いなく年間売上2000万なんて超えるよ?
安く済ませられるのなんて個人事業主か同人サークルだけ
社員が5人でもいたらまず年間売上で引っかかるんだから
大きい企業なら普通に100単位でアカウント持ってるし、小さいところでも10以上持ってるとこなんて山ほどある
0820デフォルトの名無しさん (ワッチョイ 09e3-BKZ1)垢版2018/11/16(金) 02:23:44.07ID:a546+gcL0
背理法で証明して見せたかっただけだよ。
つまり、矛盾を示す事で、間違い/捏造であることを証明する手法。

だから、ありえないような結論が出たということは、正しく証明できた
事になる。
0821デフォルトの名無しさん (ワッチョイ cad2-RJIg)垢版2018/11/16(金) 04:24:32.84ID:/x4PzStk0
はいりはいりふれはいりほー
0822デフォルトの名無しさん (ワッチョイ adea-ABD/)垢版2018/11/16(金) 14:20:33.68ID:+bMNmjEk0
Unityの登録だけなら自分でもやってるからなぁ
仕事でやってる人なんて会社用と個人用を別々に登録してるんじゃね

あとUnityはVRチャットで自キャラ作るのに使うから、
それも多いと思う
0823デフォルトの名無しさん (ワッチョイ 09e3-BKZ1)垢版2018/11/16(金) 19:05:12.63ID:a546+gcL0
>>822
やっぱり、そういう事もあるんだね。

どっちにしろ、Uniy のゲーム・ライブラリだけのライセンス料では、年間100億円
の売り上げにはならない気がする。

CADなども売っているので、そういう売り上げがかなりあるのかもしれない。
0825デフォルトの名無しさん (ワッチョイ d9e3-1aIk)垢版2018/12/12(水) 13:45:10.42ID:RRyKxOPE0
>>807
海外の人も Unity 発表の数値には疑問を抱いている。
ちなみに、日本のゲーム業界の開発者数(プログラマ、
デザイナ、企画含む) は、2万5,000任程度だとされ、
世界でも1チームの平均人数は5.5人程度。
Unityには、450万人もの開発者が登録されているとされる。
Unity発表の数値が正しければ、世界には、
ゲーム開発チームが、160万〜200万チームも
あることになってしまう。

「How many game developers existed in 2016?」
https://www.quora.com/How-many-game-developers-existed-in-2016


A cached version of Unity’s public relations page from July 2016 states that
Unity has 45% of the global market share and 4.5 million developers using the
platform, indicating an estimated total of 10 million individual game developers
(my guess is that “developers” means people working in game development,
including roles such as artists and game designers as well as engineers, who
could potentially use the tool).

From a 2013 Game Development Magazine survey of 1051 developers (republished by GamaSutra):

Studio size and type: 7% of respondents are individual independent devs,
19% are teams of 2-5 people, 14% on 6-10, 18% on 11-30 , 9% on 31-50,
7% on 51-80, 5% on 81-100, 8% on 101-150, 4.5% on 151-200,
5.5% on 201-300, and 3% on teams of 300+.

This indicates an average team size between 5 and 6 team members.
If each of these members falls under Unity’s classification of “developers,”
we can estimate 1,600,000 - 2,000,000 game development studios (including
individuals developing games alone as well as teams).
0826デフォルトの名無しさん (ワッチョイ d9e3-1aIk)垢版2018/12/12(水) 13:54:09.60ID:RRyKxOPE0
2017/01/27時点で、GooglePlay には、260万個、AppStore には、
200万個のアプリがある。そのうちの25%がゲームだとして、Android
には、60万ゲームある。1チーム当たり 5個のゲームを公開している
としても、12万「チーム」あることになる。日本のプロのゲーム開発者
が2万5,000人程度しかいないことを考えると、凄い人数では有る。

そもそもアプリ全体の個数もかなり多いので、アマチュアプログラマがかなり
多い事は多い。

------
There are currently over 2.6 million apps in the Google Play Store and over
2 million in the App Store. I can’t find anything to say how many of those
are games. Let’s assume 25% are games. Lets just focus on Android as
our estimation. That would mean more than 600,000 games on Google Play.
I would say the average developer has 5 games on the store. Lets use 10
to be conservative. That would mean there are 60,000 different developers.

That’s my best guesstimate. My gut tells me it’s probably more but who
knows. I know for one thing, I am a developer and I have 4 games released.
Feel free to check them out:
0827デフォルトの名無しさん (ワッチョイ d9e3-1aIk)垢版2018/12/12(水) 14:02:18.23ID:RRyKxOPE0
GooglePlayやAppStoreのAppって、250万個もあれば、その中に本当に同一のものが
含まれてないか、または、250万個も本当にあるかを調べることは不可能に近い
かも知れない。
そもそも本当はそんなに無かったりして。そもそも、Vectorに登録されているアプリ
だってそこまで無い気もするし。
0828デフォルトの名無しさん (スププ Sdb3-OBga)垢版2018/12/12(水) 14:04:10.36ID:3f3X1OW4d
うちゲーム会社じゃなくて製造業(けっこう大手)だけど、VR絡みはUnity使ってるよ。
同業他社も使ってるのは意見交換会で聞いたし。
映像系でも使われ始めてるから、ゲーム業界から離れたほうがわかりやすいかも。
0830デフォルトの名無しさん (ワッチョイ d9e3-1aIk)垢版2018/12/12(水) 14:43:30.92ID:RRyKxOPE0
確かに、VRまで含めれば説明が付く気はするんだよ。
使う人の人数は作る人の人数より100倍程度は居るのが普通だから。

ただ、GooglePlayに登録されているアプリ数が本当に250万本もあるかどうか、
そのまま信じていいかについては注意すべき。

そもそも250万種類の一覧表をテキストファイルで見られるかどうか。

旧 nifty serve なんかも、「シェアウェアは儲かる」と言ってパソコン通信
加入者を増やそうとしたらしい。その際、「秀丸エディタ」が1億円の売り上げ
がある、とされたが、その作者が富士通社員だったことは公然の秘密。
0832デフォルトの名無しさん (ワッチョイ d9e3-1aIk)垢版2018/12/12(水) 14:55:46.58ID:RRyKxOPE0
>>831
そういう意味じゃなくって、GooglePlay から、全てアプリが載った一覧表を一度に
ダウンロードできるのかってこと。

検索するだけだったら、本当に250万種類もあるかは誰にも分からないじゃない
かと。
0836デフォルトの名無しさん (スップ Sdf3-wOqU)垢版2018/12/12(水) 20:04:55.15ID:fYjPqF3od
ダウンロードできるか?ってできるだろ
1レコードがMB単位でデータあるんか?
1レコード1KBで2.5GB
最近のゲームなんて10GB超えのダウンロード当たり前みたいなとこあるじゃん
250万行のテキストはあんま開きたくはないが
0837デフォルトの名無しさん (スップ Sdf3-wOqU)垢版2018/12/12(水) 20:09:07.70ID:fYjPqF3od
なんの根拠もない空想だけどゲームとVRの比率、VRが10%とかじゃない?
もちろん両方もそれなりにいるだろうけど
それでVRまで含めれば説明がつく、って意味がわからん
0838デフォルトの名無しさん (スププ Sdb3-OBga)垢版2018/12/12(水) 20:16:58.44ID:3f3X1OW4d
あんまり詳しくは言えないけど、VR以外にも使ってるものもあるし、エンタープライズだとお値段時価だし、
企業ユースでは数人のチームなんてのはあり得なくて結構な人数分揃えるからね。
CADと連携したりなんやかんやで、ゲーム開発より金はかかるから、プロダクトの割合とは一致しないよ。
0841デフォルトの名無しさん (ワッチョイ 06b5-t2lu)垢版2018/12/14(金) 16:44:56.02ID:nWTWWp6e0
質問いいでしょうか
webapiにて
var task = Task.Factory.StartNew
これで重い処理をバックグラウンドで処理させています。
このtask開始時にDBにProcessThread.IdとProcessThread.StartTimeを落として
別のwebapiでDBに落としたIdとStartTimeを使って
GetCurrentProcess().Threadsを検索して定期的に生きてるかのチェックを行っています。
これがけっこう不安定みたいで、バックグラウンドの処理が終わる前に
ProcessThreadが検索できなくなる場合があります。
最初にStartNewさせた際のProcessThreadが生きてる正しい確認方法はないでしょうか?
ブラウザを閉じた場合を考慮してProcessThreadで確認を行いたいです。
0842デフォルトの名無しさん (ワッチョイ 06b5-t2lu)垢版2018/12/14(金) 17:44:35.68ID:nWTWWp6e0
すいません。
変な質問ですね。
var taskを見るのではなく、その他の方法で
バックグラウンド処理が動いてるかの確認が行いたいです。
0843デフォルトの名無しさん (ワッチョイ 06b5-t2lu)垢版2018/12/14(金) 18:14:11.54ID:nWTWWp6e0
すいません。
自己解決です。
static public Task wkTaskを宣言しておいて

wkTask= Task.Factory.StartNewで作成したあと、ブラウザを閉じて
開き直してもwkTaskは生きてますね。

スレ汚しすいませんでした。
0850デフォルトの名無しさん (ワッチョイ ae02-HdPi)垢版2019/02/10(日) 17:55:21.67ID:Y+0FbWW50
メソッドへのオブジェクト引数で、参照渡し(refをつける)、とオブジェクトの値渡し(refなしの値渡し。つまり、ポインター(アドレス)渡し)の違いがわかりません。
同じと思ってますが・・・・・。事実は違うようです。参照だと渡し元も変更される、っていう違いは分かります。
それ以外の違いはあるんでしょうか?
0854デフォルトの名無しさん (ワッチョイ 4690-Bwin)垢版2019/02/10(日) 18:57:09.81ID:ynO2ssbq0
参照値でも、refつけない値渡しとref付ける参照渡しできる。
で、参照値以外の値...とりあえず非参照値と呼ぶと
非参照値でも、refつけない値渡しとref付ける参照渡しできる。

全部で4パターンあるってこと 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0855デフォルトの名無しさん (アウアウエー Sa0a-gVV1)垢版2019/02/10(日) 19:18:44.11ID:zgWWffC0a
>>850
簡単なので難しく考えてはだめ。すごくシンプルな話。

その型の値(その型の変数に格納される値)を渡すのが値渡し。
その型の変数の「場所」を渡すのが参照渡し。
さらっと書いたけど、「その型の値 = その型の変数に格納される値」なのはよく理解する必要がある。
つまり、参照型の変数に格納される値って何だったか要再考。

変数とはメモリ上に割り当てられた特定の領域のこと。
だからその領域のバイト列のコピーを渡すのが値渡しで、
領域の先頭アドレスを渡すのが参照渡しだと思えばいい。

参照渡しでメソッドが受け取る情報は「変数の」場所なので、参照渡しの引数に
リテラルや式を渡すことは出来ない。
0856デフォルトの名無しさん (ワッチョイ 6ea5-sQyl)垢版2019/02/10(日) 19:59:44.58ID:xbk//Ba50
多分だけど参照渡しと値渡しの挙動自体は理解しているものの、
デフォ参照型とデフォ値型の区別がついておらずにデフォ参照型で実験をしてrefでも素渡しでも変わらないやんってことじゃないか
0870デフォルトの名無しさん (ワッチョイ cd0c-feI+)垢版2019/02/12(火) 23:51:08.44ID:HQcd2HqP0
BindableBase SetPropertyとかでぐぐってみれ
有り体に言えば自身のプロパティ(のバックストア)を差し替えるジェネリックメソッドを基底クラスで定義するのに使うだけ
0871デフォルトの名無しさん (ワッチョイ f901-OF6d)垢版2019/02/13(水) 00:40:04.33ID:6JezjdzR0
WPFとかUWPとか使ってればBindableBaseのありがたさはよくわかる

関係ないけどstaticメソッドって呼び出すときにいちいちインスタンスを生成する必要がないって以外のメリットあるのかな?
0872デフォルトの名無しさん (アウアウエー Sa0a-gVV1)垢版2019/02/13(水) 01:53:30.80ID:sK/raQIQa
>>871
まあメリットって発想がそもそもおかしい。
例えばDouble.Parseがstaticなのはその方が意味的に自然だから
インスタンスメソッドである必然性がないし、インスタンスメソッドでは不自然だから
0881デフォルトの名無しさん (アウアウカー Sa5b-KHu+)垢版2019/02/15(金) 22:47:38.37ID:izkrr7dEa
いやチェックしとけよそこは
0887デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)垢版2019/02/16(土) 13:08:53.78ID:q1DAaOKG0
>>883
> 例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
投げる方で悩むのはわかるけど
> とりあえずcatch(Exception e)とかしちゃってる
受ける方はどれ受けるべきかはわかってるでしょ
最終手段としてよくわからんけどエラーが発生したから終了するね
って言うならcatch(Exception e)もありだと思うが
0892デフォルトの名無しさん (オイコラミネオ MMdb-XSOg)垢版2019/02/16(土) 15:03:48.09ID:uy2P96bkM
最近部活の後輩が黒魔術みたいなコードを書くようになって困ってるんだが対策ない?

こんな感じのコードを後輩が書いてくるんだよ↓

public interface IMessenger {
__public MessageReceived();
}
public abstract class Messenger : IMessenger{
__public abstract void MessageReceived();
__public abstract void Retry();
}
0893デフォルトの名無しさん (オイコラミネオ MMdb-XSOg)垢版2019/02/16(土) 15:04:05.72ID:uy2P96bkM
public class Mail : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Alarm : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Communication {
__public void SendMessage(IMesssenger message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage() as IMessage;
____received?.MessageReceived();
__}
}
0894デフォルトの名無しさん (オイコラミネオ MMdb-XSOg)垢版2019/02/16(土) 15:04:31.94ID:uy2P96bkM
こんなんだったから

public class Communication{
__public void SendMessage(string message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage();
______switch(received.First()){
_______case "0":
_________MailEvent(received);
_________break;
_______case "1":
_________AlermEvent(received);
_________break
____}
__}
}

こんな感じで書くように矯正しといた
CSVで2文字で分けるって言ってるんだから
何が起こってるかわかるように書くことを意識してもらわないと
0895デフォルトの名無しさん (ワッチョイ c701-cT+3)垢版2019/02/16(土) 15:06:36.58ID:8cj+4+Hl0
まあ例外でプログラムは終了させるべきだよな
ただ客は例外が起きてもcatchで握りつぶしてスルーした方が文句言わないんだよな……
0901デフォルトの名無しさん (ワッチョイ 7fa7-cT+3)垢版2019/02/17(日) 14:42:24.50ID:QIeMqQFm0
byte*からbyte[]にする方法ってない?
new byte[64];みたいに新規確保してコピーしか方法ないんだろうか
Unsafe.As等で新規確保無しで出来るかと思って色々試してみたけど上手くいかない
0902デフォルトの名無しさん (アウアウエー Sa1f-x6Gg)垢版2019/02/17(日) 15:01:42.36ID:99sHKv96a
「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
全然別の型なんだしあるわけないでしょう。
そういう危なっかしい機能を排除してるのがC#の売りの一つだったはずなわけで

コピーする機能ならMarshalあたりにあるんじゃない?
0903デフォルトの名無しさん (ワッチョイ 7fa7-cT+3)垢版2019/02/17(日) 15:16:25.11ID:QIeMqQFm0
>>902
>「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
そういうことです

あるわけないと言いますが、その逆はあるので出来るかなと思い
(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)
0906デフォルトの名無しさん (ワッチョイ 7fa7-cT+3)垢版2019/02/17(日) 15:27:09.29ID:QIeMqQFm0
>>904
public struct MyStruct { public int Value1, Value2, Value3, Value4 };
byte[] data = new byte[16] { 1,0,0,0, 2,0,0,0, 3,0,0,0, 4,0,0,0 };
ref var myStruct = ref Unsafe.As<byte, MyStruct>(ref data[0]);
これでmyStruct .Value1は1、myStruct .Value2は2, myStruct .Value3は3, myStruct .Value4は4と余計なコピー無しに直接読み書きできる

byte[]からclassの場合はFieldOffset指定して各フィールドを4バイト後ろにづらないと出来ないから実用は難しいけど一応可能
0910デフォルトの名無しさん (ワッチョイ df32-A2tD)垢版2019/02/17(日) 16:27:59.23ID:tKx1WgvG0
byte[]も参照型だからね、オブジェクトヘッダが付いてなければ扱えない
Span<T>でなければ、具体的なシナリオにも依るけど元からbyte[]で作って
TypeHandleとlengthのsizeof(IntPtr)*2分ずらした所を使い回す方が賢明
結局fiexdと一緒な訳だが、P/Invokeならbyte[]渡してもゼロコピーの筈だし

abstract class Union<T> where T : struct {
internal readonly IntPtr length;
public T Value;
}
みたいなオレオレ実装をILキャストした事もあったな…後はSafeBufferとか
0911デフォルトの名無しさん (アウアウウー Sa21-eq4B)垢版2019/02/21(木) 12:35:31.38ID:78/oBfjca
self containedって完全に依存なしになるわけじゃないのね
alpine用にself containedでビルドしても動かなかった
libstdc++とか色々インストールしたら動いたけどさ
dotnetコマンド同梱と比較してコンテナサイズも殆ど変わらないし意味あるのかなこれ
0913デフォルトの名無しさん (ササクッテロレ Spbd-zZPo)垢版2019/02/21(木) 14:33:57.39ID:XSMrGlqdp
SCDは.NETのランタイムを別途インストールじゃなくて同梱するってだけの話だしね
公式ドキュメントにも注釈あるけどLinuxは仕様上完全に断ち切るのは難しいんじゃない?
Windowsだと同梱のファイルだけでそのまま動くけど
0918デフォルトの名無しさん (ワッチョイ 5d2d-4qoz)垢版2019/02/26(火) 16:27:59.06ID:jgGxVc0K0
ちょくちょくポインタ代替機能についての質問があるけどさ
どんな用途でポインタを使いたいのかわかんないけど、大抵の場合はストリームで代用できるんじゃないのかな
0922デフォルトの名無しさん (ワッチョイ 6d7b-SpKW)垢版2019/02/27(水) 22:56:28.74ID:0yfFFlZD0
ポインタなんかアンマネージとのやり取りとBitmapdataでしか使ったことないな
アンマネージとのやり取りだとrefとかoutにしとけばあとは何も考えなくていいから助かる
0932デフォルトの名無しさん (ワッチョイ ffa7-3oSp)垢版2019/03/02(土) 20:18:35.52ID:zHCAEP8E0
>>928
HashSetやDictionaryは要素の数に左右されない方法でアクセスを行うから
含まれてるか否かといったような検索用途に限定すれば1個だろうが1万個だろうが常に高速にアクセス出来る
Listや配列は要素数に比例してアクセス時間かかるようになるが
0935デフォルトの名無しさん (ワッチョイ 9f2f-nxCI)垢版2019/03/03(日) 01:24:26.71ID:5kU0Dorz0
>>932
もとの要素がどこにあるかよくわからんけどな
HashSet作成して要素セットするオーバーヘッドがあるだろう
格納時にハッシュ値計算するから比較のコストが低いわけで、その分格納にコストがかかるんだぜ
0938デフォルトの名無しさん (ワッチョイ 179f-bDR4)垢版2019/03/03(日) 09:05:10.09ID:wNoJ2Bbs0
質問者ってそんなに偉いの?
そいつの質問に常に合致した話題じゃなきゃダメなの?
ひとつの質問があって、それを機会に派生してもいいし、あとは自由に意見しあえってもいい

どんだけ構ってほしいんだ
0940デフォルトの名無しさん (アウアウカー Sa6b-u4yZ)垢版2019/03/03(日) 09:27:17.06ID:qK6tlWl9a
ROM専からすると多少横道にそれてもいろんな手法を見れるほうが面白い
正直これくらいの質問なら好きにしろって感じだろ
0942デフォルトの名無しさん (アウアウエー Sadf-oIIs)垢版2019/03/03(日) 12:55:52.71ID:3ZaOSZpTa
述語の部分が、

(1) 全要素を常に == で評価
(2) 全要素を同じ演算子で評価するが、==以外の演算子も使われる場合がある
(3) 要素ごとに個別の評価方法

で最適な答えが変わりそうなんでその辺ははっきりした方がよかったかもね。
質問者は
(a==1) || (a==4) || (a==5) || (a==7)
の代替案を聞いてるんだから普通に考えれば要素数はそんなに多くないはずで
パフォーマンス云々は風呂敷広げすぎだろうw
0943デフォルトの名無しさん (ワッチョイ d763-vAvN)垢版2019/03/03(日) 13:55:56.58ID:Nfj27eon0
議論の途中で申し訳ないのですが
例えば独自クラスで、こんなのがある。

独自クラス{
string name {get; set;}
decimal num1 {get; set;}
decimal num2 {get; set;}


というのがあって、グリッドビューにList〈独自クラス〉をデータソースとして渡して表示させたいのですが
numは3,4,と増える可能性があります。(型はすべて同じ)
この場合にソースコードをメンテナンスすることなくnumの増減に対応するにはどのようにすれば良いでしょうか?
0947デフォルトの名無しさん (ワッチョイ ff1b-vAqM)垢版2019/03/03(日) 16:50:33.82ID:fEIk0m7q0
>>943
列が可変になるのならデータテーブル使うのが楽だと思う。クラスでやるとしたらexpandoで作るもなくはないと思うけど、それなら上にある通りDictionaryの方がシンプルではないかと。
0948デフォルトの名無しさん (ワッチョイ 9f2f-2ce8)垢版2019/03/03(日) 21:37:48.24ID:5kU0Dorz0
>>942
質問者がオーバーヘッド気になるとか発言してるので、パフォーマンスを考慮することに意味はあるんじゃね

まあ、ずらずらと手書き出来る程度の要素数ならどれ使っても大差ないって言っとくべきではあるかもしれんが
0965デフォルトの名無しさん (ワッチョイ b302-B/CD)垢版2019/03/14(木) 19:31:23.01ID:uF+nNtm+0
ライブラリレベルのオーバーヘッドを気にするのは止めましょう
ガベージコレクションが前提の言語を使ってる以上無駄な努力に終わります
性能絶対重視なら最初からCやASMで書いた方が良いし
よほどのスパーハカーでもない限りそんな努力が報われるほどの性能差にならないと思われます
0967 ◆QZaw55cn4c (ワッチョイ 6fe9-h1+v)垢版2019/03/14(木) 21:49:31.03ID:NTAm4EVS0
>>966
asm の教科書を書いていますが、「そのお題、asm で書く理由がない…」という深刻な問題に直面しています
asm で書くのに適したお題は何かありませんか?
0968デフォルトの名無しさん (ワッチョイ ffad-OnF4)垢版2019/03/14(木) 21:52:50.86ID:SvZaCm1k0
最初のCコンパイラかな
0974デフォルトの名無しさん (アウアウエー Sadf-FtxA)垢版2019/03/14(木) 23:43:27.63ID:fi3bTXEpa
>>972
必要を無視すればBCD演算とか。
最終的にBCD演算命令に翻訳されるようなコードをC#では(Cでも)書けないはず。

まあx86ならマルチメディア系の命令とかが王道なんだろうけどね知らんけど。
0976デフォルトの名無しさん (ワッチョイ ffc7-kdx8)垢版2019/03/15(金) 20:54:11.25ID:lWIPCB/k0
20年ぐらい前の1クロックが今より数十倍以上高価だった頃なら、
ASMによる人力高速化も(コスト的に見合うという点で)意味があった

Cコードで表現されてない知識も使ってちっちゃな関数でも結構簡単に数十クロック程度は高速化できた
Cコードで表現されてない部分を使えば、今もやろうとすれば高速化はできると思う(コストに見合わないだけで)
(変数aとbは実はいつも a<b なのでこのニーモニックが使えるとか、
ここの条件判定文は実は別の変数を計算したときのレジスタのフラグと同じ意味なので計算しなおす必要はないとか)

>>975 の話題に近いけど、
今ならASMの意味があるのはJITまわりとかかな?
0977デフォルトの名無しさん (ワッチョイ b302-PKKy)垢版2019/03/15(金) 21:48:50.55ID:D5NVJqkY0
コンパイラはパイプラインでデータハザードが起きない様に計算して命令の組み替えしたりする。
人間がそこまでできるかな?
オレは20年ぐらい前にmemcpyを高速化するためにアセンブラで組んだ。
今思うとCで組んでコンパイラに最適化させるべきだったかもね。
若気の至りだ。
0979デフォルトの名無しさん (ワッチョイ bf32-h1+v)垢版2019/03/16(土) 00:15:39.88ID:sQCNGdE30
ERMSBなんかを考えるとコンパイラも小手先なんかね
実行ハードでスケールするか、安定的な最適化か
汎用性を考えれば普通は後者になるだろうけど

というかC#ならCILレベルに留めるべきではねか
0982デフォルトの名無しさん (ワッチョイ ff61-ynPM)垢版2019/03/16(土) 15:56:32.11ID:zOgp3uDK0
>>980
wasmになる前のLLVMの段階で既に最適化が出来る。
あと、詳しくは分からないが、wasmになった後の最適化も、
Emscriptein の opt.exe で一応はできるらしい。
但し、asm.jsとの「グルー」が複雑に絡んでいるので、
何をやっているかを理解するのはかなり難しく、
wasmで最適化しているのか、asm.jsで最適化しているのかは
忘れてしまった。
0984デフォルトの名無しさん (ワッチョイ cf7b-Qay2)垢版2019/03/16(土) 20:27:45.17ID:0AnVFDDg0
スレ終わりなんだから内容気にせず埋めてしまえwここ即死判定もないし
GetFilesやGetDirectoriesのようなメソッドでエクスプローラーと同じ順に格納してくれるメソッドが欲しい
ソートし直すのたまに忘れてしまう
0992デフォルトの名無しさん (アウアウカー Sa47-GKay)垢版2019/03/20(水) 07:42:02.03ID:74ozQqG6a
Visual Studioって2015と2017両方いれて、2015だけ綺麗にアンスコできる?
0995デフォルトの名無しさん (アウアウカー Sa47-GKay)垢版2019/03/20(水) 12:21:41.32ID:NDw+q9p/a
>>993
ありがとう
そ、それは置いといて(笑)
どちらか片方だけアンスコしたときにもう片方に必要なもんを削除されたりはしない?
0996デフォルトの名無しさん (アウアウエー Sadf-FtxA)垢版2019/03/20(水) 12:41:43.72ID:JR1ztFlDa
VSに限らず明らかなNGは後から古いバージョンをインストールする行為だけのはず
アンインストールに関しては「意図としては」大丈夫なように作ってあるはず。

やってみたら?
最悪新しい方の修復インストールかOSの復元機能で何とかなるでしょ
1000デフォルトの名無しさん (ワッチョイ cf7b-Qay2)垢版2019/03/20(水) 18:54:52.24ID:jJ3kq/hZ0
2015の後に2017入れて2015アンインストールしたけど問題なかった
そのあとふと2015入れてみたら俺環だろうけど2015でビルド出来なくなった。2017の方は問題なし
そして問題のあった2015を再びアンインストールしたけど2017でずっと問題なし
>>995
2017だけ使う分には問題ないはず
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 697日 10時間 2分 52秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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