20/05/27 21:03:44.86 Pggemlyq0.net
978 名前:デフォルトの名無しさん (ワッチョイ 1aad-cFKA)[sage] 投稿日:2020/05/26(火) 23:34:30.32 ID:xP2EobkM0 [2/2]
URLリンク(www.sejuku.net)
979 名前:デフォルトの名無しさん (ワッチョイ da89-crVl)[sage] 投稿日:2020/05/26(火) 23:55:57.69 ID:pUNOqgdh0 [2/2]
リンク先の例でいうと、ClassName(やその他の項目もあればそれ)も表示させたい場合はどのようにすればいいですか?
980 名前:デフォルトの名無しさん (ワッチョイ 1389-moxv)[sage] 投稿日:2020/05/27(水) 00:07:17.22 ID:Pggemlyq0
>>979 自己レスですが、以下の記述でいけました
var query = result
.GroupBy(x => new { x.Name, x.ClassName })
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });
foreach (var group in query)
{Console.WriteLine($"{group.Name}の合計点数:{group.Points}点;ClassName{group.ClassName}");}
981 名前:デフォルトの名無しさん (スップ Sdf3-Tvg7)[sage] 投稿日:2020/05/27(水) 00:15:29.78 ID:DUgyxf22d
>>980
キーが1つならGroupbyでわざわざ匿名クラス使う必要ないんじゃね?
989 名前:デフォルトの名無しさん (ワッチョイ 9961-moxv)[sage] 投稿日:2020/05/27(水) 09:37:11.33 ID:sy4nr1lC0 [2/2]
>>981
ClassName引き出すのはどうするんだろ?
990 名前:デフォルトの名無しさん (アウアウウー Sac5-5vhd)[sage] 投稿日:2020/05/27(水) 09:58:43.31 ID:liCJZGAla
必要ない
x => x.Name でいい
--------------
.GroupBy(x => x.Name)
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });
にすると、次のようなエラーがでますが、どうしたらよろしいでしょうか。
CS1061 'string' に 'ClassName' の定義が含まれておらず、型 'string' の最初の引数を受け付けるアクセス可能な拡張メソッド 'ClassName' が見つかりませんでした。
3:デフォルトの名無しさん
20/05/27 21:12:48.85 wHIUQvvs0.net
>>1
スレ立てありがとう
4:デフォルトの名無しさん (ワッチョイ 9961-moxv)
20/05/27 21:21:00 k3bnO/0Z0.net
>>2
正規化されてないからめんどくさいな。
二重ループみたいですげーダサいけど
var query = result
.GroupBy(x => x.Name)
.Select(x => new Test() {
Name = x.Key,
Points = x.Sum(y => y.Points),
ClassName = result.Find(z => z.Name == x.Key).ClassName });
5:デフォルトの名無しさん (ワッチョイ 936a-moxv)
20/05/27 21:28:41 r6ZOyYGH0.net
くこか
6:デフォルトの名無しさん
20/05/28 00:34:34.48 MEC8WK3T0.net
Ruby では、すべてのクラスの祖先の、Object クラスに、
そのインスタンスのクラス名を返す、class というインスタンスメソッドがあるので、
すべてのクラスで使える
C# には、そういうメソッドが無いの?
p "ruby".class #=> String
p 100.class #=> Integer
7:デフォルトの名無しさん
20/05/28 00:53:29.66 ImnqiwTFa.net
宝石箱や~まで読んだ
8:デフォルトの名無しさん (ワッチョイ 5bde-JaJ9)
20/05/28 01:26:59 EQqK90dj0.net
>>6
c# クラス名 取得
でググれ?
9:デフォルトの名無しさん (ワッチョイ 9961-moxv)
20/05/28 04:48:21 zXvALu7d0.net
>>4
ClassName = x.First().ClassName
でおk
10:デフォルトの名無しさん
20/05/28 14:15:46.01 fRXC37pG0.net
タプルやジェネリッククラスに対して、型を代入済みの型を作ることってできないんですか?
(string, string)型とか、List<string>型とか、わざわざクラスを作るまでもなさそうなデータ型って簡単に定義できないのでしょうか
11:デフォルトの名無しさん
20/05/28 14:22:31.86 aCVt7Y570.net
>>10
usingエイリアスで解決できる内容?
12:デフォルトの名無しさん
20/05/28 14:30:21.34 fRXC37pG0.net
>>11
ありがとう!こんなの全然知らなかったわ
13:デフォルトの名無しさん
20/05/28 15:52:57.83 aCVt7Y570.net
>>12
紹介しといてなんだけど個人的にはあんま使わない
そのファイル内だけでしか有効にできないし型なんてIDEの補間でさっと書けるんで
14:デフォルトの名無しさん (ワッチョイ 936a-nShV)
20/05/28 15:59:16 iH+95mUV0.net
1年後に自分が書いたコード見たら「このコードを書いたヤツを出せ!」と海原雄山になるのがオチよなw
15:デフォルトの名無しさん (ワッチョイ 012d-GttG)
20/05/28 17:08:54 fRXC37pG0.net
>>13
ファイル内限定だったのか・・・・ちょっと1ファイルで試してみて使えるものだから、プロジェクト内どこでも使えるんだと錯覚してたぜ・・・・
16:デフォルトの名無しさん (ワッチョイ 2b7b-htvG)
20/05/28 17:14:07 jo8mM5WX0.net
>>15
最初からusingディレクティブはみんなそうなってるので
17:デフォルトの名無しさん (ワッチョイ dbc7-05E3)
20/05/29 19:22:05 Cxyf4DSR0.net
メソッドは変数に入れらないのはなぜですか
18:デフォルトの名無しさん (ワッチョイ d919-kLWK)
20/05/29 19:52:18 GsPIItnZ0.net
ActionやFunc使えば入れられるけどそういう話ではない?
19:デフォルトの名無しさん (アウアウエー Sa23-1zQY)
20/05/29 20:14:15 2er99IBxa.net
ActionとかFuncのscopeの外側で定義されてる変数を
中で同じ名前で定義するとローカルのつもりなのに
衝突してるエラーでるけどこのエラーを出さないオプションって何?
20:デフォルトの名無しさん (ワッチョイ 2b2c-NZk0)
20/05/29 20:25:12 EvTz8ouf0.net
言語バージョンを8.0にする
21:デフォルトの名無しさん (ワッチョイ 1301-2Amd)
20/05/29 21:54:10 lyhnjVvq0.net
>>17
C#ではメソッドそのものは型として扱われてないから
直接変数に代入したり引数として渡したりすることはできない
変数に入れたり受け渡しするためにはDelegateという型に入れてやる必要がある
var foo = obj.method;は不可だけど
Action foo = obj.method;なら可 (ActionはDelegateの一つ)
22:デフォルトの名無しさん
20/05/30 05:10:09.93 fH25FKrr0.net
ありがとうございます
それ用の型があるんですね
23:デフォルトの名無しさん
20/05/30 08:07:41.63 AwUsX2qO0.net
>>21
これでvarが使えない(型推論できない?)のはなんでなんだろ?
24:デフォルトの名無しさん
20/05/30 08:44:06.31 k44/A+q+0.net
C#で関数ポインタが扱えない理由って関数のアドレスすらもGCによって変更される可能性があるからって事?
25:デフォルトの名無しさん (ササクッテロル Sp8d-Lmla)
20/05/30 09:43:25 TGTrW1W5p.net
>>24
ネイティブとのやりとりならGetFunctionPointerForDelegateとかでできるけど
GCが絡む注意点はデリゲートのインスタンスは保持する必要はあるが
インスタンスのピン留めは必要ない
26:デフォルトの名無しさん
20/05/30 11:28:00.51 tvhETOJ10.net
>>23
varの初期化に使えるのは型を持つものだけ
URLリンク(docs.microsoft.com)
27:デフォルトの名無しさん
20/05/30 11:48:13.28 r66lkKC80.net
型推論が効かないて言えばさあ
スタティックフィールドで型推定が効かないのって、あれはなんか理由があるの?
28:デフォルトの名無しさん
20/05/30 12:18:56.34 PlE0tHnDa.net
??
インスタンスフィールドなら型推論できるの?
29:デフォルトの名無しさん
20/05/30 13:25:43.10 xeMFRGky0.net
理由あるよ
で、次期バージョンでvarではなくnew側の型が省略できる形で導入される予定
30:デフォルトの名無しさん
20/05/30 13:30:44.20 y1f90wiP0.net
Hogehoge fuga = new(123);
みたいな感じになるの?
31:デフォルトの名無しさん
20/05/30 13:36:30.05 xslsMmtKa.net
>>26
匿名型の変数は定義して初期化できるのでそれはちょっと
何か事情があるんだろうね
同じシグネチャーのデリゲートは暗黙変換できる仕様にすると何か問題が起こるのかな
32:デフォルトの名無しさん
20/05/30 13:44:43.26 xeMFRGky0.net
>>30
そうそうそんな感じ
省略newは今までvar使えてたところでも使えるから
全部省略new派
var使えるところは今までどおりvar使う派
とかが生まれてきそうな感じしてる
varが使えない理由はこないだufcppの人が喋ってた
33:デフォルトの名無しさん
20/05/30 13:50:04.68 HVLXWEgN0.net
varで書けるのは構わないし楽だけど
本来の型に戻すエディタの機能が欲しい
書くときにvarで書いて保存時には元に戻したい
34:デフォルトの名無しさん (ワッチョイ 012d-MVlU)
20/05/30 14:40:59 r66lkKC80.net
マウスのポインタを乗っけてると推定された型を出してくれるけどさ
あれ正直、表示しっぱなしにして欲しい時もあるよな
35:デフォルトの名無しさん (ワッチョイ 1389-moxv)
20/05/30 14:56:03 g+ohKxA+0.net
>>9
遅くなりましたが、解決策をありがとうございました
36:デフォルトの名無しさん (スップ Sdf3-Tvg7)
20/05/30 15:03:32 YhdsJRIEd.net
>>33
自動で戻したいならアナライザー書けば?相互変換はもう既にVS上ならできるでしょ。
37:デフォルトの名無しさん
20/05/30 15:47:54.26 7Rz7/MZO0.net
>>36
じゃあ、var使わない
38:デフォルトの名無しさん (ワッチョイ 1301-2Amd)
20/05/30 15:52:45 tvhETOJ10.net
>>31
匿名型はその名前の通り型があるからね
匿名型は型が明示できなくても明確な用途があるけど
メソッドの場合はどこかで型を明示しないとほぼ使い道ない
デリゲート同士の暗黙変換ができれば別だけど
そっちはコンパイラの変更が大きいから労力に対してメリットが見合ってない
39:デフォルトの名無しさん (アウアウウー Sac5-LWf4)
20/05/30 16:26:32 xslsMmtKa.net
メソッド名が匿名のデリゲートの値を生成する式と考えることは可能だと思うけどな
知らんけど
匿名のデリゲートという概念を導入すると何か問題が起こるんだろうか
40:デフォルトの名無しさん (ワッチョイ 93ad-Tvg7)
20/05/30 16:28:30 a7kNy7zD0.net
>>37
それは別に君の勝手だけど、単純にnewする時にも冗長に型名並べてるコード見るとイラッとするw
41:デフォルトの名無しさん (アウアウエー Sa23-1zQY)
20/05/30 16:45:40 Gtou79yMa.net
Hoge[] h = new Hoge[]{a,b,c};
var h = new Hoge[]{a,b,c};
var h = new []{a,b,c};
Hage h = new Hage(){A=a,B=b,C=c};
var h = new Hage(){A=a,B=b,C=c};
var h = new Hage{A=a,B=b,C=c}; ←この()が要らないのはなぜですか?
42:デフォルトの名無しさん
20/05/30 17:18:17.94 MlE9UdsRr.net
>>41
ジャバがそうだから真似しただけ
ただの省略
てか省略なんていくらでもある
43:デフォルトの名無しさん
20/05/30 18:33:37.23 tvhETOJ10.net
>>39
匿名のデリゲートという概念を導入するとどういうメリットがあるの?
44:デフォルトの名無しさん (ワッチョイ 53ba-cwJf)
20/05/30 21:06:55 gop8thIz0.net
勉強始めて1か月たつけど、現場のプログラマって普段なにしてんだ
言われた通りコードが書ければ仕事になるの?
45:デフォルトの名無しさん (ワッチョイ d919-kLWK)
20/05/30 21:12:28 xeMFRGky0.net
職種による
実際にコード書いてる時間なんて2割くらいだったりもする
設計やテストのほうが圧倒的に時間取られたりもする
46:デフォルトの名無しさん (オッペケ Sr8d-13Zu)
20/05/30 21:57:43 Lwi25lSTr.net
>>44
プログラマーって、もう日本にはいない気がする。ここ5年ぐらい日本人のプログラマー見てない。
47:デフォルトの名無しさん
20/05/30 22:28:12.46 2kV8Kmrh0.net
ありえん!
48:デフォルトの名無しさん (ワッチョイ 2b2c-NZk0)
20/05/31 01:06:35 mCMjeA850.net
>>44-46
マ板でやれ
49:デフォルトの名無しさん (ワッチョイ 012d-MVlU)
20/05/31 11:51:52 tOMQXDTx0.net
VSCodeでコード内の適当な句を選んで「定義へ移動」をよく使ってるんだけどさ
これ、移動先から元の場所に戻るのって、「参照へ移動」の中から選ぶしかないの?
もっとパッと戻れる技があったら教えて!!!
50:デフォルトの名無しさん
20/05/31 12:49:55.34 dt7NPt+m0.net
>>49
Ctrl+-で戻らんか?
カーソル位置を戻すだけど。
51:デフォルトの名無しさん
20/05/31 12:49:57.59 QYY0efjJd.net
Alt + 左カーソル
52:デフォルトの名無しさん
20/05/31 12:52:47.60 dt7NPt+m0.net
ごめん、Ctrl+-はVSだな。
53:デフォルトの名無しさん (ワッチョイ 012d-MVlU)
20/05/31 14:08:38 tOMQXDTx0.net
ありがとう!
でも戻んなくねえか・・・・?
54:デフォルトの名無しさん (スップ Sdf3-Tvg7)
20/05/31 14:38:32 QYY0efjJd.net
キーバインディングいじってなければ戻るはず
55:デフォルトの名無しさん (ワッチョイ a1a7-JaJ9)
20/05/31 15:37:28 UetBBPJT0.net
真のプログラマは片道切符しか買わない
56:デフォルトの名無しさん
20/06/01 14:17:57.61 uM6TLhYNM.net
てさ
57:デフォルトの名無しさん
20/06/04 11:48:49.55 iVlDeKP50.net
セミナーとかお勉強しないと使えないなこの言語は
一時記憶に収まらない
フィーリングで書かせろや
コンパイルとおんねー
58:デフォルトの名無しさん
20/06/04 12:08:11.80 XEcYdvMd0.net
コンパイルすら通せないやつが動的言語使ったら悲惨だな
59:デフォルトの名無しさん
20/06/04 12:18:22.32 dmqdgjzk0.net
多分向いて無いと思う
60:デフォルトの名無しさん
20/06/04 13:18:00.29 sT7gKDo90.net
>>57
VS使ってみ。
フィーリングでほとんど書けるし、補完してくれるから。
61:デフォルトの名無しさん
20/06/04 14:02:16.75 yA9dfqdA0.net
>>57
むしろどんな言語ならフィーリングで書けるんだ?
62:デフォルトの名無しさん (オッペケ Sred-WN7s)
20/06/04 14:30:29 ph5uM4S6r.net
まず検索能力高めろ
63:デフォルトの名無しさん (ワッチョイ 4d2d-KQW1)
20/06/04 14:44:45 M66vYvep0.net
>>60
これ、すごいことだと思う。
良く出来てるわ。
64:デフォルトの名無しさん (ワッチョイ c149-w3Q1)
20/06/04 15:19:44 bvFA+Te40.net
静的解析せずにc#を始めるやつおるんやな
いばらの道ぞ
65:デフォルトの名無しさん
20/06/04 15:58:30.81 UandGHR0M.net
VSはなんかVSにコード書かされてる気分になってくる
66:デフォルトの名無しさん
20/06/04 16:16:26.21 sT7gKDo90.net
>>65
適当に書いてCtrl+.という堕落w
67:デフォルトの名無しさん
20/06/05 00:51:13.36 1j5/pURw0.net
usingも勝手に補完してくれるし
条件わかんないけど「この型NuGetから持ってこようか?」みたいなサジェストもしてくれる
あ、はい、お願いしますってつい言ってしまう
68:デフォルトの名無しさん
20/06/05 07:11:12.78 X40F5QUh0.net
>>67
NuGet適当に見繕ってくれるのはほんとに神だよなぁ。
69:デフォルトの名無しさん (ワッチョイ 4d01-Alfg)
20/06/05 08:21:55 HaKNuQ4Y0.net
他アプリに表示されてるリストボックスの中身の情報を抜き取る方法ありますか?
例えば株アプリの株価情報取得したり、ニュースtextを抜き出したりしたいのです
SPY++ってのを調べてるんですけど情報すくないし少し違ったり
むずかしいでしょか?
70:デフォルトの名無しさん (ワッチョイ 55ad-rP/H)
20/06/05 08:34:13 2XC8EF810.net
LB_ADDSTRING
LB_INSERTSTRING
71:デフォルトの名無しさん (ワッチョイ d67c-jjst)
20/06/05 09:52:15 7ABcsW+P0.net
UIAutomationに対応してるならSystem.Windows.Automation名前空間下の諸々のクラスでいける
72:デフォルトの名無しさん
20/06/05 16:07:54.93 MlQ/ufNA0.net
おれも最近SPY++とWin32API使って他アプリの操作にチャレンジしてみたけど
ツールバー内のボタンクリックができなくて途中で挫折した
時間が出来たらこれ>>71を調べてみたい
73:デフォルトの名無しさん (ワイーワ2 FFf2-hy1p)
20/06/05 16:29:00 WSRdRexsF.net
最後の手段はマウスイベント送れ
74:デフォルトの名無しさん (ワッチョイ 5da7-T0NP)
20/06/05 18:41:37 G2EzgRxv0.net
画面全部スクショとって座標指定でいいだろ
全部自前で書かれてたらボタンイベントすらねぇんだから
座標指定とクリック、マウスONOFF、キーイベントだけでやるのが正義だろ
とか偉そうなこと言って
造りの問題かクリックイベントすら動かなかったので試験用コンソールアプリ作ってもらいました(´・ω・`)
75:デフォルトの名無しさん
20/06/05 19:18:55.79 HaKNuQ4Y0.net
>>70
さんくす、ぐぐったらC++のメッセージ送るやつでてきた、むずい
>>71
UIAutomationに対応してるアプリって一般的なのかな、デフォでみんな
対応してたらいいのに、さんくす
>>73-74
さんくす、座標調べてクリックしたことにするのか
テレビ画面録画するみたいな感じか、でもまあ現実的っぽい
リストボックスの中身取得するのに、スクショとって文字画像認識して・・って
76:デフォルトの名無しさん
20/06/05 21:58:35.28 td6kQI8l0.net
質問だけど
Windowsアプリ作るにあたり
VisualBasicを使っちゃいけなくて(好まれなくて)C#を使うべきっていうのは
どういう理由からですっけ?
77:デフォルトの名無しさん
20/06/05 22:01:11.68 aJ0kwdQw0.net
マルチポスト
78:デフォルトの名無しさん
20/06/05 22:35:14.45 td6kQI8l0.net
それ以前にマルチスレ
79:デフォルトの名無しさん (ワッチョイ a919-OO8l)
20/06/05 22:42:21 aJ0kwdQw0.net
マルチポストしていい理由にならない
80:デフォルトの名無しさん (ワッチョイ 15f1-GwrY)
20/06/06 02:57:58 9mdgv8nE0.net
>>79
あなたが自粛警察するタイプ。
ずばりそうでしょう。
そんな人は人生がうまくいってないから人生にうらみがあるんじゃないかな。
悩みがあったら聞くよ。
81:デフォルトの名無しさん (ワッチョイ a919-OO8l)
20/06/06 04:15:34 dlqfOb2e0.net
こういう残念なやつがいるからワッチョイ有無でスレが必要になる
82:デフォルトの名無しさん (ワッチョイ ca01-XEEq)
20/06/06 07:18:39 EOD/vRIp0.net
>>73
>>74
マウスイベントかキーイベントって対象アプリにフォーカスないと動かないよ・・・ね?
それじゃ困るんだよなー
83:デフォルトの名無しさん
20/06/06 10:25:01.92 9mdgv8nE0.net
人生に不満な人、人の不幸が好きな人、
こういう人は警察という職業に向いている。
84:デフォルトの名無しさん
20/06/06 11:38:58.12 8mSQUCrQa.net
>>83
お前はそういう人間が警察をしている世界を望むのか?
85:デフォルトの名無しさん (ワッチョイ 15f1-GwrY)
20/06/06 12:35:44 9mdgv8nE0.net
人生が超楽しくてしあわせな人は
警察に向かないと思う。
人を笑わせ楽しませる仕事か、あるいは自分の趣味に関わりのある仕事に没頭するか。
86:デフォルトの名無しさん (ワッチョイ 862c-jjst)
20/06/06 14:50:08 5hL3hw2m0.net
>>75
Windowsのコモンコントロール
WinForm/WPF/UWPの標準コントロール
はほぼ対応してるはず
ブラウザはじめ独自描画系はアプリ次第 調べてないけどあんまり対応してなさそう
87:デフォルトの名無しさん (ワッチョイ 867b-uuwx)
20/06/06 15:21:40 1oYratVd0.net
ワッチョイ 15f1-GwrY
ワッチョイ a919-OO8l
アウアウウー Sa11-gmWH
テンプレ理解できない人はNG
>>82
元のレスがマウスイベントにどう関わるかわからないから別件としてレスするけど
>マウスイベント
たまに勘違いしている人がいるがフォームにフォーカスが無くても(フォームがアクティブでなくても)動く
>キーイベント
C#でグローバルキーフックを作った人がいる
URLリンク(hongliang.seesaa.net)
88:デフォルトの名無しさん (ワッチョイ 15f1-GwrY)
20/06/06 16:11:02 9mdgv8nE0.net
C#をはじめたのですが
この動画シリーズってどれくらい見る価値ありますか?
URLリンク(m.youtube.com)
89:デフォルトの名無しさん
20/06/06 21:00:20.86 ve9u+1kO0.net
グローバルフックでマウスイベントもキャプチャー
90:デフォルトの名無しさん
20/06/06 21:06:41.96 xeyYLdg20.net
>>88
一切見なくていい
そんなもんよりハーバード・シルトの独習C#か↓のサイト見るほうがはるかにいい
URLリンク(ufcpp.net)
91:デフォルトの名無しさん (ワッチョイ 4d01-Alfg)
20/06/07 23:13:19 wGMDE0oz0.net
>>86
さんくす、それならごく普通につくられたアプリならUI Automation使えそう
便利で面白そうなのに、あまりメジャーじゃなさそうなのはなぜなんだろ
92:デフォルトの名無しさん
20/06/09 06:21:44.92 UwuOEQTZ0.net
URLリンク(docs.microsoft.com)
ここを見てやってるんですが、最初の1ページ目のサンプルで失敗します。
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files\dotnet'.
調べても英語の人の書いたブログしか出てこないのですが、
どうすれば解決できますか
93:92
20/06/09 06:40:31.85 UwuOEQTZ0.net
VisualStudioをアップデートしたら動きました。。。orz
94:デフォルトの名無しさん
20/06/09 09:37:00.46 sE3YfRh/F.net
dotnet を get して最初にすることは dotnet の update
95:デフォルトの名無しさん
20/06/09 13:06:57.31 dFHXVz0lH.net
IT掲示板群 URLリンク(x0000.net)
学術の巨大掲示板群 - アルファ・ラボ URLリンク(x0000.net)<)
UIライブラリ (C#, 2D) を作ったよ
URLリンク(x0000.net)
連続と離散を統一した!
URLリンク(x0000.net)
4Dエンジン(画像有り)
URLリンク(x0000.net)
matrixのライブラリ
URLリンク(x0000.net)
ある強力なFor関数
URLリンク(x0000.net)
SQLライブラリ
URLリンク(x0000.net)
PS malloc / free を実装してみた (C#)
URLリンク(up.x0000.net)
96:デフォルトの名無しさん
20/06/11 11:07:24.07 /xGObRM50.net
ウルフエディターはC++で作られているようです
2dなのにc++にするメリットはあるんでしょうか
テクスチャの移動程度ならC#でできますよね
97:デフォルトの名無しさん
20/06/11 11:24:51.54 FQtHxjiy0.net
本人に聞けよ
98:デフォルトの名無しさん
20/06/11 12:11:06.04 BgpDRRce0.net
そもそもC#でできるならC++である必要がないという理由がわからん
99:デフォルトの名無しさん
20/06/11 12:40:59.96 /xGObRM50.net
3dならC+しか選択肢がないと思いますが、C#ならopenglは使わないと思います
100:デフォルトの名無しさん
20/06/11 12:55:24.94 BgpDRRce0.net
C++しか選択肢がない?
例えばUnityならC#でOpenGL使ってるけど?
101:デフォルトの名無しさん
20/06/11 12:59:05.56 BgpDRRce0.net
エンジンの話だというならたとえが悪かったかもしれんな
別にUnity上でウルフエディタと同じものも作れるから最終的には一緒だけど
102:デフォルトの名無しさん
20/06/11 13:00:57.60 JpYLw7MRF.net
WPF
103:デフォルトの名無しさん
20/06/11 13:11:12.03 /xGObRM50.net
>>101
へぇ UWPというやつですかね
104:デフォルトの名無しさん
20/06/11 14:06:50.15 BgpDRRce0.net
全然違う
105:デフォルトの名無しさん
20/06/11 17:27:54.49 yAt1qMQq0.net
>>96.>99
仕事のなら発注元の指定、趣味ならば好みなのでメリット/デメリットって気にする
ことないと思うよ
複数の言語に堪能でそれぞれの言語特性に合わせてアプリケーション毎に言語を
選定してプログラムを組んだり発注したりするより、一番使い慣れた言語でやるのが
普通じゃないかな
c#でdllimportsてWin32apiを使うなんてアンマネージなコードは邪道だとか
言われてもc#が良いんだって人は普通にいるので、簡単なGUIプログラムもC++が
手っ取り早いってことなんでしょう
106:デフォルトの名無しさん
20/06/11 20:35:54.13 vRuHoTo/0.net
みなさんデータベース管理システムは何使ってますか?
普段よく使うとか、使いやすいってRDBMSを教えてください
小規模で自分一人で開発でってのを想定で
107:デフォルトの名無しさん
20/06/11 20:49:36.46 yGmpvECN0.net
oracle
108:デフォルトの名無しさん (ワッチョイ ff6a-MAAn)
20/06/11 20:56:11 Ab3iv8TC0.net
小規模ならSQLiteでいいんじゃね
109:デフォルトの名無しさん
20/06/11 21:15:03.03 Zjp+nhQg0.net
Access
110:
20/06/11 21:21:44.50 bLG5zewl0.net
>>106
postgresql
111:デフォルトの名無しさん (ワッチョイ 3378-NjyN)
20/06/11 21:34:56 5OqhWY9w0.net
.NET 使うんなら SQLServer 一択じゃね?
112:デフォルトの名無しさん
20/06/11 21:42:34.54 qibdIRpR0.net
>>111
EF CoreチームにNpgsqlのメンテナーが入っていることもあって、PostgreSQL対応はかなり手厚い
113:デフォルトの名無しさん
20/06/11 22:17:10.79 tnq3MU310.net
Postgresは大文字小文字問題なんとかしてくれ
114:デフォルトの名無しさん (ワッチョイ ffad-E8/F)
20/06/11 22:27:34 qibdIRpR0.net
>>113
?
115:デフォルトの名無しさん
20/06/11 22:49:15.03 tnq3MU310.net
>>114
URLリンク(stackoverflow.com)
こういうの
116:デフォルトの名無しさん
20/06/11 22:54:47.74 Yd9qBDmj0.net
>>106
普通Redis
117:デフォルトの名無しさん
20/06/11 22:58:40.14 vRuHoTo/0.net
みなさんさんくす
>>107
oracle使ってるの?有償で本格的なイメージ
>>108
SQLiteいいですよね、お手軽そうで
>>109
AccessってC#で使えるんですね、Access使い慣れてる人ならよさげ
>>110
Postgreも人気ですね、SQLiteよりもいいのかな
118: 111 SQLServerが一番に名前出てくると思ってました 112 PostgreはC#と親和性高いのかな 見事に割れてるような感じがするのですが、C#.netと相性がいい悪いより 使い慣れてるものを使ってる感じですか
119:デフォルトの名無しさん
20/06/11 23:01:51.55 vRuHoTo/0.net
>>116
さんくす、初めて聞きましたRedis,NoSQLサーバーですか
これから主力になっていくのかな
120:デフォルトの名無しさん
20/06/11 23:09:04.11 Yd9qBDmj0.net
目的が違うからRDBとは共存するんじゃね?
永続化が出来るのが他のKVSと違う所。
121:デフォルトの名無しさん
20/06/11 23:21:42.50 5eBlYw+xa.net
C#との親和性とか言われてもなあ
いまどき大抵のDBMSでEFも使えるから、極端な話DBMSを途中で乗り換えても
C#で書き換えるのはconfigファイルの接続文字列とNuGetするパッケージだけ
EF使わないならSQLの方言を気にする必要はあるけどそれは組み立てるStringが変わるだけだし
DBMSに応じてC#ソースコードの書き方が変わるようなことは一切ない
122:デフォルトの名無しさん
20/06/11 23:49:42.34 tnq3MU310.net
EFみないなORM使ってないとOracle->SQL Serverの書き換えとか地獄よ
123:デフォルトの名無しさん
20/06/12 02:18:27.53 opbb+AId0.net
>>115
それが問題になるケースってどんなん?ASP.NET Core Identityとかも別に普通に使えてるけど
124:デフォルトの名無しさん
20/06/12 02:21:54.36 opbb+AId0.net
>>120
親和性は今でも問題になるケースがあるよ
OracleはEF Coreが出てから対応するまでに3年かかったし、EF Core3.0はOracleが対応する前にサポート期間が終わっちゃった。3.1のbeta版が少し前にやっと出たとこで、RTMになるころにはもうEF Core5が出てるw
125:デフォルトの名無しさん
20/06/12 03:34:44.54 ZwJzd5pPd.net
>>120
>C#で書き換えるのはconfigファイルの接続文字列とNuGetするパッケージだけ
>DBMSに応じてC#ソースの書き方が変わるようなことは一切ない
これは嘘。DbContextOptionsBuilderの拡張メソッドはDBMSごとに異なるし、そのオプションも変わってくる。当然Migration用のコードは再度生成する必要がある。まあその程度で済むんだけどね。
126:デフォルトの名無しさん
20/06/12 03:36:16.16 ZwJzd5pPd.net
「NuGetする」って表現は初めて見たな。言いたいことはわかるけどw
127:デフォルトの名無しさん
20/06/12 10:19:25.67 LH1ywJSs0.net
>>119
これからNOSQLも勉強しないとダメなのかサンクス
>>120
さんくすねDBMSはどれ選んでもだいたい同じですか
>>123-124
なるほどね、細かなところ互換性問題あるけど、それほど困ることもないですか
まあDBMSコロコロ変更したりしないだろし、さんくす
欲をゆえば、これは定番でみんな使ってるし、迷ったらコレみたいのがあったらよかた
128:デフォルトの名無しさん (テテンテンテン MM7f-3sqf)
20/06/12 10:33:37 67KMUSUMM.net
オンプレかクラウドかにも依るだろう
オンプレならできればDBの運用保守はベンダーに丸投げしたいところだが、
そこまでするほどの規模ではないならSQL Serverが比較的楽だろう
クラウドだったら自分でインフラを管理する必要のない完全マネージドなサービスを選ぶべきだ
例えばAWSならPostgresベースのAurora、AzureならSQL Database(SQL Serverベース)になるだろうな
129:デフォルトの名無しさん
20/06/12 11:11:40.32 kFexpNJ30.net
>>106
Ruby on Rails の3大DB は、
PostgreSQL, MySQL/MariaDB, SQLite
ただし、SQLite は開発用のみ
130:デフォルトの名無しさん
20/06/12 20:30:56.85 LH1ywJSs0.net
>>127
なるほど、クラウドなら相手先でだいたい決まってるんですね
結局仕事でプログラマやってる人はSQL全部やってそうな、さんくす
>>128
さんくす、Webアプリと連携したりするならPostgreとかMySQLは必須っぽいですね
131:デフォルトの名無しさん
20/06/13 00:57:45.04 bzHb5W4o0.net
>>122
アノテーション必須なところ
132:デフォルトの名無しさん
20/06/13 01:09:18.28 8SrQpLbj0.net
>>130
アノテーション?Javaと勘違いしてない?
もしかして、[Column("some_column")]みたいなAttributeを明示的にプロパティに付与しなきゃってことを言いたいの?
133:デフォルトの名無しさん
20/06/13 01:10:23.05 8SrQpLbj0.net
最近はそもそもAttributeはあまり推奨されてないと思うんだけど…
134:デフォルトの名無しさん
20/06/13 01:13:19.59 bzHb5W4o0.net
間違えた、そう、アトリビュートね
推奨されてないならますます必須なのは困るだろ
135:デフォルトの名無しさん
20/06/13 01:33:01.52 8SrQpLbj0.net
Fluent APIが主流だっていう意味でAttributeは推奨されてないって言ったんだけど通じてない??
136:デフォルトの名無しさん
20/06/13 01:41:17.85 8SrQpLbj0.net
naming conventionはかなり自由度が高いんだし、PostgreSQLならこんなプラグインもあるでしょ?
URLリンク(github.com)
137:デフォルトの名無しさん
20/06/13 01:44:19.43 8SrQpLbj0.net
このプラグイン書いてるのもEF Coreのメンテナーだし、PostgreSQL対応は相当手厚いと思うんだけど…Oracleとは大違いw
138:デフォルトの名無しさん
20/06/13 02:34:08.73 bzHb5W4o0.net
手厚いなら標準でサポートしろ
139:デフォルトの名無しさん (ワッチョイ ffad-E8/F)
20/06/13 03:17:01 8SrQpLbj0.net
標準でサポートしてるAPI使ってるでしょ?
140:デフォルトの名無しさん (ワッチョイ ffad-E8/F)
20/06/13 03:17:49 8SrQpLbj0.net
会話にならない…
141:デフォルトの名無しさん (スッップ Sd1f-E8/F)
20/06/13 03:28:12 wwBJVROwd.net
>>130
なぜ必須だと思いこんでしまったのか…少しググれば↑のプラグインも出てくるというのに。
DBMSによって異なる仕様を全てコアのライブラリに取り込んでしまうのはアンチパターン。拡張可能なエンドポイントを用意して、適切な粒度で分けないと。
142:デフォルトの名無しさん
20/06/13 03:44:26.62 8SrQpLbj0.net
そもそもなぜAttribute必須(だと思いこんでいる)かって理由もまだ一言も聞いてないしね
Fluent APIすら知らないようだし…
143:デフォルトの名無しさん (ワッチョイ 6fc7-Z00E)
20/06/13 13:23:26 K/U+GWpl0.net
rpgツクールみたいなソフトはC#とC+どちらがいいんでしょうか
electronではだめなのですか?
144:デフォルトの名無しさん
20/06/13 13:48:37.68 KtzqJ+vF0.net
勝手にしろ
145:デフォルトの名無しさん
20/06/13 14:08:02.51 o48rgnPS0.net
>>142
好きなやつでいいよ
146:デフォルトの名無しさん (ワッチョイ f3da-lWkb)
20/06/13 14:47:15 YToltj6/0.net
普通マシンコード直打
147:デフォルトの名無しさん
20/06/13 23:27:18.32 V91HObFW0.net
ツクールは、Ruby じゃないの?
スレ立てるまでもない
148:質問はここで 153匹目 https://mevius.5ch.net/test/read.cgi/tech/1586142285/845 870 の投稿も見て
149:デフォルトの名無しさん (ワッチョイ 3378-NjyN)
20/06/13 23:51:50 KtzqJ+vF0.net
RGSSがRubyで書けるだけで本体はRuby製じゃないだろ
最近のやつは知らないけれどRPGツクール2000はDelphi製だよ
つかこいついつものRubyガイジか
150:デフォルトの名無しさん (ワッチョイ 1363-UKCU)
20/06/14 00:29:11 d5or7MKc0.net
ちなみに最新のRPGツクールMVはHTML5&CSS&Javascript
151:デフォルトの名無しさん
20/06/14 01:26:19.14 v+4IVp6H0.net
>>147
そう、いつものRubyバカだよ。
どこかで聞き齧った上辺だけの知識を、古いまま更新もせずあちこちで思うがままに垂れ流す、迷惑きわまりない存在。
152:デフォルトの名無しさん
20/06/14 02:49:46.49 elQ0/Qc7a.net
くだらない質問で申し訳ない
static IEnumerable<char> AToZ()
{
for (char c = 'A'; c <= 'Z'; c++) yield return c;
}
static IEnumerable<string> AAAToZZZ(int n)
{
if (n < 0) throw new IndexOutOfRangeException();
if (n == 0) yield break;
if (n == 1) foreach (var c in AToZ()) yield return c.ToString();
foreach (var c in AToZ())
foreach (var item in AAAToZZZ(n - 1))
yield return c + item;
}
こういうシーケンスもっと短く綺麗に書ける?
nが負の時の処理はこだわらない。(例外投げずに空のシーケンスを返すのでも可)
どうでもいいけど、yield returnとreturnは混在できなことを今日初めて知ったw
153:デフォルトの名無しさん
20/06/14 03:07:11.97 elQ0/Qc7a.net
こうじゃなきゃダメかw
static IEnumerable<string> AAAToZZZ(int n)
{
if (n < 0) throw new IndexOutOfRangeException();
switch (n)
{
case 0:
yield break;
case 1:
foreach (var c in AToZ()) yield return c.ToString();
break;
default:
foreach (var c in AToZ())
foreach (var item in AAAToZZZ(n - 1))
yield return c + item;
break;
}
}
154:デフォルトの名無しさん (アウアウカー Sac7-P9YK)
20/06/14 03:59:43 Lj4n2emQa.net
よくわからないけどRPGのデータベースから
単なる所持品表示と
装備品表示でBoolean型を使うなら状況が変わるのかな?
155:デフォルトの名無しさん
20/06/14 05:02:05.56 HJp96S060.net
>>151
再起なんかせずにEnumetable.Repeatで必要文字数作って返すのじゃ駄目なん?
156:デフォルトの名無しさん
20/06/14 13:47:32.96 EPf5hgHv0.net
再起嫌いだわ
難しいことせず素直に書くならこうかな
static IEnumerable<string> AAAToZZZ(int n)
{
if (n < 0) throw new IndexOutOfRangeException();
IEnumerable<string> result = AToZ();
for(i = 1; i < n; i++)
result = Hoge(result, AToZ());
return result;
}
static IEnumerable<string> Hoge(IEnumerable<string> items1, IEnumerable<string> items2)
{
// items1+items2の組み合わせ
foreach (var item1 in items1)
foreach (var item2 in items2))
yield return item1 + item2;
}
157:デフォルトの名無しさん
20/06/14 17:59:06.56 HWVPFncU0.net
少し汎用化してみた
URLリンク(dotnetfiddle.net)
158:デフォルトの名無しさん (ワッチョイ 7361-TrMf)
20/06/14 22:16:24 ZbFg49iQ0.net
>>154
n=0の動きがかわっちゃってない?
159:150
20/06/14 23:20:59.70 FMtFwmQda.net
みなさんありがと
やっぱり劇的に単純化できるような方法はないか
>>154
俺は再帰使った方が簡単に感じるなあ
この辺は人それぞれなんだろうか
>>155
面白いけど可読的かなあ
ビール飲みながら読んでたら頭が痛くなってきたw
ところでこういう処理をCartesianと呼ぶのは一般的なの
160:? 何でデカルト? n次元の直交座標をスキャンしていくイメージ...?
161:デフォルトの名無しさん
20/06/14 23:38:18.81 gmXZN8yKa.net
2次元配列の逐次処理は3Dの棒グラフだから
どう見てもデカルト
162:デフォルトの名無しさん (ワッチョイ 4359-lMPZ)
20/06/15 12:58:53 G4ousd2n0.net
プログラムに日本語が使われた物って、日本語がインストールされていない環境でも動きますか?
変数名などに日本語を使って海外へのローカライズ時にはUIのみをその国の言語に差し替える感じで。
163:デフォルトの名無しさん
20/06/15 18:13:18.65 yRL+7o6a0.net
>>159
作成したexeのUI(たとえばButtonコントロールのTextに「押しボタン」とか)が
日本語表示でも、文字化けが問題ないならば動くことは動く
プログラム自体の変数名(たとえば「int 合計」みたいな)であればユニコードで
保存されているはずなのでコンパイルは通るらしいけど、日本語の表示が
できない環境では読めないソースになる
プログラム実行時の画面表示でローカライズってどうやるのっていう話ならば
言語ごとのリソースを作って対応するのが普通なので「c# 国際化対応」で
ググると色々サンプルが出てるよ
164:デフォルトの名無しさん (ワッチョイ 4359-lMPZ)
20/06/15 19:19:37 G4ousd2n0.net
>>160
複数パターンの回答感謝です。
ありがとうございます。
回答いただいた2例目が自分のパターンになると思います。
ソースコードを読まれる事を想定していない場合はコンパイルが出来れば、実行ファイルは問題なく動くという事でしょうか?
今ゲームを作っていて、海外にも配布したいです。
enumで管理している状態異常の名前などが英語だと長くてわかりにくいので日本語にしたいです。
例えばapple.pngをりんご.pngにしたりするのも問題ないでしょうか?
165:デフォルトの名無しさん
20/06/15 19:37:58.08 leNERqqha.net
日本語ファイル名は文字化けしてたら
ファイル読み込みでエラーになりそう
ローマ字にしといたら良いんでないの
166:デフォルトの名無しさん
20/06/15 19:41:29.43 MF7iklGs0.net
そっちはUnicodeだから恐らく大丈夫
167:デフォルトの名無しさん
20/06/17 13:51:06.28 e85N0kXp0.net
エクスプローラーのようなファイラアプリを作っているのですが、DirectoryInfo等を利用してその都度ストレージからフォルダ構造やファイルなどを拾い上げると時間がかかってしまうためこちらでキャッシュしたいと考えています
フォルダツリーやフォルダ下にあるファイルなどの情報をキャッシュするのに適したものってなんでしょうか?
jsonでそのまま多次元配列としてシリアライズするのが最も簡単そうには思えますが、合計ファイル数が1万件近くあるとファイルサイズやパフォーマンス的にsqlite3などを利用したほうが良いのかなと色々迷ってます
168:デフォルトの名無しさん
20/06/17 13:57:54.70 0xoIejs00.net
根本的にアプローチが間違っている。
ローカルドライブならMFTを直接読んで処理すべき。
169:デフォルトの名無しさん
20/06/17 15:25:29.42 GES6ctGCF.net
エクスプローラーも1万件あるとあきらかに遅くなる
170:デフォルトの名無しさん (ワッチョイ b602-vBZN)
20/06/17 15:38:18 yVuIICiL0.net
低レイヤのこと詳しくないけどそもそもGetDirectoriesとかGetFilesもMFTから読み込んでるんじゃないの?
FindFirstFileのラッパーなはずだけどFindFirstFileの内部ではそうしてるもんだと思ってたが
171:デフォルトの名無しさん
20/06/17 15:46:17.14 0xoIejs00.net
MFTはNTFSにしかないから、
SDカード(普通FAT系)とかネットワーク
ドライブなら
FindXXの高レベルAPIを使用する事に
なるよ。
書籍ならWindows Internals (chap12
なのでpart2)に説明がある
Qiitaで見かけた記憶があるのでこちらを
探すってのもありかと
172:デフォルトの名無しさん (アウアウウー Sa47-7nK8)
20/06/17 15:56:57 wCFe9G62a.net
>>164
そもそも本当に体感できるほど時間かかるかなあw
連番をプリフィクスしたファイル名でデータを保存する、なんて処理を結構書いてて、
その場合は当然ディクトリ内のファイル名を走査して開いてる番号を探すわけだけど、
少なくとも数千件程度のファイル数で体感できるような処理時間を感じたことはないが...
173:デフォルトの名無しさん
20/06/17 19:29:16.87 TZB3F6Mj0.net
ファイルやフォルダを画面に描写する処理に時間がかかってたりするパターンでは?
174:デフォルトの名無しさん (ワッチョイ 5fda-EdQi)
20/06/18 06:00:16 /GutDtHv0.net
エスパー視点だと、切断されたネットワークドライブ探して時間がかかってる。
175:デフォルトの名無しさん (ワッチョイ 0b01-oh81)
20/06/18 07:14:38 tX12dTLd0.net
アドバイスでもなんでもないが俺も昔自分用のファイルDB作ってたんだが
起動時に対象フォルダ下のファイルをGetFilesやGetDirectoriesで収集 → DBからタグ等の細かい情報取ってきてくっ付けるってやるとき、sqliteから一つ一つwhere fullpathというように文字列で検索すると約5000件/3分くらいかかったんだよな
そこでwhereを入れず全部取得 → while (reader.Read()) sqFiles.Add();と一旦こちらのリストに全部放り込んでから
愚直にforでリストからフルパスと一致するものを探すって方式に変えたら5000件/500msというアホみたいに高速化された思い出がある
176:デフォルトの名無しさん
20/06/18 07:24:19.57 tX12dTLd0.net
ちなみにこれじゃsqlite使う意味ねえじゃんwって思われそうだが、その初回時の検索でlong型のPrimaryKeyであるUniqueIdも取得するんで2回目以降は一つ一つ検索する場合でも普通に早い
タグ以外にもblob型の多少サイズ大きいバイナリとか色々DBには保持させてるんでな
177:デフォルトの名無しさん (ワイーワ2 FF12-HKig)
20/06/18 11:07:27 OoPd9bgDF.net
forで愚直に検索中にディレクトリの状態やDBの状態が変化していなければ良いねω
178:デフォルトの名無しさん
20/06/18 11:27:39.83 8/3vTp6fa.net
SQLiteはトランザクション無いんだっけ?
>>172みたいな自分用のDBで500ms以内に変化するようなクエリって何だろう・・・
179:デフォルトの名無しさん
20/06/18 11:54:40.21 ZcH1+5T10.net
トランザクションいるよな
とってるときも書き込むときも
180:デフォルトの名無しさん
20/06/18 11:58:11.67 JTgDDftK0.net
SQLiteにだってトランザクションあるでしょ
181:デフォルトの名無しさん
20/06/18 11:59:20.73 ZcH1+5T10.net
>>177
あるある
182:デフォルトの名無しさん
20/06/18 12:01:47.66 LpN/zpxZ0.net
SQLiteに限らずmatchならまだしも文字列の=って糞遅いでしょ、トランザクションが有効なのって書き込み時だしね
SQLiteのクエリはutf16版を使ったところで結局はutf8への変換が生じるからC#から使うとオーバーヘッドは避けられない
その上でPRAGMA encoding='UTF-16'とかしてたらまたまたキーワード部分を変換しないといけなくなったりともうめちゃくちゃ
だから一回のクエリで全件持ってきてC#上で検索すればそれくらい早くなるというのはまぁ自然
183:デフォルトの名無しさん
20/06/18 12:03:22.57 8/3vTp6fa.net
ごめんバージョン 2.0から導入されてたね
184:デフォルトの名無しさん
20/06/18 12:35:51.08 u7MaeuvH0.net
ファイルのデータベース管理って言うとWinFSを思い起こすな
185:デフォルトの名無しさん
20/06/18 13:20:40.79 h9R/TQ390.net
トランザクショなるNTFS=TxFとか沼ですな。
※Vistaで導入7から8に変わった時に
デグレした機能w
TransactionalFileMgr
.Net Transactional File Manager がこのスレ
的に正解かな?
186:デフォルトの名無しさん (オッペケ Sr3b-CFTz)
20/06/18 14:45:37 N068eYZUr.net
>>179
検索そのものが遅いんじゃなくて
5000回のクエリ発行と結果受け取りが遅いと予想したが
187:デフォルトの名無しさん
20/06/21 13:35:38.83 jQi52PAy0.net
C#のGUIからパイソンを実行してデータ分析させたいんだけど、
すごく簡単に実現できる方法ってありませんか?
1 C#からテキストファイルでデータ出力
2 C#からPython起動し、テキストファイルのパスを渡す
3 Pythonでデータ分析しグラフ出力
みたいな感じです。
PythonからC#に受け渡すデータはありません。
188:デフォルトの名無しさん
20/06/21 13:42:47.45 bTXo9Nr1M.net
アイロンパイソンでええんちゃう
189:デフォルトの名無しさん
20/06/21 15:46:22.00 7MKh9Chd0.net
コマンドプロンプトのパイソン実行でええんちゃう?
190:デフォルトの名無しさん
20/06/22 22:13:03.58 zuodZOih0.net
batファイルで、解決できそう
191:デフォルトの名無しさん (ワッチョイ 0f01-5fXH)
20/06/24 15:59:14 rxIn+gin0.net
SQL Server Express LocalDBのSQL文の質問なんですが
CREATE DATABASE myDB;
これはちゃんと成功するんですが
CREATE DATABASE IF NOT EXISTS myDB;
こう書くと失敗します
System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'IF'.
Incorrect syntax near 'myDB'.
このSQL文は使えないんでしょか?かわりの方法はあるでしょか?おねがいします
192:デフォルトの名無しさん (ワッチョイ 3f01-0Hhk)
20/06/24 16:14:51 ZBvJ9IFx0.net
>>188
DROP DATABASE IF EXISTS myDB;
CREATE DATABASE myDB;
193:デフォルトの名無しさん (ワイーワ2 FFbf-qwRG)
20/06/24 16:27:10 6+kkBVmVF.net
DROP すると等価ではないな
194:デフォルトの名無しさん
20/06/24 16:40:01.38 rxIn+gin0.net
>>189
さんくすです、DROPすると以前のデータが消えてしまいそうで
ドロップしたらうまく動くんですが
195:デフォルトの名無しさん
20/06/24 17:06:11.29 ZBvJ9IFx0.net
>>190
おお、そうだね
文法しか気にしてなかった
>>191
CREATE DATABASE文にはIF NOT EXISTSとかのオプションは無いから>>188はエラーになる
DROPはIF EXISTSのオプションが用意されてる
188と等価にしたいならT-SQLのIF-ELSE使って存在チェックして
DBが無い場合にだけ作成すればいい
(存在チェックはDB_IDかsys.databasesを読むか)
IF EXISTS ( … )
…
ELSE
CREATE DATABASE …
196:デフォルトの名無しさん
20/06/24 17:13:36.03 LZQGw3mN0.net
で、それらc#なの?
SQLの話ならスレ違いだ
197:デフォルトの名無しさん (ワッチョイ 8f01-2vNH)
20/06/24 19:42:09 H9m4GMw80.net
DDL文
198:デフォルトの名無しさん
20/06/24 20:43:40.85 rxIn+gin0.net
>>192
さんくすです
> IF NOT EXISTSとかのオプションは無いから
なんと、あったら便利なのにね
IF-ELSEでがんばってみます
>>193
SQL文なので若干すれ違いかなっと
似たようなことがLINQtoSQLでできればとおもったのですが
199:デフォルトの名無しさん
20/06/24 22:59:21.23 G18p0mGY0.net
Entity Frameworkでデータベースと連携したい場合
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
}
モデルは↑みたいな感じになるけど
実際には↓みたいな感じに色んなデータとふるまいを持ちたいとする
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
. public List<Picrture> Picture { get;set;}
.
. (以下振る舞い等)
}
この場合って下のデータモデルからから上のDTOに変換してデータベースに入れる(取り出す時は逆)って考え方でいいのかな?
多くのサイトがEntity Frameworkでのデータベースへの突っ込み方しか書いてなくて
実際に運用する場合のデータの持ち方の考え方がよう分からん
この辺りまで詳しい本とかサイトとかあったら教えてください
200:デフォルトの名無しさん
20/06/24 23:58:21.16 KiDLqidP0.net
いいんじゃない?DTOは名前の通りデータをDAOと受け渡すためだけに使って、振る舞い持たせるのは違う気がする。
201:デフォルトの名無しさん
20/06/25 00:07:24.74 pPMcnwWPa.net
単純なアプリだとDomainModelも単純だからEntity、DomainModel、ViewModelを同じインスタンスで済ませられる場合が多い
真面目にやるならそれぞれ別のクラスにしてマッピングするんだけどめんどくさいんだよな
202:デフォルトの名無しさん
20/06/25 00:24:04.27 GAspYPHa0.net
めんどくさいけど、アプリ自体を拡張する可能性があると分けといたほうが後々良いことがあったりなかったり
203:デフォルトの名無しさん (ワッチョイ 0fa7-eW5c)
20/06/25 01:37:48 Q34w5rfS0.net
>>199
やめた方が無難
拡張したい階層が2-3ズレるのはよくあること
たったそれだけなのに拡張のために付けた処理が邪魔になって
本当にやりたい改修が大きな工数になってしまうことはよくあること
204:デフォルトの名無しさん
20/06/25 08:19:30.72 +9vWEdNfr.net
>>200
「ズレる」ようなのは設計と言えないし、そんな設計したことないけどなあ
205:デフォルトの名無しさん
20/06/25 08:48:00.18 Q34w5rfS0.net
>>201
あるやろ?
色んなリストの表示方法(文字着色、並び替え、フォントサイズ個別指定、背景色着色)を実装できるようにしたけど
客の欲しいのはページングのある印刷機能だけだったみたいな
改修にときノリで入れたフォントサイズの変更や文字や背景色がページング印刷時にうまく出ない
→ああ、無いほうが簡単だったな
っとか
206:196
20/06/25 20:33:53.95 42cionTC0.net
ありがとうございます
勉強になりました
207:デフォルトの名無しさん (ワッチョイ 0f87-plLw)
20/06/26 07:51:51 a7mre53d0.net
c#でアクティブウィンドウがosよりも先にキーボード入力を受けとる方法はありますか?
やりたいことはリモートデスクトップを全画面で繋げている場合、Alt+Tabキーの入力は呼び出し元のosではなく、リモートデスクトップ側が取得しているように見えます。
この挙動を自作のguiでもできればと考えています。
「アクティブウィンドウがosよりも先にキーボード入力を受けとる」の認識が間違っているかも知れませんが、リモートデスクトップのような挙動を実現する方法を教えてください。
208:デフォルトの名無しさん (ワッチョイ 8f01-2vNH)
20/06/26 08:39:13 EHOqkK/F0.net
グローバルフックしか無いと思うな
SetWindowsHookEx を調べてみなされ
209:デフォルトの名無しさん
20/06/26 09:07:56.65 wYfFflLL0.net
>>204
余計なお世話かもしれないけど、アプリの枠の外にあるOS側での共通の操作を、1アプリの都合で勝手にフックされて違う動作になるのは使う方からするとストレスになるから気を付けた方がいいかも。
リモートデスクトップはある意味OS内OSだし、そういう例外的なケースならばアリだと思うけど。
210:デフォルトの名無しさん
20/06/26 09:43:44.08 an36r83ud.net
>205
ありがとうございます。調べてみます。
>206
今回は自分で使いたいものなんで。
将来的に業務で使う機会があれば考慮するようにします。ありがとうございます。
211:デフォルトの名無しさん
20/06/26 13:15:51.31 PjbtVFt+F.net
キーロガー禁止
212:デフォルトの名無しさん
20/06/26 20:47:00.03 EHOqkK/F0.net
Tik Tokの完全再現をw
213:デフォルトの名無しさん
20/07/01 15:49:13.62 BmoMMcjv0.net
20年ぐらい前からプログラミングやりたいと思い続けてきた文系おじさんだけど
数年前から少しずつ勉強し始めて、
やっとのことでちょっとしたものをC#で作れるようになってきた
おもしろいわぁ
214:デフォルトの名無しさん
20/07/02 08:48:04.62 +yIU1z+T0.net
URLリンク(freesoft-100.com)
色温度をいじれる言語ってなんでしょうか?
pythonを主に使用しているのですが、C#系でないと色温度はいじれませんか?
色温度にもモニタ側、gpu側があると思います。
215:デフォルトの名無しさん
20/07/02 09:03:57.94 unw3xiWi0.net
>>211
詳しくないから間違ってるかもしれないが、そのアプリ単体ではなく他のアプリも含めて画面の色温度を変えるという機能なら、OSがそういうAPIを提供しているということかな。それならそのAPIを利用できる言語ならばC#に限らずなんでもいいと思うけど。
216:デフォルトの名無しさん
20/07/02 09:04:49.65 iSJIUTiv0.net
>>211
スレ違いだからpythonのスレで聞くかそれのソース自分で理解してほしんだが
C#でできるのはWINAPIをラップした.NETの機能を使うか直にDLLのAPIを呼び出すかくらいなんだから
pythonでAPI使えるのなら同じことができるはず
217:デフォルトの名無しさん
20/07/02 09:51:08.11 +yIU1z+T0.net
ありがとう
c#にはそういうクラスがあるみたい
winのソフト作るにはc#が一番都合がいいよね
218:デフォルトの名無しさん
20/07/02 11:09:32.81 esHBKAii0.net
質問です
DateTime.Now.ToString(@"yyyy\MM\dd") => 2020\07\02 を期待したいのですが 2020M7d2 になります
今は \\ を別な文字に置換し変換後また置換ってやってますがよい方法あれば教えてください
219:デフォルトの名無しさん
20/07/02 11:15:16.64 j3S5Aqle0.net
>>215
@"yyyy\\MM\\dd"
220:デフォルトの名無しさん (ワッチョイ 8749-OmMV)
20/07/02 11:26:03 SFSsBsHn0.net
そこに\マーク入れる文化ってどういうものなの
221:デフォルトの名無しさん (ワッチョイ 638c-VQSO)
20/07/02 11:31:04 xozoa+r10.net
日付にバックスラッシュ…?
222:215
20/07/02 11:41:12.70 esHBKAii0.net
>>216
なるほど、できました
しかし元の文字列は \ 一文字で決まっているのでどのみち何か手を加えないとならないですね
>>217-218
フォルダ名の生成で日付を含めた任意の書式を扱えるようにするためなのです
223:デフォルトの名無しさん
20/07/02 12:25:41.08 frMfUtj7r.net
あー「ファイルパスを作成するとき、年月日ごとのフォルダ階層をつくるため」ってことね
年の中に月だけの名前のフォルダとかセンス的に俺はようやらんけど、理由は理解できたわ
224:デフォルトの名無しさん
20/07/02 12:43:20.68 ZEZ39nL50.net
>>215
年月日をそれぞれ別に取得したほうがいいんじゃね
必要ならそれをPath.Combineで連結すれ
225:デフォルトの名無しさん (エムゾネ FFaa-JCxG)
20/07/02 17:00:29 ryu4JvV+F.net
/でも造れるやろ
226:デフォルトの名無しさん
20/08/01 16:52:28.79 aC56TYwwM.net
VisualStudioは糞です。
{}を使うとき
public voidnicemethod
{
}
となるのではなく
public void nicemethod{
}
と自動でなるようにするにはどうしたらいいですか?
227:デフォルトの名無しさん
20/08/01 16:54:09.31 G+VYcIGl0.net
糞
228:デフォルトの名無しさん
20/08/01 16:58:48.08 GNM8CN2Y0.net
>>223
オプションから起動時の設定変更出来るよ
昔は後者のほうが行数少なくて済むから良いと思っていたけど、最近は前者でも別に良いわと
229:デフォルトの名無しさん
20/08/01 17:01:00.07 8QGIO3XO0.net
縦長ディスプレイなら良いんじゃね
230:デフォルトの名無しさん
20/08/01 17:57:59.23 E5+XpSzKd.net
整形はvsのデフォルトに任せるようにした
独自整形ルール作ってるプロジェクトに入るとめんどくせって思うようになってしまった
231:デフォルトの名無しさん
20/08/01 18:15:37.32 8AkvqbAqa.net
同じ構文木なら表示形式はなんでもいいはずだ
保存時の形式だけ標準化して、編集時はユーザーの好みに合わせてフォーマットするようにIDEが進化すべき
232:デフォルトの名無しさん
20/08/01 18:23:48.50 dl6F83GvM.net
簡単な住所録作ろうとしてます。
登録と削除と追加ができればいいだけのやつ。データ保存はデータベース側に。
これのシンプルなオープンソースプロジェクト知っている方いませんか?いたら嬉しい。
233:デフォルトの名無しさん
20/08/01 18:48:40.23 Yannm6rz0.net
>>229
オープンソースプロジェクトの何を探してんの?
データベース?
234:デフォルトの名無しさん (ワッチョイ 4dde-akQC)
20/08/01 19:19:48 1LAdFvqL0.net
>>230
住所録って書いてんじゃんメクラかよ
235:デフォルトの名無しさん
20/08/01 19:31:35.20 Yannm6rz0.net
>>231
作るのにオープンソースプロジェクトが必要なの?
って言ってるんだけど。
作るんじゃなくて流用する、の間違いなら、ああ、って思うけどさ。
236:デフォルトの名無しさん
20/08/01 19:43:37.72 EiwM5rD/0.net
まあ、そのまんま使えねーだろーから改修して使おうってんじゃねーの?
オープンソースの正しい使い方やん
237:デフォルトの名無しさん
20/08/01 20:12:27.90 Yannm6rz0.net
簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。
238:デフォルトの名無しさん (ワッチョイ 7a6a-xE3T)
20/08/01 20:49:12 oCALSNxU0.net
エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな
239:デフォルトの名無しさん (ワッチョイ b178-xE3T)
20/08/01 20:51:54 xhSYh2050.net
>>229
URLリンク(www.google.com) Address book
240:デフォルトの名無しさん
20/08/01 21:48:16.20 NKcPOHZ30.net
オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1~2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う
241:デフォルトの名無しさん
20/08/01 21:52:38.29 +9Q20FKV0.net
スレ違いだったら申し訳ないです。
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?
242:デフォルトの名無しさん
20/08/01 21:54:22.30 G+VYcIGl0.net
>>238
ここCじゃなくてC#な
243:デフォルトの名無しさん
20/08/01 22:04:49.38 8QGIO3XO0.net
>>238
もう一つ言っておくと、mac はobjective c
(c++)でないと
画面作れないよ
244:蟻人間
20/08/01 22:06:32.74 LLVAByzud.net
macは自由陣営じゃないから。。。
245:デフォルトの名無しさん
20/08/01 22:11:32.98 +9Q20FKV0.net
わかりました
ありがとうございます
246:デフォルトの名無しさん
20/08/02 06:10:11.27 T2MIboAU0.net
c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか?
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。
247:デフォルトの名無しさん
20/08/02 07:27:09.21 EizALxAu0.net
>>243
相手が端末の電源オフのときはどうしたいの?
サーバーの特定のデータを見に行く作りにしないと結局使えないじゃんってなることのが多かったよ
248:デフォルトの名無しさん
20/08/02 12:52:22.51 scrCUlqp0.net
データクラスって一時期C#にも付くんじゃないかって言われてたのに、一体どうなったの?
URLリンク(try.kotlinlang.org)
オートプロパティのおかげでJavaみたくはならないから要らないってこと?
249:デフォルトの名無しさん
20/08/02 13:54:59.45 xaz7GC4v0.net
9でrecordくるよ
250:デフォルトの名無しさん
20/08/02 14:51:37.50 umITGI3r0.net
URLリンク(ufcpp.net)
URLリンク(ufcpp.net)
recordsはこんな感じ
251:デフォルトの名無しさん
20/08/02 16:20:00.33 NsDY9jGSF.net
ここはプログラムを描きたい人造りたい人向けのスレ
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします
252:デフォルトの名無しさん
20/09/03 22:01:35.41 RMVHFRAl0.net
public interface Ixxxxx
{
int method1(int x);
}
インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。
それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。
253:デフォルトの名無しさん
20/09/03 22:10:50.18 RMVHFRAl0.net
ルート相対的URLを保存するクラスは何が適しているんでしょうか。
String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。
254:デフォルトの名無しさん
20/09/03 23:38:56.88 FEiIVBqsM.net
>>249
名前がないと何を意味する引数なのかが意味不明だから
interfaceはpublicメンバしか持てないから
255:デフォルトの名無しさん
20/09/04 00:15:18.15 yQcUkcYq0.net
引数名ないとドキュメント化する時にも困るしね
256:デフォルトの名無しさん
20/09/04 11:28:01.48 M8Oq5rfA0.net
>>249
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double~etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない
逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)
257:デフォルトの名無しさん
20/09/04 11:39:06.89 krKESdlN0.net
型のみで十分なのになん変数名まで書かなきゃならんの?って質問にその回答は適切ですか?
258:デフォルトの名無しさん
20/09/04 12:06:19.79 yQcUkcYq0.net
>>253
その回答はズレてる
259:デフォルトの名無しさん
20/09/04 12:46:23.59 YyY7xdI50.net
>>251
>>252
レスありがとうございます。
なるほど、
変数名に引数の役割について記録しておくということにとても納得しました。
ソースの自己ドキュメント化につながりますものね。
>>253-255
レスありがとうございます。(^-^)
260:デフォルトの名無しさん
20/09/04 13:31:45.96 Cdgw0eXGM.net
インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ
261:デフォルトの名無しさん
20/09/04 14:23:19.04 Utz5OTUqa.net
>>257
下のコードは合法なのでさすがにそれは意味不明
interface IHoge
{
void Fuga(int x);
}
class Hoge : IHoge
{
public void Fuga(int y)
{
}
}
262:デフォルトの名無しさん
20/09/04 14:29:57.19 G2vvVEFn0.net
引数名を変更するのってどういったケースを想定してるん?
263:デフォルトの名無しさん
20/09/04 14:34:15.41 Utz5OTUqa.net
別に想定なんかしてないのでは?
単に違法にする理由がないだけかと
264:デフォルトの名無しさん
20/09/04 17:36:23.03 nh9T8LFU0.net
>>258
IHoge hoge = new Hoge();
hoge.Fuga(x: 100); //<= OK
hoge.Fuga(y: 100); //<= NG: compile error
265:デフォルトの名無しさん
20/09/04 18:29:28.50 Utz5OTUqa.net
>>261
当たり前やんw
266:デフォルトの名無しさん
20/09/04 19:19:04.36 Utz5OTUqa.net
あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。
だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな
267:デフォルトの名無しさん (テテンテンテン MM8f-wKT+)
20/09/04 19:51:37 Cdgw0eXGM.net
いや名前付き引数はVB.NETには昔からあったぞ
想定していないわけがない
268:デフォルトの名無しさん
20/09/04 20:31:43.96 nqNO8CQ40.net
そもそもコンパイルしても変数名はILに残るわけだし
C#1からたぶんそうだよね?reflectionあるんだし
269:デフォルトの名無しさん (アウアウウー Sa8b-wKT+)
20/09/05 10:58:29 JiWof8twa.net
>>265
それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、
MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう
CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ
もちろん、実装には追加コストを払って特別なケアが必要になるだろう
そこまでして引数名を省略したいだろうか?ということだね
270:デフォルトの名無しさん
20/09/05 12:34:52.95 Waja5Z+Na.net
実行時に小さくないコストが発生するような方法なんて取るわけないと思うよw
メタ情報なんて見てるわけないじゃんwww
271:デフォルトの名無しさん
20/09/05 13:22:53.11 azagYl6mp.net
家政婦はメタ
272:デフォルトの名無しさん
20/09/05 13:51:42.86 6OTXYwA0M.net
>>267
誰が実行時に見てるなんて言ったんだ?
見てるのはコンパイル時
273:デフォルトの名無しさん
20/09/05 14:12:24.58 RVsSclOOM.net
2日連続して秒で論破されとるやつw
274:デフォルトの名無しさん
20/09/05 16:47:07.35 aivXeFh8d.net
>>270
スレタイの通り初心者なんやろ
275:デフォルトの名無しさん
20/09/05 18:29:01.06 Waja5Z+Na.net
>>266は誤読したけど前日に論破(笑)なんかされた覚えはないよw
言い訳をさせてもらえばそもそも>>265-266は話の意図が不明瞭。
どっからそんな話が出てくる
276:のって話
277:デフォルトの名無しさん
20/09/05 22:38:11.37 VnlHSptc0.net
インターフェースの引数名を省略する戦略なんかないって結論出てるのにね
278:デフォルトの名無しさん
20/09/06 08:18:43.19 gGwX7R3F0.net
>>273
そこの理由が示されていないんでは?
名前付き引数を使えるようにしたんで仮引数は省略できません、じゃ理由になってないでしょ?
279:デフォルトの名無しさん
20/09/06 14:33:55.32 pKWvrGW4F.net
省略するとき
hoge(hage,,,,,fuga,,,,kuzu,,,) みたいな言語あったなー
280:デフォルトの名無しさん
20/09/07 02:57:30.38 u0REhpNo0.net
using var task = Task.Run(() => Do(a, b, c));
このDoを途中で止めることできる?
Doの処理に時間がかかるためキャンセルさせたい場合がある
281:デフォルトの名無しさん
20/09/07 03:10:56.80 3uGG3SyO0.net
CancellationTokenを使う
URLリンク(docs.microsoft.com)
282:デフォルトの名無しさん
20/09/07 03:25:16.17 jjIciKyq0.net
Doがキャンセルできるように作られてればできる
そうでなければ無理
283:デフォルトの名無しさん
20/09/07 09:29:51.53 s6/MEWpq0.net
a,b,cってなによ?
284:デフォルトの名無しさん
20/09/07 10:42:48.10 Mci5uexUM.net
引数じゃないの?
285:デフォルトの名無しさん
20/09/07 16:30:38.13 u0REhpNo0.net
Doの改造も不可避みたいですね
ありがとうございました
286:デフォルトの名無しさん
20/09/08 11:07:55.61 zCzZAqaJv
C#歴1ヶ月の独学勉強中の者です。
pictureBoxに画像を表示させており、
ボタンを押下するとその画像が画像中心を支点に5度ずつ
反時計回りに回転するプログラムを作成しています。
環境:VScommunity2019
この際pictureBoxに表示させている画像が表示されたまま
その上に回転した画像も表示されてしまいます。
元の画像を表示させないようにしたいのですが、
対応案が浮かびません。。ご教示いただけないでしょうか。
287:デフォルトの名無しさん
20/09/11 09:13:51.86 rDZLwTxXa.net
VisualC#2019パーフェクトマスター
買ってみた
800ページ近くある
勉強しなおし
Java有償化で、いろいろ特需だな
Javaよサラバ
Javaよサラバ
Why なぜに生きているのか
わからない
288:デフォルトの名無しさん
20/09/11 10:05:52.91 qxFjIo0zM.net
Java有償本当か?
289:デフォルトの名無しさん
20/09/11 16:12:44.77 rDZLwTxXa.net
優勝だ
290:デフォルトの名無しさん
20/09/23 09:34:34.80 hJkRvCZvF.net
>>1
Part 149
291:デフォルトの名無しさん
20/09/23 19:49:30.91 SeN5l4G8a.net
需要ないと思うけど暇だったので別スレで質問が出てたキー操作のシーケンスで発動する
キーボドショートカットを作ってみた
URLリンク(ideone.com)
使い方:
public partial class Form1 : Form
{
private KeyboardShortcutsDetector mKbsDetector = new KeyboardShortcutsDetector();
public Form1()
{
InitializeComponent();
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.L, () => Console.WriteLine("Ctrl + K, L"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.K, Keys.Control | Keys.M, () => Console.WriteLine("Ctrl + K, M"));
mKbsDetector.AddKeyBinding(Keys.Control | Keys.J, Keys.Control | Keys.U, () => Console.WriteLine("Ctrl + J, U"));
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return mKbsDetector.ProcessKey(keyData) ? true : base.ProcessCmdKey(ref msg, keyData);
}
}
退屈なコードだからたぶん見るだけ時間の無駄だと思うw
292:デフォルトの名無しさん
20/09/24 00:24:56.04 GbsAQP4b0.net
MVCとかまだイマイチわからんからwinformで作ってからMVCに移行する感じで勉強してるけど一人開発だと有り難み感じないからちょっと空しい
293:デフォルトの名無しさん
20/09/24 12:42:20.92 gbWGo5W3M.net
ボタン押したあとに結果リストにフォーカス移動させるのは
viewでやってええのか?
294:デフォルトの名無しさん
20/09/24 16:36:22.54 e+Ck+96a0.net
いいと思うよ
295:デフォルトの名無しさん
20/09/26 17:13:06.01 xSRIB2Tf0.net
windowsフォームアプリでHttpClientを使ってhtmlを取得しようと思っていますがうまくいきません。ステップ実行すると※の部分で処理が終わってしまいます。エラーに関する表示が何もでないため行き詰まってます。非同期処理に関する理解が浅いからだと思っていますが、壁を乗り越えられません。
このようなコードではなぜうまくいかないのでしょうか?
①
private void button1_Click(object sender, EventArgs e)
{
var url = "URLリンク(www.google.com";)
var t = GetHtml(url);
t.Wait();
this.textBox1.Text = t.Result;
}
async Task<string> GetHtml(string url)
{
var client = new HttpClient();
var html = await client.GetStringAsync(url);//←※
return html;
}
(続く)
296:デフォルトの名無しさん
20/09/26 17:13:28.26 xSRIB2Tf0.net
>>291の続き
ためしにコンソールアプリで似たコードを書いてみましたがうまくいきます。
②
static void Main(string[] args)
{
var url = "URLリンク(www.google.com";)<)
var client = new HttpClient();
var html = await client.GetStringAsync(url);
this.textBox1.Text = html;
}
297:デフォルトの名無しさん
20/09/26 17:23:29.59 RSACZQL60.net
>>291
private async void button1_Click( object sender, EventArgs e )
{
var url = "URLリンク(www.google.com";)
this.textBox1.Text = await GetHtml( url );
}
298:デフォルトの名無しさん
20/09/26 17:27:53.86 9d7CJAWD0.net
asyncはwaitしちゃだめ
理由は async デッドロック あたりでググって
299:デフォルトの名無しさん
20/09/26 17:31:36.79 +0bWtyAMM.net
>>291
どうしてもWait()使う場合はConfigureAwait(false)するかな
300:デフォルトの名無しさん
20/09/26 17:36:48.45 xSRIB2Tf0.net
>>293,294,295
数日間悩んでたのですが、教えて下さったキーワードを手がかりに調べ直してみます
本当に助かりました。ありがとうございます。
301:デフォルトの名無しさん
20/09/27 04:46:18.27 6sIZ9RBB0.net
Android, Electron などは、スレッドが2つある。
UI(描画)スレッドと、サーバー(バックグラウンド)スレッド
だから、2つのコンテキスト・文脈をまたがって、非同期などはできない。
異なる文脈の処理を呼び出すには、文脈を切り替えるような、特別な書き方がある
まあ、Windows のGUIアプリが、2つの文脈でやっているかどうかは知らないけど
302:デフォルトの名無しさん
20/09/27 07:46:38.96 WpoxB1nK0.net
>>297
知らんのかよ。
やってるけど。
303:デフォルトの名無しさん
20/09/27 16:39:54.69 BMd/NSoW0.net
>>291
多分非同期処理って調べるとasyncの例ばかりで自分で戻り制御する方法がよく
分からなくてTaskクラスでWaitすれば出来るとかって結論に達したんでないかと
思うのだけど・・・
まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して処理を元のスレッド(この場合STAスレッド)に戻します
asyncメソッドの中でawaitを指定すると、メソッドの内容に関係なく元のスレッドに
戻るのは変わらないですが、asyncメソッドの中でawaitで指定されたメソッドが
終了するまでasyncメソッドのスレッドだけが待ち状態になり、awaitから返って
くるとawait以降を実行しasyncメソッドの最後まで行くとasyncメソッドのスレッド
だけが終了されます
検証してないので予想なのですが、Taskクラスで管理するスレッドを起動して
いない(Task.Run)状態でWaitをかけるとSTAスレッドを待つためにsleepして
しまいますがSTAスレッドはループスレッドなので当然いつまで待っても終了
しません
asyncスレッドではawaitの処理が終わって復帰しようとしても元になるSTA
スレッドがsleep状態なので、こちらもawaitから返ってこないみたいなことが
起こっているのだと思います
2のコンソールアプリの場合にはループスレッドではないのでMainの処理が
終了した時点で続きが動くのではないかと
3は正しい使い方で、STAスレッドは動かしたままbutton1_Clickメソッドが別スレッドで
動作する際にclient.GetStringAsyncの処理を待っているので普通に動作します
button1_Clickの中で待つのであればasyncメソッドを作る意味がないですし、async
メソッドで裏で動かすのであればbutton1_Clickで待ってはいけないので3の様な
形で実装するか、asyncメソッドの返却値をただのstringにして、textBox1.Textに
メソッドの返却値が入る形式に変える(こっちは試してないので嘘かも)のが正解じゃ
ないかな
304:デフォルトの名無しさん
20/09/27 18:04:42.91 co99WLAO0.net
つまり非同期すればハゲるということですね。
305:デフォルトの名無しさん
20/09/27 19:27:47.55 0F2CG6otd.net
>>291
①でやるなら自分はcontinuewithするかなあ
あとhttpclientは毎回使い回すのはあまり良くなかった気がする
306:デフォルトの名無しさん
20/09/27 19:28:51.84 0F2CG6otd.net
>>301
x使い回す
○作り直す
307:296
20/09/28 02:24:40.60 QIpyCS2B0.net
JavaScript が難しいのは、非同期が基本だから。
コンテキスト・文脈が異なる。
時間の進み方が異なる世界で、同期を取らないといけないから
Ruby が簡単なのは、同期が基本だから。
非同期の方がオプション
Android, Electron がややこしいのも、2つの文脈の同期を取る必要があるから。
1つのアプリ内に、GUI・非GUI の文脈がある
例えば、Electronなら、Main は、Node.js のCUI スレッドで、
Renderer は、GUI のChromium スレッド
双方は、決められた書き方をしないと、同期・通信できない
308:デフォルトの名無しさん
20/09/28 06:18:20.07 ii9XSMYC0.net
>>291です
>>297
コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます
>>299
自分は独習C#という本をテキストにして勉強しています。
その中で、>>292の②と似たコードが記載されていて、
これを使ってasync/awaitの基礎が説明されています。
そこで、フォームアプリで真似してみたんです。
デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。
ただ、②のコンソールアプリでデッドロックが起きない理由がわかりません。
コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが
まだ理解が浅くてモヤモヤしてます。
あと、
>まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して・・・
の下りですが、スレッドが3つあると考えればいいのでしょうか?
a.STAスレッド(2のスレッドを呼び出したスレッド)
b.async指定されたメソッドを処理するスレッド
c.client.GetStringAsync(url)を処理するスレッド
これは②のコンソールアプリでも同じですか?
bについては独習C#には書かれていなかったので
aとbは同じスレッドだと思い込んでいました。
調べてみてよく分かったのですが、理解できていない概念が多すぎますね。
今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです
この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか?
結論としては
基本的にフォームアプリの中でWaitを使うな
使いたいならConfigureAwait(false)で回避しろ
ということなのかなと思っています
309:デフォルトの名無しさん
20/09/28 07:01:50.95 ii9XSMYC0.net
>>304
修正
a.STAスレッド(bのスレッドを呼び出したスレッド)
310:デフォルトの名無しさん
20/09/28 07:59:26.50 nO4ceNb30.net
すいません入門書に以下のコードがあるんですが実行してもピクチャーが真っ白で変になってるんですが
何が間違ってるんでしょうか;
URLリンク(gyazo.com)
画像を置いてる場所はここです
URLリンク(gyazo.com)
311:デフォルトの名無しさん
20/09/28 08:35:58.50 lkQsRi/q0.net
表示したい画像はどんな内容なんですか?
312:296
20/09/28 08:52:18.25 QIpyCS2B0.net
>>304
コンテキスト・文脈が異なるとは、全く別世界・異次元。
時間の進み方も異なるし、全く感知できない。
通信・同期もできない
未定義の動作と同じ。
あらゆる仮定・推測ができない
だから、双方が連絡するには、特別な書き方をしないといけない
普通の言語では、例外も補足できない。
他方で例外を投げても、伝わらない
だから、ストールするのは、文脈が異なる場所で、例外が起こっている可能性もある。
313:起こっていても分からないから 本を買うよりも、検索して調べた方がよい。 こういう説明が載ってる本は、まずない。 余程、マニアックな本だけだろう
314:デフォルトの名無しさん
20/09/28 08:53:38.64 phqY8Xtx0.net
FormのControlsに追加しなくてもいいんだっけ?
315:デフォルトの名無しさん
20/09/28 08:59:13.21 Zg0P7tB00.net
>>304
C#による マルチコアのための非同期/並列処理プログラミング
URLリンク(gihyo.jp)
C#によるWindowsシステムプログラミング 第2版
URLリンク(www.cutt.co.jp)
この2冊しかしらん
もっといいのを知ってる人いたらよろしく
316:296
20/09/28 09:04:53.56 QIpyCS2B0.net
確かに、GUI の根幹には、永久のイベント(メッセージ)ループがある。
イベントドリブン
ずっと、ユーザーからのマウスイベントなどが、キューに入るのを待っている。
キューにイベントが入ると、それを処理する。
それを永久に続ける
一方、CUI では、そういうイベントドリブンは聞かない。
マウス操作で、何かをするというのも聞かない。
Ctrl + C を押して、割り込み処理を発生させることはできるが
でも、こういうアプリの終了などのソフトウェア割り込みも、イベントループで拾うけど
317:296
20/09/28 09:08:06.54 QIpyCS2B0.net
そんな難しい本を読んでも、理解できないから無駄だと思う
検索した方がよい
318:デフォルトの名無しさん
20/09/28 09:11:10.60 Zg0P7tB00.net
>>306
用意した画像の一部だけが表示されている
たとえば、
pb.SizeMode = PictureBoxSizeMode.StretchImage;
といった感じでPictureBoxSizeModeを指定してみると何が起こってるのか何となくわかるんじゃね?
319:デフォルトの名無しさん
20/09/28 09:42:36.85 Uql71HHWa.net
>>311
ctl+Cまで入力コマンドを待つCUIアプリはイベントドリブンと呼べるのでは?
320:デフォルトの名無しさん
20/09/28 09:50:37.80 o994bwz+0.net
>>311
CUIでもターミナルベースの業務アプリなんかだとイベントループ書くぞ。
321:296
20/09/28 10:20:17.53 QIpyCS2B0.net
結局、GUI・CUI も、どちらもイベントドリブンなのか
大部分は同じなのかも
322:デフォルトの名無しさん
20/09/28 10:59:03.73 o994bwz+0.net
>>316
お前Electronの内容もちょっと変な理解してるし、毎回思うけど知ったかぶりしないほうがいいぞ。
結局Rubyの事しかわかんないんでしょ。
323:デフォルトの名無しさん
20/09/28 11:27:34.04 j++FlVxl0.net
Delphiに存在したメタクラス型(クラス型を代入、参照できる変数)は
C#に無いの?
324:デフォルトの名無しさん
20/09/28 11:42:34.18 ii9XSMYC0.net
>>310
ありがとうございます
アマゾンレビューをチラ見したところ目的に合ってそうです
>>312
とりあえず頑張ってみます
325:デフォルトの名無しさん
20/09/28 11:53:52.45 phqY8Xtx0.net
>>318
Typeは?
326:デフォルトの名無しさん
20/09/28 13:53:50.99 j++FlVxl0.net
Typeでもある程度事は足りるけど、
あらゆる型のtypeof()を代入できるので不確実だし、Activatorとか必要で面倒。
無いなら仕方ないが…まあ移植が大変
327:デフォルトの名無しさん
20/09/28 18:57:37.61 nO4ceNb30.net
>>313
そのプロパティ?はまだ本内で教わってないですが使ったら表示されました。
ありがとうございます!!
328:デフォルトの名無しさん
20/09/28 22:54:29.00 iemn9XLz0.net
>>311
CUIなRTOSなんて普通にあるけどなぁ
329:デフォルトの名無しさん
20/10/10 10:58:06.91 RvE6O+PE0.net
.NET Coreでコンソール画面に
「こんにちは、WORLD!」と表示させようとすると
なぜか「こんにちは、WORL!」のように表示されます
コンソール画面のメニューからフォントを変更すると正しく表示されますが原因が分かりません
330:デフォルトの名無しさん
20/10/10 11:22:49.95 OZkIKLkD0.net
コンソール画面とは?
331:デフォルトの名無しさん
20/10/10 12:42:00.94 YPdRC9Oi0.net
>>324
コード貼れ
332:デフォルトの名無しさん
20/10/10 13:17:16.07 RvE6O+PE0.net
static void Main(string[] args)
{
var str = "こんにちは、WORLD!";
Console.WriteLine("{0}", str);
Console.ReadKey();
}
333:デフォルトの名無しさん
20/10/10 17:53:06.91 wYCx593I0.net
>>327
これかな?
URLリンク(aquasoftware.net)
334:デフォルトの名無しさん
20/10/10 17:57:00.27 wYCx593I0.net
>>327
これも
URLリンク(csharp.clock-up.jp)
335:323 326
20/10/10 19:40:42.12 RvE6O+PE0.net
>>328 >> 328
試してみましたが改善しません
出力をコピーしてメモ帳にペーストしてみると正常なので
どうも文字化けではないようです
文字の表示位置がずれて重なっているような感じです