22/12/12 17:51:58.56 k2kKVQYZ0.net
こんな感じ。でも手打ちでダメだったから全部コピペでやってみたんだけどな
using System;
using System.Windows;
using System.Windows.Threading;
namespace clock2
{
public partial class MainWindow : Window
{
private readonly DispatcherTimer _timer = new();
public MainWindow()
{
InitializeComponent();
InitializeTimer();
_timer.Start();
}
private void InitializeTimer()
{
_timer.Interval = TimeSpan.FromMilliseconds(500);
_timer.Tick += (_, _) =>
{
TimeLabel.Text = DateTime.Now.ToString("HH:mm:ss");
};
}
}
}
51:デフォルトの名無しさん
22/12/12 20:53:05.99 KIlmqrcDM.net
>>50
ぱっと見はコードに気になるところないなぁ
タイマーのプライオリティを上げてみて動きに差が出るようならデバッガーがUIスレッドで忙しくしてるのかも
52:デフォルトの名無しさん
22/12/12 21:46:03.90 gQz+ELAV0.net
>>50
URLリンク(learn.microsoft.com)
>タイマーは、時間間隔が発生したときに正確に実行されるとは限りませんが、時間間隔が発生する前に実行されないことが保証されます
UIスレッドが忙しかったらずれるんじゃないの。よくわからんけどw
WindowFormで同じようにUIスレッドの影響受けるSystem.Windows.Forms.Timer使って時計作ったことあるけど気付かなかった
53:デフォルトの名無しさん
22/12/12 22:38:45.24 bhcjN5ma0.net
>>37
リリースモードでは動くのに?
54:デフォルトの名無しさん
22/12/13 05:48:44.25 zf4Mftmc0.net
>>52
これが正解なんじゃね?
UIスレッドが忙しい、というのは最適化がかからないデバッグだと動かない説明にはなる
55:デフォルトの名無しさん (アウグロ MM9f-SFrr)
22/12/13 07:15:53.99 VhzaN62DM.net
時計を動かすのに全力を出し切っているということか
56:デフォルトの名無しさん (ワッチョイ 87c6-vbep)
22/12/13 11:56:18.57 31759n2d0.net
ゲームセンターのゲームとか、コマ落ち・カクカク・プチフリーズする
1秒間に、30~60回も処理できない
57:56 (ワッチョイ 87c6-vbep)
22/12/13 12:00:48.87 31759n2d0.net
漏れはパソコンをエコモードにして、使うCPU を1つだけにすると、
ブラウザゲームが、1秒間に1回しか描画されない
セロリンとか、性能が低いCPUでも、そうなる
58:デフォルトの名無しさん
22/12/13 15:12:01.39 +JVgkCRO0.net
InitializeComponent()より前にnew DispatcherTimer()していいんだろうか
59:デフォルトの名無しさん
22/12/13 17:57:53.18 dQ/Fqfa/0.net
>>51
>>52
>>54
これでした!試しにプライオリティをInputにしてみたら期待通りに動いてくれた!
一人でやっていたらずっと気づくことができなかったと思う
色々アドバイスしてくれた人たち本当にありがとうございました
60:デフォルトの名無しさん
22/12/13 19:49:36.92 uYffxzwa0.net
UIスレッド忙し過ぎてUIの挙動にも影響出てそうなんだが
プライオリティ弄るよりそっちをどうにかした方が良いと思うぞ
61:デフォルトの名無しさん
22/12/13 21:33:39.63 5M8t5XhNM.net
デバッグビルドのexeを直接実行した場合と
VSからデバッグ実行した場合で違いが出るようならデバッガーによる影響
62:.NET MAUI HighSchool
22/12/13 23:11:40.99 sdBWNgeV0.net
ReactiveXが理解できない…
何をやってるのかはわかるんだが具体的にアプリにどう実装すればいいのか検討がつかない…
こういうアプリを作ってみるといいよっみたいな資料とかないだろうか?
63:デフォルトの名無しさん
22/12/14 01:12:50.31 Y+oEH+Z90.net
UIスレッドは軽量になるように非同期を駆使して細心の注意を払ってるわ
64:デフォルトの名無しさん
22/12/14 01:17:31.63 7jUV+yGa0.net
デバッガーが重いんだろ
65:デフォルトの名無しさん
22/12/23 22:15:02.01 6p3YRtBU0.net
ロックに使ってる変数の参照を書き換えてしまった
66:デフォルトの名無しさん
22/12/26 23:46:57.73 /QyjmJjHa.net
書けるかテスト
67:デフォルトの名無しさん
22/12/26 23:53:21.36 /QyjmJjHa.net
久しぶりにC#の世界に戻るかもしれないんだけど、
以前触ってたのはVS2010/Windows 7の時代なんで浦島太郎状態
で、言語の方は自分で調べて差分を埋めようと思うけど、
実行環境というか、以前ならCLRとか.NET Framerowkと呼ばれていたものが
どう変わったのかいまいちよく分からないんですが、その辺サクッと分かる記事とか
どっかにないですかね?
68:デフォルトの名無しさん
22/12/27 04:54:00.45 WD60NfHsM.net
実行環境は現在進行形で変化中
69:デフォルトの名無しさん
22/12/27 16:09:13.51 /tVTIbQ7a.net
>>67
.NET FrameworkはWindows用
マルチプラットホームは.NET Standardという規格で.NET Frameworkや.NET Coreやmonoをつないでいた
今はそれらが全て統合されて.NETになってる
Windowsユーザーから見れば.NET Coreが.NETという名前になって.NET Frameworkを吸収合併したと見てもそれほど大きくは間違ってない
Visual Studioの新規プロジェクトテンプレートでは無印のものが.NETで.NET Frameworkと書かれてるものが旧バージョン
旧バージョンではあるがWindows専用に作られただけあってWindowsアプリを作る時には.NET Frameworkが便利な場面も一部ある
しかしいずれ消えるので新規アプリは.NETで作るべき
これだけ把握しときゃ後は何とかなる
70:デフォルトの名無しさん
22/12/27 16:37:34.00 SBS6S5Xya.net
.NET5以降はサポート期間が最長でも3年で、ジャパニーズドカタディヴィロップメントでの採用はかなり厳しいことに注意
そして、断言するが、.NET Frameworkは最終的には5以降のCore系の.NETよりも確実に長く生き残る
71:デフォルトの名無しさん
22/12/27 16:55:12.12 /tVTIbQ7a.net
.NET FrameworkはWindows UpdateでOSをアップグレードしたらサポート(インストールすら)されなくなることがあるからサポートが重要ならなおさら新しいバージョンを使うべき
72:デフォルトの名無しさん
22/12/27 16:59:13.21 SBS6S5Xya.net
>>71
使えてた.NET Framework がアップデートで使えなくなったってこと?
いつそんなことがあった?
73:デフォルトの名無しさん
22/12/27 17:01:47.74 /tVTIbQ7a.net
>>72
過去からの類推じゃなくMSのサイトにそう書いてあるぞ
74:デフォルトの名無しさん
22/12/27 17:11:35.01 usWDFVvc0.net
そもそも.NET Frameworkの最終バージョン4.8のサポートが多少長いのは破壊的変更が多いから今のうちに移行しろっていう猶予期間だって察しろよ
今から.NET Frameworkで新規開発始めるのは正気の沙汰じゃないわ
75:デフォルトの名無しさん
22/12/27 17:13:58.50 SBS6S5Xya.net
>>73
どこに?
76:デフォルトの名無しさん
22/12/27 17:16:43.50 /tVTIbQ7a.net
俺が探すんかいw
ググれよ
サポートはOSのポリシー次第って書いてるのが簡単にみつかるから
77:デフォルトの名無しさん
22/12/27 19:42:29.97 zfINmmJX0.net
4.8.1とかになってまだまだ毎月パッチ当たってるし
あと10年はOSにデフォルトで搭載されるっしょ
net core系は今後もデフォルトでは絶対に入らないから
余計にそうなる。
.net4.8と比べ、.net7の方がファイル数もファイルサイズも速度も速くなりますなんてものほぼないし。
だってフレームワークがクロスであることには意味があっても
各人が作る最終制作物をクロスで動かすなんてことはほぼない
わけなんだから
78:デフォルトの名無しさん (スッップ Sdaf-T2CE)
22/12/27 21:31:21.16 24MwsJWsd.net
>>76
URLリンク(learn.microsoft.com)
> There is no change to the lifecycle policy for .NET Framework 4.x and its updates which continue to be defined as a component of the OS and assume the same lifecycle policy as the Windows version on which it is installed.
もしかしてこれのことか?
これはつまりWindowsの一部としてサポートしますよという意味で、MSとしてはむしろ最強クラスのコミットメントだよ
79:デフォルトの名無しさん (ワッチョイ 4d07-aXTt)
22/12/27 21:32:52.86 usWDFVvc0.net
Windowsがバージョンアップするの知らないやつおるな
80:デフォルトの名無しさん (ワッチョイ 4d07-aXTt)
22/12/27 21:34:22.17 usWDFVvc0.net
てか4.8が最終バージョンてとこでどんなボンクラでも後がないんだなーって気づくだろ
マジで気づかないの?
81:デフォルトの名無しさん
22/12/27 21:55:57.93 oPwbbFHg0.net
でもMSってなかなかレガシーを切れないから、
Windows15くらいまでFramework 4.xも平行して続けてもおかしくない
82:デフォルトの名無しさん
22/12/27 21:59:42.62 iT9wnpuva.net
>>69
質問者じゃ無いけど為になるわ、有難う
83:デフォルトの名無しさん
22/12/27 23:07:28.89 XEOmC2Uoa.net
>>69
なるほど。簡潔で分かりやすくて助かります。ありがとう。
84:デフォルトの名無しさん
22/12/28 00:25:13.64 BhD4UP040.net
.net standardは規格なの?
いつの間にかこの概念を耳にすることがなくなったのでまだよくわからん
.net core以降で開発する時にこいつをどう意識すべきなのかな?
85:デフォルトの名無しさん
22/12/28 00:32:31.57 De8+sS85d.net
>>84
.NET Standardはバージョン2.1で.NET Frameworkを切り捨てたため、事実上の存在意義をほとんど失った
不特定多数向けにNuGetパッケージを開発しているのでない限り、全く気にする必要はない
86:デフォルトの名無しさん
22/12/28 00:56:41.13 Sx0QargEM.net
.NETはいつまでたっても未完成品
今後のことも考えて仕方なく使ってる
87:デフォルトの名無しさん
22/12/28 01:13:53.13 wPwgxApG0.net
.NETはゲートウェイを指定してHTTPリクエスト送るのがメチャクチャ回りくどくなった
これに限らずリファクタリング版は大抵劣化してるだけのゴミ
88:デフォルトの名無しさん (テテンテンテン MM97-Lt9E)
22/12/28 02:23:47.28 Irs2dr9FM.net
>>69
最近C#始めたのでこういう情報はありがたい。
89:デフォルトの名無しさん
22/12/28 07:34:10.36 dX6G49pN0.net
だからといってC#の代わりになる言語なんてあるはずもなく…
90:デフォルトの名無しさん
22/12/28 08:32:36.89 H7K9gIx/0.net
>>85
2.1は意味わからんよなぁ。うちはしばらく2.0でいく。
91:デフォルトの名無しさん
22/12/28 08:35:34.24 NjDNkmkXM.net
.NETはサポート期間が短いのが難点
業務アプリならやっぱり.NET Framework
92:デフォルトの名無しさん
22/12/28 08:39:03.13 adfqLiPC0.net
何をサポートしてほしいのか知らんけどバージョンアップすればいいじゃん
93:デフォルトの名無しさん
22/12/28 10:03:45.99 w/3S+pjQa.net
>>92
まあ.NET Frameworkは少なくとも今後10年のうちにサポートを切られることはないだろうから、仮にリミットを2032年としよう
現在最新のLTSである.NET6で開発したとして、サポート期限は2024年だ
そしてLTSは2年毎にリリースされ、リリースから3年間サポートされる
つまり3年を超えて使い続ける想定であれば2年毎のアップグレードが必要であり、
まず2024年にLTSの.NET8にアップグレードして以後は2026年、2028年、2030年と計4回のアップグレードが必要になる
一方.NET Frameworkを採用していればその間何もしなくてもいいわけだ
技術者として新しいものを使いたい感情は理解するが、これを客に正直に説明すれば客が望むのはどちらか、答えは明白だろう
94:デフォルトの名無しさん
22/12/28 10:11:55.61 DxmYqBGj0.net
特に不便が無ければ、枯れた.NET Frameworkの方が安定して動作するからな
.NETにしか無い新しい機能が必須!とかならともかく
95:デフォルトの名無しさん
22/12/28 10:14:16.94 pub52T/ya.net
作りっぱなしで何年放置する気なんだよw
96:デフォルトの名無しさん
22/12/28 10:16:06.74 Sx0QargEM.net
自分用のアプリは全部.net framework
新しい機能を試したい場合はcore使う
未完成品のデザイナがまともになれば.NETに全面移行するんだけど
それにAPIに互換性のないものがあるのが困る
97:デフォルトの名無しさん
22/12/28 10:29:31.98 kH4/nphD0.net
>>95
放置してようがアクティブに開発してようが、アップグレードの際のコストに大差はない
自社サービスや内製システムのキラキラした話によって、アクティブに継続的な開発が行われているシステムではアップグレードしやすいというようなイメージを持っているかもしれないが、実態は別にそんなことはない
そういった恵まれた環境では、受託と違って自己責任なので場合によってある程度品質を犠牲にする選択がしやすいのと、比較的エンジニアスキルが高く彼らの技術者的感情もが尊重されるから、
結果的にアップグレードに積極的な傾向があるだけだ
98:デフォルトの名無しさん
22/12/28 10:29:50.24 NjDNkmkXM.net
>>95
最低10年は使います
99:デフォルトの名無しさん
22/12/28 10:44:14.55 a2brMVFI0.net
マイクロソフトはしくじり先生だからな
100:デフォルトの名無しさん
22/12/28 11:11:15.73 DxmYqBGj0.net
>>95
不具合や不都合が出るまで
出ないのが一番良いシステムだからな
101:デフォルトの名無しさん
22/12/28 11:13:26.28 adfqLiPC0.net
さすがに三年バージョンアップ無しのソフトはオワコン扱いだわ
102:デフォルトの名無しさん
22/12/28 11:24:48.04 Sx0QargEM.net
>>101
そもそもコンテンツじゃないからな
産業界などでは何十年前のソフトがずっと動いてるなんてざらだろ
一度作ったソフトが何も問題ないならわざわざフレームワークのアップデートでバージョンアップ版作り直す必要はないわ
MSが頻繁に電卓をアップデートしてるのがおかしい
誰も電卓に期待してない機能をどんどん継ぎ足してる
ほっとくと電卓がexcelになる
103:デフォルトの名無しさん
22/12/28 11:31:58.72 DxmYqBGj0.net
>>101
ペイントやメモ帳はいつオワコンになるの?
104:デフォルトの名無しさん
22/12/28 11:36:51.92 adfqLiPC0.net
>>103
開発が止まったらかな
105:デフォルトの名無しさん
22/12/28 11:48:38.96 Sx0QargEM.net
ペイントもメモ帳も開発が続いてる
いらない機能を追加し続けてる
MSはアホなのかと
単体で毎回100MB以上ダウンロードさせてる
世界で数億台あるwindowsマシンのリソースや
世界の電気の無駄づかい
MSは自然由来の電力を使っていますと言ってるけど各家庭や職場はそうじゃない
106:デフォルトの名無しさん
22/12/28 12:13:16.73 1ZDH9Auj0.net
>>105
Googleにも言ってやれ
107:デフォルトの名無しさん
22/12/28 12:15:23.61 1ZDH9Auj0.net
>>102
グラフ描画機能おもろいよな
コンバーターもかなり便利だと思う
108:デフォルトの名無しさん
22/12/28 12:20:18.60 Sx0QargEM.net
>>107
そんなもんいらないだろ
常識的に考えて使ってるのは0.001%もいない
109:デフォルトの名無しさん
22/12/28 12:24:19.22 1ZDH9Auj0.net
>>108
いるけど?
110:デフォルトの名無しさん
22/12/28 13:28:37.15 vcAICwg7M.net
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
111:デフォルトの名無しさん
22/12/28 13:50:31.59 wPwgxApG0.net
関数グラフは普通に便利
112:デフォルトの名無しさん
22/12/28 13:54:36.91 Sx0QargEM.net
世界に数人の電卓に関数グラフいるマンがいるから環境が破壊されるw
113:デフォルトの名無しさん
22/12/28 13:55:18.27 Il6zR38K0.net
100均の電卓使ってろよw
114:デフォルトの名無しさん
22/12/28 13:57:41.39 wPwgxApG0.net
まあ実務で使う業種は少ないかもしれんな
大学とかの勉強とか研究とかではグラフを描きたい
115:ときはよくある
116:デフォルトの名無しさん
22/12/28 13:58:04.76 adfqLiPC0.net
0.001%が数人のわけないじゃん
117:デフォルトの名無しさん
22/12/28 14:03:29.19 Sx0QargEM.net
>>115
> 常識的に考えて使ってるのは0.001%もいない
国語力ないなお前は
118:デフォルトの名無しさん
22/12/28 14:22:55.52 adfqLiPC0.net
国語力ってのはある程度目安になる数字を出してから行ってくんないかなあ
少し数字を変えて80億人もいないとか言っても意味ないのはわかる?
119:デフォルトの名無しさん
22/12/28 15:09:50.05 DxmYqBGj0.net
そういえば電卓アプリって整数だけで、浮動小数点には対応して無いんだな
アップデートはよ!
120:デフォルトの名無しさん
22/12/28 15:33:29.47 vcAICwg7M.net
目ん玉と頭の中のアップデートが必要か?
普通に小数は扱えるし指数表現もおk
というか関数電卓の機能すらあるのになぜ整数だけだと思った?
121:デフォルトの名無しさん
22/12/28 16:40:36.91 wPwgxApG0.net
プログラマー計算機モードのこと?
122:デフォルトの名無しさん
22/12/28 16:52:53.39 vcAICwg7M.net
違う
三角関数や指数・対数計算などの時の計算モードのこと
123:デフォルトの名無しさん
22/12/28 17:16:59.28 fcgTO/L50.net
電卓はデカすぎ拡大機能はいらないから縮小させろ
クソデカボタンをマウスで押すとでも思ってんのかMSさんは
124:デフォルトの名無しさん
22/12/28 18:01:07.80 Sx0QargEM.net
>>122
サイズ変えられると思ったけど一定サイズ以下にはならんのね
確かに大きすぎると言われれば…
スレチがいつもまでも続いてごめんね…
125:デフォルトの名無しさん
22/12/29 01:37:50.91 CkMUjB1Z0.net
webformアプリ抱えてる会社とかこれからどうするのかな
リプレイスするにしてもほぼ再設計になるだろうし
126:デフォルトの名無しさん
22/12/29 01:52:43.43 hXn490H8d.net
どうするもクソも.NET Frameworkを使い続けるだけだよ
.NET Framework のサポートが終了するのが10年先か20年先かはともかく、その頃には既にCore系の.NETもレガシー扱いとなり新しい代替技術が出てきているはず
中途半端なステップを踏む必要はない
127:デフォルトの名無しさん
22/12/29 08:23:14.39 lMHmGud10.net
.netは .NET6すなわち2021年秋ではじめて
広範な人々が.NET Frameworkに変わるものとして提供する
ある程度安定したプラットフォームです、
ってなったばかり。
Core3系ではリプレイスにはなり得なかったし.NET5は
実験もしくはアーリー用といった扱いだったし。
新体制はまだ1年、マイクロソフトの特性から考えて
.net4がOSのプリインストールでなくなるのが最速で2031年あたり
3.5と同じようにnet4依存の実行ファイルの初回実行時に
自動インストールを問うような仕組みが外されるのは
2041年頃だろう。
128:デフォルトの名無しさん
22/12/29 08:45:18.11 PenkwzkkM.net
.NET6が安定と言われるのは.NET統合後最初の長期サポート版だからだよ
.NETは基本的に奇数バージョンがCurrentで登場後に偶数バージョンがLTSCでリリースされることになってる
新機能を早く使って試したいユーザーは毎回更新してもいいけど安定サポートを望むなら偶数バージョンを乗り継いでいく運用が推奨されてる
129:デフォルトの名無しさん
22/12/29 08:52:51.63 WhR/7OthM.net
Microsoftが「.NET 6」正式リリース .NETとして最初の長期サポート版
URLリンク(www.itmedia.co.jp)
130:デフォルトの名無しさん
22/12/29 09:29:46.53 tI3f/ZOaM.net
予定は予定
131:デフォルトの名無しさん
22/12/29 09:52:34.13 vsTrl5VYa.net
「アップデートに追従できないなら.NETランタイムのバージョンを固定して塩漬けにしろ。そのために完全なサイドバイサイドとSCDを実現した。」
が.NET5系の互換性に対する基本ポリシーなんで、バージョンが上がる際に.NET Framework よりも気軽に破壊的変更を入れてくるのは確実
Windowsのアップデートに影響されないから本来的には楽になるはずなんだけど、常にセキュリティパッチを当てているかをちゃんと監査してるようなとこではかなり厳しいだろうね
132:デフォルトの名無しさん
22/12/29 10:13:30.04 TqrfwAhK0.net
.NET6 のサポート期間は3年。
その期間の開始は去年で、�
133:Iわるのが24年。正式リリースはやっと今。 このサポート期間の短さゆえに .Net Framework4.8 (31年まで)を採用とか、実際にあった話なんけど、なんとかなんないかな。
134:デフォルトの名無しさん
22/12/29 10:19:25.53 FsWoaG/y0.net
そこまでバージョンアップを厭うシステムが間違ってるから見直せばいいと思うぞ
君らが必要としてる.NET Frameworkのサポートもバージョンアップという形でサポートするだけだから何も変わらん
135:デフォルトの名無しさん
22/12/29 10:37:53.61 KOe6T0Hj0.net
いや、できることが増えるならまだしも劣化版になんで苦労して移植せなアカンのかってね
結局win32apiで組んでおけばよかったねってのが
結論になっちゃってるダッサ
困る困らないじゃなくてダッサ
そういう裏切りを何度も受けてるこその現状
今の年寄りは平気でじゃあwin32apiでっていうぞ
ちょうどそういう世代だし
バージョンアップしなくていいLinuxで組むってのもやってる
会社で
会議を開いてメリットデメリットを比較のために並べるとどうしてもそういう方法が選択されてしまう
ビジネスだからメリットデメリットを並べてでた結論には逆らえない
なのでc++に戻ってるまである(Linuxでも使えるから)
上の人間はプログラマの都合なんて決定に混ぜない
136:デフォルトの名無しさん
22/12/29 10:39:20.87 lptjzTiX0.net
>>132
それはシステムではなく組織構造や契約の問題だからなんとも
ベンダーにとってはスタックの更新は貴重な売上機会だし、不具合出したら責任負わされるから、やるからには大袈裟にしたい
一方で、客からすればそんなことは何の価値もない作業に見えるから、当然なるべく避けたいわけ
137:デフォルトの名無しさん
22/12/29 11:06:51.22 FsWoaG/y0.net
それをシステムと言うんだ
一つ勉強になったな
138:デフォルトの名無しさん (ワッチョイ c3da-hVcc)
22/12/29 11:21:32.29 vRFAISe50.net
現在の最新版(Current)は 7.0.1
長期サポート版(LTS)は 6.0.12
URLリンク(i.imgur.com)
139:デフォルトの名無しさん (ワッチョイ bf65-T2CE)
22/12/29 11:26:43.85 lptjzTiX0.net
>>135
周辺の人間活動までシステムに含めるのならその通りだが、だとすると君は「間違っているのは俺ではなく世界の方だ」と言っているようなものだ
もはや主張としてなんら意味を持たない単なる厨二病的発言ではないか
140:デフォルトの名無しさん (ラクッペペ MM97-k0TO)
22/12/29 11:54:44.25 xuhhAGayM.net
URLリンク(dotnet.microsoft.com)
141:デフォルトの名無しさん
22/12/29 12:03:29.41 xOWUnGzja.net
>>137
単純に君の世界が他の人の世界より狭いとは思わんのかね?
142:デフォルトの名無しさん
22/12/29 16:21:08.98 HWC94+Gl0.net
ぶっちゃけ今の.NET戦略は失敗してる
出た当時からほぼ完成されていたCOMを進化する方向になぜ行けなかったのか
政治的な問題なのか
143:デフォルトの名無しさん
22/12/29 16:39:34.35 qCyL+8y1M.net
Googleの存在がなければCOMとActiveXが進化する方向性も僅かにあったかも知らんけど今更な話だな
144:デフォルトの名無しさん
22/12/29 18:33:53.34 rmjwbbUN0.net
COMを使ったことあれば
> 出た当時からほぼ完成されていたCOM
なんて戯言を言わなくなると思う...
145:デフォルトの名無しさん
22/12/30 10:20:04.38 Gfrgu+Wn0.net
>>136
今更Currentかよ
146:デフォルトの名無しさん
22/12/31 23:37:47.65 A8GWHO1q0.net
MVVMというものについてなのですが、ビューからではなくモデルでプロパティを書き換えた場合にもビューに伝達するようにしたい場合はビューのプロパティもPropertyChangedを実装しないといけないという
147:認識であっていますでしょうか。
148:デフォルトの名無しさん
23/01/01 00:39:25.58 5MDrbxjOM.net
いいえ
モデルがプロパティ書き換えたよと言う情報を登録先に投げるので何も変わりません
149:デフォルトの名無しさん
23/01/01 00:51:29.52 e/1iR5vb0.net
モデルがプロパティを書き換えたよという状況がビュー側に投げられるようにするにはPropertyChangedを呼ばないといけない認識なのすが違いますか?
150:デフォルトの名無しさん
23/01/01 00:53:10.85 e/1iR5vb0.net
すみません、、「ビューのプロパティもProertyChangedを~」と書いていましたがモデルのプロパティの間違いです。。
151:デフォルトの名無しさん
23/01/01 00:54:54.59 e/1iR5vb0.net
ネット上のサンプルはモデルのプロパティがただのプロパティになっているものばかりで謎だったのですがやっぱりモデルもMVVM仕様に設計しないといけないんですよね。。
152:デフォルトの名無しさん
23/01/01 01:28:03.06 5MDrbxjOM.net
それが最大のネック
153:デフォルトの名無しさん
23/01/01 01:36:45.23 5MDrbxjOM.net
jsのMVVMフレームワークなどでは対象の変数をフレームワークが書き換えて
自動で通知するようになってる
154:デフォルトの名無しさん
23/01/01 01:51:36.44 msOaXkh40.net
黒魔術やな
155:デフォルトの名無しさん
23/01/01 01:54:15.78 5MDrbxjOM.net
言語レベルでプロパティに通知機構を入れてもいいはずだけどc#はそうしてない
今プロパティにinitアクセサ入れたけどbindアクセサを入れてもいいはず
156:デフォルトの名無しさん
23/01/01 10:26:27.48 e/1iR5vb0.net
良いサイトを発見した
URLリンク(ufcpp.net)
157:デフォルトの名無しさん
23/01/01 10:55:37.88 3lvoVtEt0.net
誰でも知ってるサイトを今更紹介されても
158:デフォルトの名無しさん
23/01/01 11:28:07.18 9sUFDNQ3a.net
初心者用スレでドヤる老害w
159:デフォルトの名無しさん
23/01/01 11:57:09.95 e/1iR5vb0.net
>>154
このサイトというよりこのページの間違い
PropertyChangedを言語レベルで補助するつもりはなくてコード生成でやってもらう方針と書いてあったから参考になると思って。
160:デフォルトの名無しさん
23/01/01 11:58:47.34 3lvoVtEt0.net
>>156
そこはみんなが参考にしてるサイトだからそこだけじゃなく隅々まで全部読むといいぞ
161:デフォルトの名無しさん
23/01/01 12:00:43.26 e/1iR5vb0.net
みんな隅々まで読んでいてこのページも知ってたってことか
すまねえ…
162:デフォルトの名無しさん
23/01/01 12:15:07.10 j5f8HZB4a.net
>用途が狭く、言語機能としては採用しにくい
プロパティの変更通知は言うほど用途が狭いかね?
MVVMを推すくらいならそれくらい標準で実装してほしいものだが。
163:デフォルトの名無しさん
23/01/01 12:57:35.27 5MDrbxjOM.net
言語レベルでMVVMヘルパー実装しろと前から言われてるけど
実際は微妙な補助機能を数回追加し続けて便利になった便利になったと言い続けてる
164:デフォルトの名無しさん
23/01/01 13:13:30.89 ps54Dm7d0.net
>>159
C# は GUI 使わないコンソールアプリを作ったりもするからそんな変な言語仕様を入れられても困る
それでなくても最近ちょっとやりすぎなぐらい言語仕様膨らんでるし
165:デフォルトの名無しさん (オイコラミネオ MMe3-/EFQ)
23/01/01 13:25:47.58 5MDrbxjOM.net
言語仕様がふくらみすぎてるのは舵取りする人間がそういう人に変わったからで
C#はかなり学習しにくいゴミ言語になりつつある
一方で本当に需要のあるmvvmヘルパー機能はライブラリなどに投げられて15年
166:デフォルトの名無しさん
23/01/01 14:50:57.14 aOdp45l9a.net
そこは別にライブラリでいいだろ
そしたらVBもF#も使えるし
167:デフォルトの名無しさん
23/01/01 14:56:40.04 Db/riRaQd.net
今のC#のメインストリームは完全にWebに移ってるからね
Webではほとんどイベント使わないし、基本的にデータの流れが一方通行なのでプロパティの変更をモニタする必要がない
168:デフォルトの名無しさん
23/01/01 15:51:38.76 hQ/gnoFSa.net
ライブラリも別に便利じゃないというね
169:デフォルトの名無しさん
23/01/01 15:53:22.87 upITL37Ha.net
>今のC#のメインストリームは完全にWeb
MAUIはお遊びですか。
170:デフォルトの名無しさん
23/01/01 16:28:44.76 v8lxumL50.net
>今のC#のメインストリームは完全にWebに移ってるからね
何年も前からそういうことを言う人を見かけるけど、それを裏付けるまともな統計を見たことがない。
171:デフォルトの名無しさん
23/01/01 17:04:38.71 RDiXYdnpa.net
>>167
URLリンク(www.jetbrains.com)
現実見ようよ
172:デフォルトの名無しさん
23/01/01 17:32:06.42 v8lxumL50.net
JetBrainsのサーベイか。なるほどありがとう。
173:.NET MAUI HighSchool
23/01/03 04:26:10.48 KGK7R/p50.net
>>166
なわけなくね?
Blazor MAUIとか知らんのか?
あれWebアプリそっくりそのままモバイルアプリにできるすぐれものだぞ
174:.NET MAUI HighSchool
23/01/03 04:28:36.61 KGK7R/p50.net
まぁ最近の世界的な流行りがWeb化してるから仕方ないでしょ
俺は何でもかんでもWebアプリ化するのは嫌いだけどな
Figmaとかもちゃんとしたデスクトップアプリで使いたいわ
175:デフォルトの名無しさん
23/01/03 05:36:35.63 6MPz74YQ0.net
専ブラ作ってるのってマウイ君?
176:デフォルトの名無しさん
23/01/03 07:55:08.78 WKAtXrzF0.net
言うほどWeb化してるか?
スマホ時代からはむしろWebアプリで良くね?ってレベルのものまで何でもかんでもネイティブアプリ化してるのがめちゃくちゃうざく感じるが
177:デフォルトの名無しさん
23/01/03 09:54:09.47 DiXPGtkDd.net
Webアプリで良くね?ってレベルのものは実際開発者もそう考えていてWebブラウザを全面に貼り付けてあるだけのものが多く、技術的には完全にWebの一種
MAUI Blazorもまさにそうだね
178:デフォルトの名無しさん
23/01/03 13:48:08.97 KGK7R/p50.net
>>172
がんばってる
WinUI3って<ContentPage.BindingContext>ってないんだな
どうやってMVVMすればいいんだ?
179:.NET MAUI HighSchool
23/01/03 13:49:50.55 KGK7R/p50.net
>>173
スマホはそうかもだけどFigmaのようなそこそこスペックがいりそうなものまでWeb化してる気が、、、
180:.NET MAUI HighSchool
23/01/03 13:51:48.97 KGK7R/p50.net
>>174
MAUI BlazorはただのWebとはちょっと違うかな
Blazorを介して直接スマホのネイティブAPI呼び出せるっていうスゲー利点がある
ただこの機能を使わないなら別に普通のWebViewでも良いかなってのは思う。
181:デフォルトの名無しさん
23/01/03 14:07:52.60 6MPz74YQ0.net
>>175
WinUI3はコンパイル時バインディングっていうのだけ用意されてるらしいよ
182:デフォルトの名無しさん
23/01/03 18:41:34.03 yYGSV1g60.net
ニュースアプリとかウェブで良いよな。
183:.NET MAUI HighSchool
23/01/03 20:49:00.39 KGK7R/p50.net
>>178
よくわからんけどWindowの中にPageを追加したらPage.DataContextでVVMのBindingできました
184:.NET MAUI HighSchool
23/01/03 20:54:25.22 KGK7R/p50.net
とりあえずスマホ用の5ch.netからスクレイピングした板一覧をツリー表示させることに成功した
URLリンク(github.com)
ただ板取得はJsonのほうがいいみたいだからJsonから板を取得する方法を模索中
185:デフォルトの名無しさん
23/01/03 21:11:49.20 WKAtXrzF0.net
板一覧ってjsonで取れんの?
datのみだった記憶あるが
186:デフォルトの名無しさん
23/01/03 21:15:53.36 WKAtXrzF0.net
ぱっと見たけどHttpClientはstatic readonlyで一本永続化したほうが良いよ
稀にしか使わないならまだしも5chブラウザってことならむしろメインオブジェクトだし
187:.NET MAUI HighSchool
23/01/03 22:12:10.39 KGK7R/p50.net
>>183
クラスってどう分ければいいんだろうか?
板一覧取得サービス、スレッド一覧取得サービス、スレッド取得サービスで分けようとしてたけど
どうがいいんだろ?
188:デフォルトの名無しさん
23/01/04 00:43:08.29 r5YTutFsa.net
Ruby on Rails では、データベースの各表の設計・関連ばかりやる
1対1、1対多、多対多など
189:デフォルトの名無しさん
23/01/04 02:21:56.42 +C+yH2XZ0.net
HttpClientを含むネットワーク接続用のクラスを作成してマウイ君の言うところの各サービスクラスのコンストラクタに渡しておくとか?
190:デフォルトの名無しさん
23/01/04 11:27:50.76 Ry3dqHi90.net
>>173
各社脱獄を目論んでいる
なんでかっていうとgoogleやAppleの気分次第でアプリを修正しなくちゃいけなくて凄く面倒くさいから
amazonはアプリ作るのやめたっぽい
amazonでこうだから他はもっと面倒くさいと思われ
うちも中小だけどあるとき
ふっと動かなくなってるなんてことあって非常に面倒くさい
もう現状でWEBコントロールにWEBページ貼り付けて強引にアプリっぽい挙動してるけど
なんかもうWEBアプリにしちゃおうか?
って話出てる
191:デフォルトの名無しさん
23/01/04 15:19:20.75 4AqXXBLo0.net
>>187
MAUI Blazorでいいんじゃね?それ?
192:デフォルトの名無しさん
23/01/04 23:29:03.48 7N9i2DDEM.net
専ブラか…
15年ぐらい前にWPFで作ってたな
そのせいでWPFにいい思いを持てない
MS死ねって思えた
193:デフォルトの名無しさん
23/01/05 00:08:37.28 vn9u9eY2a.net
機能をてんこ盛りにしてもガワがダサいと台無しになるんだよな
優秀なデザイナーおらんかね
194:デフォルトの名無しさん
23/01/05 02:16:02.09 /ldjRQly0.net
>>190
フラットデザインならツッコまれない上に最古のieでも動くはず
195:デフォルトの名無しさん
23/01/05 17:24:19.12 p6lP0uhc0.net
short i;
i = 0; // ok
i = true ? 1 : 0; // コンパイルエラー(キャストが必要)
三項演算子で数値を返す場合って、int固定になってしまうのは言語仕様ということでしょうか?
196:デフォルトの名無しさん
23/01/05 17:32:00.71 p6lP0uhc0.net
ぁぁ
上記の場合はコンパイルエラーにならないですね。
以下のようにするとエラーになります
short i;
bool hoge = true;
i = 0; // ok
i = true ? 1 : 0; // ok
i = hoge ? 1 : 0; // コンパイルエラー(キャストが必要)
197:デフォルトの名無しさん
23/01/05 17:35:27.31 /ldjRQly0.net
演算子の評価順番が違うだけとかそんなことない?
198:デフォルトの名無しさん
23/01/05 17:47:32.82 Eo475Zw70.net
特に明示しない場合、整数リテラルはintになるからってだけなのでは?
199:デフォルトの名無しさん
23/01/05 18:35:00.85 KPj6QU/BM.net
まず右辺の数字は整数リテラルと言うもの
変数に代入時は整数リテラルは型より大きすぎるなどしてない限り変数と同じ型とみなされる
そうしないと不便だから
次に i = hoge ? 1 : 0;
の右辺は式である
整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
これでキャストが必要
i = true ? 1 : 0;
この右辺はコンパイル時に決定されてるので代入可能
short s = 7000000-6999999;
これも代入可能なのと同じ感覚
200:デフォルトの名無しさん
23/01/05 19:27:18.86 p6lP0uhc0.net
>>196
ありがとうございました。理解しました
確かに
const bool hoge = true;
i = hoge ? 1 : 0;
とやってコンパイル時に決定されるようにするとエラーが無くなりました。
けど簡潔に書くための三項演算子なのに
(short)(hoge ? 1 : 0);
とかやると台無しですねぇ
201:デフォルトの名無しさん
23/01/05 19:54:52.08 ZKzvhdM60.net
むしろ、あえてshortを使う理由の方が気になるな
202:デフォルトの名無しさん
23/01/05 23:18:41.14 QBL7vIUt0.net
shortを表すリテラルのサフィックスがないのか
203:デフォルトの名無しさん
23/01/05 23:26:14.03 O+NRT3S+0.net
>>196
> 整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
> これでキャストが必要
ほんとか?
short s = b switch { true => 1, false => 2 };
はエラーにならんのだが...
204:デフォルトの名無しさん
23/01/05 23:27:37.63 O+NRT3S+0.net
>>199
ない、あってもいいのにと思ったけどそもそもshortなんて滅多に使わんことに気づいたわw
205:デフォルトの名無しさん
23/01/06 01:05:36.20 7HwChuQ+0.net
>>200
それ、varで定義したらintになってるし、右辺がintになるのは本当だな
で、c#のコンパイラ、縮小変換で切り捨てがないことが確認ができたら、暗黙の縮小変換を許可するっぽいな。
ちゃんとした言語仕様確認しないと何とも言えんが
おそらくコンパイル時に解決可能なことが前提条件じゃないかと推察するが
206:デフォルトの名無しさん
23/01/06 10:21:27.99 xMgEyxw8r.net
>>198
組み込み機器相手にしているとよく使う
207:デフォルトの名無しさん
23/01/06 10:54:04.53 Zk03eeCzM.net
文字列の中の何文字目に日付があるかを調べたいのですが、
日付の書式としては「2023/01/05(木)」といった感じで固定なものの、
日付の数字は当然日によって違ってくるわけなのでContainsだとちょっとうまくいかないです
いい方法はないでしょうか
208:デフォルトの名無しさん
23/01/06 11:05:52.93 J1J3+QokM.net
正規表現でググれ
209:デフォルトの名無しさん
23/01/06 12:19:31.93 buYHqiH80.net
>>204
static int IndexOfDateString(string str)
{
const string kDateFormat = "yyyy/MM/dd(ddd)";
int dateLength = kDateFormat.Length - 2;
int index = 0;
while ((index = str.IndexOf(')', index) + 1) >= dateLength)
{
int iStart = index - dateLength;
Console.Out.WriteLine(str.AsSpan(iStart, dateLength));
if (DateTime.TryParseExact(str.AsSpan(iStart, dateLength), kDateFormat, null, default, out var date)) return iStart;
}
return -1;
}
210:204
23/01/06 16:14:10.99 Zk03eeCzM.net
ありがとうございます
参考に(と言うかそのままなのかな?)させてもらいます
211:デフォルトの名無しさん
23/01/06 16:14:19.23 RU2dEBn00.net
WinフォームアプリでgroupBoxをタブみたいに切り替えて使おうと、
コントローラを切り替えるコードを書いたのですが、groupBoxを重ねて実行したら
全てのgroupBoxが一番下のgroupBoxの子になってるようで、思うように表示されませんでした。
groupBoxを、一番下のgroupBoxの子にしない方法はありますでしょうか?
212:デフォルトの名無しさん (ワッチョイ bb5f-TwI4)
23/01/06 20:43:15.02 LvtbIuXd0.net
>>208
・・・.Designer.cs を開くと、自動生成したコードが
一番下のgroupBox.Controls.Add(子のgroupBox)
になってないかな?
だとしたら、デザインモードから子のgroupBoxをフォームに貼り付けるとき、
フォーム直下じゃなく、一番下のgroupBoxに貼り付けてると思う
自分なら、Load のタイミングで、任意のgroupBox.Controls.Add(任意の孫コントロール)
を明示的にコーディングする
213:デフォルトの名無しさん
23/01/06 21:39:44.23 buYHqiH80.net
>>207
Console.Out.WriteLine(str.AsSpan(iStart, dateLength));
確認用のコード消し忘れたからこれは消しといてOK
214:デフォルトの名無しさん
23/01/06 22:12:46.01 0EW5INsGM.net
専ブラでも作るのか?
215:デフォルトの名無しさん
23/01/06 22:16:48.35 0EW5INsGM.net
>>200
switch式は左辺参照して型を決める特殊な仕様らしい
int→shortに変えられる詳しい仕様は書かれていないので実装依存になるかも
216:デフォルトの名無しさん
23/01/06 22:48:27.26 Zd/Zujyt0.net
>>212
Target typed conditional expression とか言うらしく C# 9.0 で仕様が変わったみたい
ざっくり読んだけどいまいちよくわからん
URLリンク(learn.microsoft.com)
217:デフォルトの名無しさん
23/01/06 23:11:40.08 i+WCiV6p0.net
もう誰もついて行けないほどキモい言語になったな
218:デフォルトの名無しさん
23/01/06 23:46:18.49 lAfbhCFR0.net
20年間建て増し増改築をくり返してるから。。。
219:デフォルトの名無しさん
23/01/07 00:03:23.95 14znWkOG0.net
まぁ、あっても使わなきゃいいだけなんじゃね
C++のような機能性とJavaのような読みやすさを両立してるってことで
220:デフォルトの名無しさん
23/01/07 01:49:54.46 YilgzCe20.net
C#ってUnityのせい(おかげ?)で簡単みたいに言われている気がしなくもないけど
まともに使える人は案外少ない印象
そりゃC++とかよりは簡単だろうけど
いきなりスラスラ組めるようになった奴はセンスあると思う
221:デフォルトの名無しさん (ワッチョイ 99a7-DWwd)
23/01/07 10:59:31.87 r7mle/Qh0.net
それはC#に限らずオブジェクト指向全般に言える話
最初は誰でも手続きぐちゃぐちゃプログラミングになるからな
222:デフォルトの名無しさん
23/01/07 22:36:09.82 pHfLuIJC0.net
C#の言語仕様を拡張してどんどん便利にしても.NETが旧態依然のままでぜんぜん便利にならないから誰も.NETで開発しようなんて思わないんだよな
MSはいい加減.NETそのものやライブラリにお金をかけるべきだわ不便だから誰も使わなくてハウツーやナレッジも少ないからエコシステムが構築されずどんどんC#の人気が落ちてる
JS(TS)やPythonが人気なのはスクリプトだからとか簡単だからとかじゃなくて便利で高機能なパッケージ(ライブラリ)が無料で腐るほどあって人気があるからハウツーやナレッジも豊富でエコシステムが構築されてものすごく良い循環してるからなわけよ
とりあえずいい加減P/Invokeは廃止してMS自らがラッパー提供しろって話なんよなぜ未だにC#でGlobal HookなんかのOSのAPIにアクセスするのにP/Invokeが必要なのかそもそもこれがおかしいと思わんのかな
P/InvokeなんてC/C++理解できんやつには使えるわけがないんだがMAUIとかBlazorとかフロントエンドばかり小手先の改良加えるだけでぜんぜんやる気ないだろそりゃAndroidアプリに頼るしかなくなるわな
223:デフォルトの名無しさん
23/01/08 01:34:28.04 TcqU+QzpM.net
その認識は間違ってると思うが…
224:デフォルトの名無しさん
23/01/08 02:43:36.44 FOdy7Dic0.net
またランタイムに相当するやつを別にインストールする必要があるのかってところが猛烈にダサいよね
巨大exeの配布とどっちが良いかみたいな時代と逆行した昔話を思い出すよ
結局昔のようにMS主導で強制されるまでは誰も積極的に使わないだろう
225:デフォルトの名無しさん
23/01/08 09:40:34.44 TcqU+QzpM.net
C#は実際のアクティブユーザー数は少ない
プログラムが趣味ですと言ってる人の中でC#使ってる人の割合が少ないと言う感覚
更にガチ勢の割合が少ない
当初.netのライブラリが充実していた(GUI除く)ので一般人はOSSやサードパーティー製をなかなか使わない風土になってる
それで開発が少ないしされてもすぐ放置される
jsonライブラリも標準が出てしまった
ユーザーはライブラリ開発しないで提供されるのを待つだけ
ガチ勢が育たない
jsは唯一のwebブラウザ向け言語なのに素では開発しづらいから便利なライブラリが開発され続けてる
ライブラリのみでなくjs自体にトランスパイルされる言語が複数開発されてる
一方C#じゃなければ実現できないことはないから積極的に開発されない
C#の人気が落ちてると感じるのは相対的に他の言語の魅力が上がってるから
と言うより20年使ってたけどC#はホビーユースが中心にもかかわらずMS以外でそんなにC#は重要視されてた時代はない
C#は基本的に想定した以外のAPIは放置されてる
GlobalHookなどは馬鹿避けで馬鹿に触らせると問題が起こるので機能を提供してないものと思われる
226:デフォルトの名無しさん
23/01/08 09:47:03.48 RamX2q3K0.net
ほらMAUI君のキチガイムーブのせいでこんなことになってる
227:デフォルトの名無しさん
23/01/08 09:48:03.50 TcqU+QzpM.net
>>219
こいつがMAUI君なのか?
228:デフォルトの名無しさん
23/01/08 09:56:44.66 QVI3ZNoXM.net
騒ぎに便乗している愉快犯だろうが主張が滅茶苦茶
229:デフォルトの名無しさん
23/01/08 10:06:02.24 T7l3+Pw00.net
ヤベぇ奴が2連発
230:デフォルトの名無しさん
23/01/08 10:09:17.22 TcqU+QzpM.net
C#は外部ライブラリがあまり開発されてない
純正志向が強い
js,Pythonなどは区別なく使われてる
Rustは標準ライブラリも外部ライブラリ向けに実装部分を差し替えられるように提供されてたりする
コミュニティ提供のrust入門書でも外部の乱数ライブラリを使ってる
.netは純正主義
231:デフォルトの名無しさん
23/01/08 10:32:30.16 +xzWagUM0.net
>>227
たしかに.NETの標準ライブラリで何でも出来すぎてOSSが盛んにならないってのはあると思う
ただサイシャープの河合社長だったり有用なOSSライブラリを作ってる人はかなりいる
みんな知らないだけ
232:デフォルトの名無しさん
23/01/08 10:34:46.44 +xzWagUM0.net
まさか標準ライブラリの充実がOSSの足枷になってるとはね
たしかに言語仕様的にゴミカスなJSやPythonがこんだけOSSで流行ってるって言うのは割と関係あるな
233:デフォルトの名無しさん
23/01/08 10:56:45.19 cWCXtcgI0.net
仕事で使うなら標準が充実してる環境の方がいい
234:デフォルトの名無しさん
23/01/08 11:11:28.09 +xzWagUM0.net
>>230
まぁバージョンが新しい古いとかで動かないとかかなりあるしね
Node.jsなんてそんな感じのグチかなり聞くわ
Sysmem.Text.JsonもNewtonsoft.Jsonのアプデ頻度が高いからしゃーなしに開発されたものらしい
235:デフォルトの名無しさん (オイコラミネオ MM5d-DSRP)
23/01/08 14:49:48.54 TcqU+QzpM.net
それに .net standardとかPLCとかの問題で非常にライブラリ開発がつらい時期があった
ふざけるなと思ってる人も多かったはず
236:デフォルトの名無しさん
23/01/08 21:24:57.31 vR0OTCC7d.net
Pythonなんてライブラリのバージョンや本体のバージョンで動かなくなるのでうんざりする
237:デフォルトの名無しさん
23/01/08 21:52:10.63 PmW37SD40.net
それはPythonに限らんよReactもFlutterもViteもなんでもそうだ
ちゃんとパッケージを管理できてないお前のスキルが低いだけ
238:デフォルトの名無しさん
23/01/08 22:19:24.54 vR0OTCC7d.net
>>234
そういうレベルじゃない
ライブラリ同士の整合性問題がC#の比較じゃない
そもそも比較がC#なのに何で他のを持ち出すんだ?
頭悪そう
239:デフォルトの名無しさん
23/01/08 22:37:24.96 fqXaATjG0.net
>>235
ここのスレタイ確認しろよ
Pythonを例に挙げている時点でお前も頭悪いよ
240:デフォルトの名無しさん
23/01/08 22:51:16.76 Qur7Wt30M.net
>>235
わかる
あれひどいよな
ものすごくメジャーライブラリでもPythonのバージョン上がると動かなくなって修正に半年とか普通にかかる
リリースされて半年~1年は実質ベータ期間
241:デフォルトの名無しさん
23/01/09 00:01:38.16 2yNmR2Eh0.net
他人に期待しても無駄だから安定してるの使えばいいのよ
俺もC#はpowershellとも連携させるから基本OS標準に入ってるバージョンの機能しか使わないし
242:デフォルトの名無しさん
23/01/09 16:28:59.82 CwlhWpkE0.net
ライセンス気にせずにExcel操作ライブラリ使うなら、読み取りはExcelDataReader、書き込みはClosedXMLがいいのかね?
EPPlusは商用ライセンス高すぎて使えないわ
243:デフォルトの名無しさん
23/01/09 17:37:32.83 vMc2E6cN0.net
SpreadsheetLightってのもある
あと知ってるかもしれんがEPPlusはv4系までは商用でもフリーだぞ
net standard2.0だから今後しばらくは問題ないと思う
244:デフォルトの名無しさん
23/01/11 11:19:45.11 6xJiw1N1a.net
単純な真理
馬鹿でも使えるようにすると馬鹿しか使わなくなる
245:デフォルトの名無しさん (ワッチョイ 99a7-DWwd)
23/01/11 12:26:53.93 mTSuB4YT0.net
>>241
HTML
はい論破
246:デフォルトの名無しさん (ササクッテロリ Sp4d-1ccR)
23/01/11 12:30:24.34 9UsnsdsEp.net
あれ言語?
レイアウト用のスクリプトじゃね?
247:デフォルトの名無しさん (ワッチョイ 2bbb-Jp3v)
23/01/11 12:31:26.63 xxqhJq0+0.net
>>241
5chのことかぁぁぁ!
248:デフォルトの名無しさん
23/01/12 00:35:27.24 1+V28XvP0.net
winformsってみんな普通に使ってるし自分も時々使ってるけどこれといったテキスト売ってないよね
みんななんとなくで習得してる
それでもなんとかなるほど学習コストが低いってことなのかな
249:デフォルトの名無しさん
23/01/12 00:39:53.96 Ae6OSc1r0.net
visualstudio使えば、割と簡単とは思うけど
GUI的な考えが分からない奴は結局ちょっと複雑になると作れないんだよなぁ
UI thread的な考えが理解出来ないとUI thread以外でUI操作しようとしたりするしw
250:デフォルトの名無しさん
23/01/12 01:42:03.27 9BD/EtRG0.net
>>245
比較対象がWPFなら簡単過ぎるぐらいだな
251:デフォルトの名無しさん
23/01/13 04:09:28.41 i9/MSi6dM.net
まあアレは直感的にわかりますし……
WPFの方が調べても全然出てこなくて困る、書籍も少ないし
252:デフォルトの名無しさん
23/01/13 06:37:45.03 CqT5d+dn0.net
① if ((choice == 2 && player == 2) || (choice == 3 && player == 1))
② if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX)
③ board[xpos][num[xpos]++] = player;
④ for (x = 0, y = ypos, n = 0; x < XMAX; x++)
⑤ for (x = xpos, y = 0, n = 0; y <= ypos; y++)
⑥ for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++)
⑦ for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++)
⑧ for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--)
⑨ for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
253:デフォルトの名無しさん
23/01/13 06:54:01.37 QZjdOIAl0.net
何がわからんのかわからん
課題なら先生に聞け
あーChatGPTなら教えてくれるかもな
254:デフォルトの名無しさん
23/01/13 09:13:03.94 CqT5d+dn0.net
例えば①だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。
255:デフォルトの名無しさん
23/01/13 09:19:57.40 ohfi5XtE0.net
ベン図でも描けば?
256:デフォルトの名無しさん
23/01/13 09:21:26.34 r1OLO4Qgp.net
マジックナンバーイクナイ
257:デフォルトの名無しさん
23/01/13 09:25:11.90 QZjdOIAl0.net
>>251
それなら俺らもそれ以上はわからんぞ
変数名をちゃんと意味あるものにしてやって >>253 が言うようにマジックナンバーをなくすと読めるようになる
258:デフォルトの名無しさん
23/01/13 10:43:33.37 g8ppNh/ZM.net
>>249
いますかの答えとしてはいない
書いてるコード断片にはアルゴリズムもなにもない
それにこれ多分Cだろ
ここは C#と言う別言語のスレなのですれ違い
これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる
player1 と player2が対戦して boardが合ってXMAXとYAMXのボード幅ではみ出し判定してる
計算もアルゴリズムも何も感じられない
その前にさあIDEの使い方覚えて一行ずつ動かして何が起こってるか見てみたらいい
初心者の間は状態などを紙にでも書かないと多分わからないよ
259:デフォルトの名無しさん
23/01/13 10:54:17.50 +TkXA4uqa.net
マルチで Google Drive のリンクまで晒してるけど
学校名も個人名もばれるから落第だな
下手したら退学
260:デフォルトの名無しさん
23/01/13 11:24:47.04 2CVvZRFNd.net
ちゃんと対象言語のスレで聞いてりゃまだ可愛げがあるけど
他言語やVSCodeのスレとかにまでマルチポストだからげんなりするわ
261:デフォルトの名無しさん (ブーイモ MM4b-mEot)
23/01/13 11:42:28.12 Qkt7plGTM.net
半期やってこれがわからないような学生に今どきCを教える大学って終わってるな
262:デフォルトの名無しさん (ワッチョイ b101-tb1I)
23/01/13 12:02:36.51 CqT5d+dn0.net
>>255
ありがとうございます、スレ違いで申し訳ありません。
>>"これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる"
例えばどの条件文、関数からこれを読み取れたのですか?
263:デフォルトの名無しさん
23/01/13 12:09:39.59 g8ppNh/ZM.net
マルチなのか相手して損した
にしてもやる気がない人にはこのレベルはちょっと難しいんだろうなとも思う
二次元配列とボードがイメージとして直結してなくてx、yで盤面の位置を指してることが理解できれば変わるだろうけど
264:デフォルトの名無しさん
23/01/13 12:10:56.40 g8ppNh/ZM.net
リロードしてなかったから書き込みが見えてなかったけど
スレ違いなのでもうレスしない
265:デフォルトの名無しさん
23/01/13 12:11:52.99 w4pCcfcAM.net
わかんない人をわからせるのは
短文投稿サイトでは難儀なので
元々の問題文を貼ってくれれば
正確な回答をもらえると思いま
す
266:デフォルトの名無しさん
23/01/13 12:13:53.39 g8ppNh/ZM.net
>>262
こら!
スレ違いなので答えてはいけないしどうも他のスレでは張ってあるらしし
267:デフォルトの名無しさん
23/01/13 12:42:09.38 2CVvZRFNd.net
5スレマルチポスト
他所でも警告してやって
URLリンク(hissi.org)
URLリンク(hissi.org)
268:デフォルトの名無しさん (ブーイモ MM4b-IdlF)
23/01/13 22:44:16.91 UM8Nby1DM.net
データテーブルの列名が日本語になってるデータベースと、C#コードを連携します。
データテーブルのデータを保持するクラスを定義する際、同じようにして日本語を使ってフィールドを定義すれば対応関係がよくわかるのですが、英語やローマ字で定義したほうが良いでしょうか。
269:デフォルトの名無しさん (ワッチョイ b101-fx7m)
23/01/13 22:59:24.65 QrXHZOLk0.net
今開発してるのがまさ
270:に日本語カラムばかりなんだけどめっちゃ楽だぞ ソースコード内でもカラムを示す箇所が視覚的にわかりやすいしインテリセンスでも埋もれない カルチャー的に受け付けない人はいるだろうけど使ってみると考えも変わる
271:デフォルトの名無しさん
23/01/13 23:52:57.11 N2c+mgjH0.net
過去に行政の税システムのソースを見たら変数名が日本語だった。メーカーのPMに「日本語なんすね」と言ったら「間違いを無くすにはもうこれしかないんです」と言っていた。
税の用語は難しく数が多くて計算は複雑で、もし間違えたら記者会見して新聞記事になる。こういう対象にはそれに適した手段を用いるのが肝要だと思った。
272:デフォルトの名無しさん
23/01/14 00:37:39.38 ISrlGbh20.net
nameof使えるし日本語フィールド名で良いんじゃない
273:デフォルトの名無しさん
23/01/14 03:37:58.98 xHYJkNGt0.net
>>266
レスありがとうございます。
>インテリセンスでも埋もれない
インスタンス名に続けて、ドットを打ったらインテリセンスで日本語名フィールドが表示されるのですね。
row_日本語の列名 みたいにしてなにか最初にアルファベットで列名に関与していることを示してみようかと思っています。
フィールドでは無意味かな。
でも、クラス名が日本語の場合は、model_日本語名 みたいな感じで最初にアルファベットをつけておくと、
インスタンス化のときにnewによるコンストラクタの呼び出しが便利かもと思っています。
>>267
たしかに。間違いはなくなりそう。日本語から英語に訳すのに時間がとられるし、それで対応関係がわからなくなってしまったら、
まったく無意味ですよね。
私も、日本語でやってみたいと思います。
>>268
URLリンク(atmarkit.itmedia.co.jp) によると、
>nameof演算子を使うと、名前空間/型/メソッド/プロパティ/変数などの単純な名前(=名前空間やクラス名などで修飾されていない名前)の文字列が取得できる。
でも、何の役に立つのかピンとこない。
日本語フィールドとどう関係があるの?
274:デフォルトの名無しさん
23/01/14 05:06:37.76 XX64qgVXH.net
ひょっとしていまだにDataTable/DataSetを使ってるとか、生のDataReaderでレコードを取り出して1項目ずつフィールドに転記するつもりなんだろうか
EntityFrameworkなりDapperなり使わなきゃだめだよ
DapperでSQLを手書きする前提なら、nameofを使ってこんな感じ
public class T_テーブル1 {
public string カラム1 { get; set; }
public string カラム2 { get; set; }
public string カラム3 { get; set; }
}
var sql1 = $"SELECT * FROM {nameof(T_テーブル1)} WHERE {nameof(T_テーブル1.カラム1)}=@val";
T_テーブル1? rec = connection.QueryFirstOrDefault<T_テーブル1>(sql, new { val = "aaa" });
string sql2 = $"INSERT INTO {nameof(T_テーブル1)}"
+ $"({nameof(T_テーブル1.カラム1)}, {nameof(T_テーブル1.カラム2)},{nameof(T_テーブル1.カラム3)})"
+ $"VALUES(@{nameof(T_テーブル1.カラム1)}, @{nameof(T_テーブル1.カラム2)}, @{nameof(T_テーブル1.カラム3)})"
connection.Execute(sql2, rec);
個人的にはクラス名(テーブル名)・プロパティ名(カラム名)については
たとえC#の命名規約に反しようと全角半角・英大文字小文字含めDB定義通りにして
SQL文組み立てにフル活用できるようにする
275:デフォルトの名無しさん
23/01/14 08:03:33.86 YVgT972+0.net
テーブル1とテーブル2で同じカラム名があるとダルそうですね
276:デフォルトの名無しさん
23/01/14 11:14:54.89 1tybvzL1d.net
テーブル名やカラム名そのままならたぶん大丈夫だとは思うけど
カッコ系や「・」なんかの全角記号がほとんど使えないのは一応注意を
277:デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
23/01/14 14:27:07.61 xHYJkNGt0.net
>>270
レスありがとうございます。
お察しの通り、datareaderをforでぐるぐる回しながら、エンティティにデータ格納しようとしています。
ほとんどストアドプロシジャによる処理手順があり、これを実行した結果をC#で扱いたいんです。
ストアドプロシジャがあるのにEFを使う話は書籍にも見られません。
Dapperは全く勉強したことないので全然知りませんでした。
でも、そうやってnameofを使うわけなのですね。
優位性や適応についても知りたくなりました。
278:デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
23/01/14 14:30:25.35 xHYJkNGt0.net
>>271
同じ名前のフィールドができるからですか?
でも異なるタイプのエンティティなら問題ないのかなと思います。
>>272
ありがとうございます。
気をつけます。
279:デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
23/01/14 14:40:51.64 xHYJkNGt0.net
>>273
>でも、そうやってnameofを使うわけなのですね。
文字列内(今回はSQL文)に、クラスのフィールド名を組み込みたいときに使うと良いということがよくわかりました。
すると、その場合、クラス名、フィールド名は、データベースの列名に一致させておくことが必須ですね。
どうもありがとうございます。
280:デフォルトの名無しさん
23/01/14 21:37:09.12 JGEy8Mb7H.net
ちょっとまって、フィールド名とカラム名を一致させるのはnameofのためじゃなくて
EFやDapperでもって取得したレコードや更新値を全レコード/全カラム自動マッピングさせるためだよ
いまどき手動でDataReaderから1項目ずつ値転記したりDbCommand/DbParameterをいちいち指定したりなんて
もはや許されない前時代的老害コーディングだからやっちゃだめ
あとEFでのストアド実行ならふつうにSqlQuery()とかの生クエリで出来ると思う
281:デフォルトの名無しさん
23/01/14 23:34:32.45 v+aDVA7Ga.net
SQL 文を組み立てるのは、数十年前のやり方
Ruby on Rails では、1対1・1対多・多対多など、表同士の関連を定義する
282:デフォルトの名無しさん (ワッチョイ cd35-5Koo)
23/01/15 00:10:03.35 GqZOBUMQ0.net
HttpClientでPostAsyncするときにユーザーエージェントを指定したい時はDefaultHeadersをいじるしかないのでしょうか。
それをするとマルチスレッドで同時に別のユーザーエージェントで送りたいときに独自で排他制御しないといけない気がします。
かと言ってSendAsyncを使うと今度はContent-Typeをapplication/x-www-form-urlencodedにしたくても勝手に後ろに文字コードの;uft-8などが付いてきて困っています。
283:デフォルトの名無しさん (ワッチョイ cd35-5Koo)
23/01/15 00:11:09.01 GqZOBUMQ0.net
記載し忘れましたがHttpClientはひとつのオブジェクトを用意して同時に使います。
284:デフォルトの名無しさん
23/01/15 00:44:00.15 pBiKKGenM.net
WebRequest、WebClient、ServicePoint は廃止されている
[アーティクル]
2023/01/05
URLリンク(learn.microsoft.com)
> WebRequest、WebClient、ServicePoint の各クラスは古い形式としてマークされており、コンパイル時に SYSLIB0014 警告が生成されます。
285:デフォルトの名無しさん
23/01/15 00:45:46.03 pBiKKGenM.net
勘違いして全然違うのを投入した
286:デフォルトの名無しさん
23/01/15 00:56:53.85 AxXMsEIz0.net
FormUrlEncodedContentを持ったHttpRequestMessageをSendAsyncでPOSTしても
Content-Type: application/x-www-form-urlencoded
だけだったけど
.NET7, .NET Fx 4.8両方で
287:デフォルトの名無しさん
23/01/15 01:00:32.76 GqZOBUMQ0.net
すみません、また記載し忘れていましたがFormUrlEncodedConentを使用すると文字コードをShiftJISにしたいのですができず困っています。
あとはまだ試してしないのですがスペースが%20になってしまうとのことでそちらについても都合が悪いです。
288:デフォルトの名無しさん
23/01/15 01:01:36.57 GqZOBUMQ0.net
%20ではなく+です
289:デフォルトの名無しさん
23/01/15 01:08:45.78 GqZOBUMQ0.net
HttpContentというクラスを独自にはせいさせるとできるかもしれないです
明日ためしてみます
290:デフォルトの名無しさん
23/01/15 01:18:15.52 AxXMsEIz0.net
URLリンク(stackoverflow.com)
HttpContentから派生じゃなくてByteArrayContentを直に使えばいいらしいよ
291:デフォルトの名無しさん
23/01/15 01:20:48.86 GqZOBUMQ0.net
ByteArrayも試したのですが何かしらの問題があったような気が…
すみません、明日さいど確認してみます
292:デフォルトの名無しさん
23/01/15 01:23:56.33 R4vpna1L0.net
仕事かな
293:デフォルトの名無しさん (オイコラミネオ MMe5-7DGa)
23/01/15 01:41:17.79 pBiKKGenM.net
HttpClientのサードパーティー製をNugetで探すと上位の方にかなりパンチの効いたのが出てくる
294:デフォルトの名無しさん
23/01/15 02:02:46.64 C2q54ZnWd.net
>>277
業務を知らないRuby馬鹿
295:デフォルトの名無しさん
23/01/15 05:17:18.02 14wHoUoo0.net
>>276
ありがとうございます。
EFもかなり発展しているということなのですね。
以前はまだ未完成みたいな感じだったので、利用を躊躇しておりました。
ストアドの実行もEFでやってみたいと思います。
ただEFについては勉強が必要なので、少し時間がかかりそうです。
DataReaderはVBのときからやっているので、やっぱりいじり方がわかりやすいんですね。
>>277
表同士の結合は、ストアドプロシージャでやっては今の時代はダメなんですかね。
296:デフォルトの名無しさん
23/01/15 05:21:23.11 14wHoUoo0.net
>>291
いちおう、ドメイン駆動設計なども学びはしました。
リポジトリ、モデル、アプリケーション、プレゼンに分けて構築しています。
でも、効率が良さそうなのはわかりますが、EFとかはどうも苦手意識があって。
いつか、慣れていく必要がありそうだとは思っています。
297:デフォルトの名無しさん
23/01/15 05:25:16.63 I1C/y1wm0.net
DB畑なら特定の環境に依存する中途半端なことするより普通にSQL文使うのを選ぶと思うけど
298:277
23/01/15 05:54:23.73 r5uLxMWea.net
Ruby on Rails では、各データベース(DB)の方言に依存しないように、
O/R マッパーで、3大DB のSQLite, PostgreSQL, MySQL を使う
多くはPostgreSQLだから、AWS Aurora とも互換性ある
O/R マッパーを使わないと、各列の型も異なる
299:デフォルトの名無しさん
23/01/15 09:53:02.70 BFqmBeHGd.net
>>291
いきなりRailsを持ち出す奴は構ってはいけない
この板の鉄則
300:デフォルトの名無しさん
23/01/15 11:50:48.71 AgwxnFRxM.net
>>292
リポジトリのインターフェースがきちんと定義されててDBの実装に依存する部分が全てリポジトリの実装クラス側に隠蔽されてるなら中身は好きにすりゃ良い
後でリファクタリングするのも大した手間じゃない
リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装は依存性を分離できてないから基本的には良くない設計
(良くない設計だけど開発効率を重視して採用することはある)
301:デフォルトの名無しさん
23/01/15 13:38:07.36 GqZOBUMQ0.net
ByteArrayContentの件ですが、ほかのヘッダーと同様にHttpRequestMessage.Headers プロパティでContent-Typeを設定していましたが、これではContent-Typeだけリクエスト文に現れませんでした。
しかし、ByteArrayContentのHttpContentHeaders.ContentType プロパティに設定することで無事、目的のContent-Typeが送信されるようになりました。
ご協力ありがとうございました。
302:デフォルトの名無しさん
23/01/15 17:02:40.66 pBiKKGenM.net
おもしろhttpclient代替ライブラリの出番はなかったと
残念
303:デフォルトの名無しさん
23/01/15 17:03:22.46 i8CV0envM.net
>>296
>リポジトリのインターフェースがきちんと定義されてて
データベースなどの入れ替えに対応させるためですね。
>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装
これはいまいちピンとこないです。
どういう問題を持っているのですか。
304:デフォルトの名無しさん
23/01/15 17:27:16.78 pBiKKGenM.net
動かない時点で問題だろ
依存を切ってるはずなのに
305:デフォルトの名無しさん (ブーイモ MMde-fQuj)
23/01/15 18:01:55.48 i8CV0envM.net
>>299について、>>300さんへ
言い方がまずかったです。
>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装
これがどういう実装になってるのかなと。
リポジトリから返される型とは、モデルクラスでしょう。エンティティのことだと思います。
この型の名前を変えるとは、モデルクラスの名を変えるということですかね。
単純にかんがえると、コンパイル段階でエラーになると思います。
SQL文も動かなくなるとは、リポジトリがエンティティを受け入れる段階をいうのかな。
でも、リポジトリの永続化メソッドの引数の型と、エンティティの型が合わないという話なら、やはりコンパイルでエラーになる。
こういう話ではないのかな?
306:デフォルトの名無しさん (ブーイモ MMde-laSj)
23/01/15 18:44:05.72 Tpvfm3sDM.net
>>299
ここにEF使ったリポジトリとSqlCommandやDataReaderを使ったリポジトリの両方を実装してるサンプルであるから見てみるといい
URLリンク(www.shoeisha.co.jp)
>>270が動かなくなる実装の一例
307:デフォルトの名無しさん
23/01/15 19:07:02.30 pBiKKGenM.net
>>301
なんで段落じゃなくて毎回改行してんの?
308:デフォルトの名無しさん
23/01/15 19:07:55.22 IyrCQBsgr.net
>>270が動かなくなるって具体的にどういうこと?
カラムnを実際のテーブルの列名と違う名前にしようとしたとかそういうこと?
309:デフォルトの名無しさん
23/01/15 20:23:54.22 k2EAOSQD0.net
正直、不必要なレベルの過剰な依存性の排除だと思うけどな
もしやるならDBを使わない選択が必要な程の
310:デフォルトの名無しさん
23/01/16 07:18:54.98 3crLqciiM.net
>>276
うーん?
どこかでやらなきゃいけないのを
先延ばしにしただけのような?
俺はその構造になんの意味も感じなかった
なぜなら絶対にどこかで指定する必要があってその場所が変わるだけだから
間に一つ挟んだら取り決めが増えるだけで何も変わらんよ
311:デフォルトの名無しさん
23/01/16 09:06:23.76 15MDnu2bd.net
>>302
>>270はDapperを使ったコードだけどEFやSqlCommandの例とどんな関係が?
312:デフォルトの名無しさん
23/01/17 03:21:23.70 Pa/g9qeO0.net
ASP.NETの勉強を始めました。具体的にはASP.NET MVC5 実践プログラミングって本を使っています。
その中でentity frameworkを使ってdbcontextをうにゃうにゃしてデバッグ実行時にデータベースが制作されるようにしてページに表示して…みたいなことをやりました。
それでmdfファイルってのが出来あがってたのですがそれについて質問です。
これが出来上がったデータベースであって、sqlserverがデータを保存する形式ってのは分かりました。
これつまりC#(entity framework?)サイドからするとsqlserverは別に起動してなくてもデータベース本体だけあれば読み込めるということなんでしょうか。
それとも起動時に勝手に裏でsqlserverが立ち上がってたりするのでしょうか。
一応本の流れにそってSQL Express LocalDB edition 11.0なるものはインストールしています。
すいませんこれまでの開発でmanagement studio経由でいじるとかそれくらいしか経験無いんでよく分かってないです。
厳密にはC#の質問じゃないと思うんですけどよろしくお願いします。
313:デフォルトの名無しさん
23/01/17 03:46:50.51 g2NvLQQ30.net
>>308
すでに立ち上がってるSQLServerと通信する形となります
SQLServerが動いてなかったらもちろん意味を成しません
アプリから処理を呼び出し→SQLServerに接続→SQLServerがmdfファイルを編集
という感じだと思います
314:デフォルトの名無しさん
23/01/17 03:48:48.44 g2NvLQQ30.net
SQLServerは起動しっぱなしですね
応答により電源がついたり消えたりするという形ではないです
315:デフォルトの名無しさん
23/01/17 07:20:20.73 s3m6BVtYM.net
LANケーブル抜けたら?
316:デフォルトの名無しさん
23/01/17 09:30:13.79 mymdZu3lM.net
>>311
差し直しましょう
317:デフォルトの名無しさん
23/01/17 09:37:04.80 FlIYwx2Q0.net
神に祈れば掃除のおばちゃんがエアコンを切らない
318:デフォルトの名無しさん
23/01/17 21:28:25.23 Pa/g9qeO0.net
>>309
ありがとうございました。sqlserverちゃんと起動してるかとか確認しないとだめですね
319:デフォルトの名無しさん
23/01/18 00:09:04.38 hk0QW4ON0.net
あの紫の本かな 現状MVCのテキストってあれくらいしかないよね
ちょこっと読んで放置してたけど読み直すか
320:デフォルトの名無しさん
23/01/18 00:28:03.93 3sYvYO2/0.net
>>314
CompactとかLocalDBとかは常にインスタンスが上がってるような形じゃないけどな
321:デフォルトの名無しさん (ワッチョイ 1579-iekx)
23/01/18 08:28:02.80 rq0JYZ+R0.net
>>312
再接続するプログラムになってるかな?
322:デフォルトの名無しさん (ワッチョイ ca01-FIs7)
23/01/18 08:53:04.91 vYh8JMIk0.net
>>314
( ̄ー ̄)bグッ!
323:デフォルトの名無しさん
23/01/18 11:14:23.74 2vbdQEqi0.net
LANケーブルを指しなおすプログラム?
324:デフォルトの名無しさん
23/01/18 12:06:41.51 wDe6wdJea.net
掃除のおばちゃんを制御するプログラムを弄れ
325:デフォルトの名無しさん
23/01/18 12:18:27.54 LLGrNdcqa.net
再接続というのは物理的に切断されたものが復旧した時に再度コネクションすることだぞここでは
326:デフォルトの名無しさん
23/01/18 12:39:01.52 3lDNp2YJa.net
>>316
そいつらはインプロセスだからある意味呼び出し側が起動してたらLocalDBのプロセスも上がってるってことだが
それ以前にCompactはもう忘れたけどLocalDBはSQL-Serverと同じでDBMSの起動とインスタンスの起動は違うぞ
SqlLocalDB.exe start / stop でインスタンスを起動/停止できる
URLリンク(learn.microsoft.com)
327:デフォルトの名無しさん
23/01/18 13:27:16.30 igIZvBCZ0.net
>応答により電源がついたり消えたりするという形ではないです
ここが分からんw
鯖が物理的に別にあるってことかな
328:デフォルトの名無しさん
23/01/18 14:36:35.17 3sYvYO2/0.net
>>322
LocalDBはインプロセスじゃない
インスタンス事前に起動させて複数プロセスからアクセスとかできなくはない
まあ大概は自動でインスタンス上がるんだが、手動でもできるってだけ
つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの?
329:デフォルトの名無しさん
23/01/18 15:18:33.28 UiCoGtZYd.net
selenium webdriverのC#版の話題ってここでいいですか?
操作対象のdriverオブジェクトから、
Winformsで言う普通のウィンドウハンドル(NativeWindowHandle)を取得したいんですが、driver.CurrentWindowHandleプロパティで得られる値はselenium専用のウィンドウ識別用の文字列のようで使えませんでした。
stackoverflowとか見てもプロセスからタイトル名で探索する、みたいないまいち冴えない方法しか何故か見つかりませんでした。
ブラウザを操作してるのに一意なハンドル情報を得る方法が無いなんて考え難いので、何か方法はあると踏んでるのですが、たどり着きませんでした。上の冴えない方法より洗練された方法があれば教えて下さい。
330:デフォルトの名無しさん
23/01/18 15:20:53.55 Hg1RmCSYa.net
>>324
> LocalDBはインプロセスじゃない
すまん、ボケてたわ
単にリモート接続できないSQL-Serverだったな
> つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの?
DBMSはSQL Server VSS Writerサービス(sqlwriter.exe)の話
インスタンスはリンク先読めばわかる
複数インスタンスとか使ったことないのかな?
331:デフォルトの名無しさん (ワッチョイ 954f-wtyD)
23/01/18 16:15:25.52 /+rmiMsB0.net
>>325
Seleniumはマルチプラットフォームなんで
Windowsローカルの話なんて知らんというのはごく当たり前のように思うが
332:デフォルトの名無しさん (オッペケ Sr6d-2lig)
23/01/18 16:36:04.45 oNP58X/Tr.net
>>325
以前に探して見つからなかった記憶
そのときはやりたいことがウィンドウの最小化ぐらいだったんで
RemoteWebDriver.Manage().Window.Minimize()
を探し出して解決
333:デフォルトの名無しさん (スップ Sdea-dnaz)
23/01/18 20:05:06.38 UiCoGtZYd.net
>>327
>>328
ありがとうございます。参考になりました。
switchto~で何か出来そうな気もしましたが、
いまいち動きが読めないので今回は大人しく冴えない方法を使う事にします。
334:デフォルトの名無しさん (ワッチョイ 292f-EsBK)
23/01/18 20:57:22.30 3sYvYO2/0.net
>>326
WriterをしてDBMSとか言うやつは初めて見たわ
通常の文脈であればDBMSはDBエンジンをメインとした一式で
SQL Serverにおいてはまさにインスタンスなんだが
つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど
シャドウコピーできなくなるからオンラインバックアップ取れないだけで
いわゆるlazy writerみたいなDB Writerと勘違いしてるのかね
335:デフォルトの名無しさん (ワッチョイ a501-ue0x)
23/01/18 21:17:36.32 q1S59c8f0.net
>>330
> つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど
SQL-Server VSS Writer とシャドーコピーサービスは別物だぞ
あとSQL-Serverのインスタンスはプロセスとは関係ない
sqllocaldb create\|c "instance name" [version-number] [-s]
とかで増やすこともできるけど増やしてもプロセスやスレッドは増えないよ
ちなみにOracleでもインスタンスの用語はデータベースファイルセットの意味で使われてる
URLリンク(docs.oracle.com)
336:デフォルトの名無しさん (ワッチョイ 292f-EsBK)
23/01/18 22:36:22.92 3sYvYO2/0.net
>>331
シャドウコピーはOSが提供してる機能のことで、VSS WriterはSQL Serverがそれを使うためのサービスな
>SQL-Serverのインスタンスはプロセスとは関係ない
SQL Serverのインスタンスの実態はsqlserver.exeってプロセスだが?
ローカルDBでも、インスタンスごとにsqlserver.exeってプロセスが動くんだが?
337:デフォルトの名無しさん
23/01/25 14:22:50.07 VgR3j9B70.net
C#のexeやdllはILマシン語にコンパイルされるというのを知りました
でも例えばCのexeはそのCPUに対応するマシン語になりますよね
ですけどC#のexeは一旦JITを通して実行される
この一度通すっていうのをどうやって判断しているんでしょうか
C#のexeをCのexeみたいに直接実行しようとして実行できねーよってならないのはどういう仕組みなんでしょうか
338:デフォルトの名無しさん
23/01/25 14:57:50.37 cPQ/8DlSM.net
C#のexeに「僕に含まれてるデータをJITを通して実行してね」て、CPUに対応するマシン語で書いてあるんじゃね?
339:デフォルトの名無しさん
23/01/25 14:58:14.37 KPuKutaL0.net
>>333
atmarkit.itmedia.co.jp/fdotnet/dotnetwork/index/index.html
古い記事だが基本は変わってない
340:デフォルトの名無しさん
23/01/25 15:01:44.79 UaGoD80Hp.net
8086系は相対ジャンプや相対コールが無かったから
プログラム実行前にアドレス解決しなきゃならないとか
色々前処理が必要だったんだ
その延長で前処理に色々やらせる処理を追加してるなんて
普通にやっているんだよなぁ
341:デフォルトの名無しさん
23/01/25 15:09:07.39 YO+oGQTm0.net
C#が関係なくなっちゃうけど、主要Linux系OSは同じような仕組みで他のCPU用の実行ファイルとかまで動いちゃう
342:デフォルトの名無しさん
23/01/25 16:41:58.38 SH9Oxo2M0.net
VC# datagridviewにて
CurrentCellChangedイベントで選択セルの結果を取得したいと思いました。
(rowfilterなどで変化した場合もとりたいため、clickイベントにしませんでした)
しかし、DBから読み込んだ時点ですぐ発生するイベントにて
System.NullReferenceExceptionがでます。
CurrentCell.Value == null で判断できるのかと思いましたが違うようでした。
データがなかったときに何もしないというコードはどう書くべきなのでしょうか。
今までPHPで簡単なものを作っておりましたが、
コントロールプロパティやイベントが何を返してて、
どう対処するのかが基礎的なものがわかりません。
nullが返ってくるんだから if nullじゃないの?というのが間違ってる...のでしょうか?
URLリンク(ideone.com)
343:デフォルトの名無しさん
23/01/25 17:00:33.96 VgR3j9B70.net
>>335
あーこれは本当に素晴らしい記事でした。ありがとうございました。
windowsローダーとかPEフォーマットとかまーったく知らなかったですね。機械語の塊の実行ファイルをOSが読んでいくくらいにしか思ってませんでした。これやっぱ常識なんですかね。
C#の本読んでも当たり前のようにCLRとか出てきてよくわかんねぇとかなってましたけどこれが前提知識ならそりゃ分からんわってなりました。
344:デフォルトの名無しさん
23/01/25 17:49:01.17 +bDum9h60.net
>>338
他のクラスでも同じだがCurrentCell.Value == nullの前にCurrentCell== nullを判定しないとnullに属するメンバを指定したら存在するはずがないのでエラーになる
if (dgv.CurrentCell== null || dgv.CurrentCell.Value == null)
{
return;
}
345:デフォルトの名無しさん
23/01/25 17:56:26.24 Q2YcVXM80.net
>>338
VSでデバッグ実行したら、例外が出たときにそこで止まって発生した行が表示されるよね
そこでローカルウィンドウとかでどの変数に何が格納されているか確認するといいよ
346:デフォルトの名無しさん
23/01/25 17:59:52.43 SH9Oxo2M0.net
>>340
ありがとうございます!!
>DataGridView.CurrentCell.get が null を返しました
おかげさまでようやく
このエラーメッセージが何を言いたいのか理解できました。
347:デフォルトの名無しさん
23/01/25 18:01:47.91 E6MdhQPL0.net
.NET Frameworkランタイム入れていない
古いWindowsで開くと形式がおかしいとか言われたはず
348:デフォルトの名無しさん
23/01/25 18:03:19.22 SH9Oxo2M0.net
>>341
ありがとうございます!!
いま改めて見たら
dgv.CurrentCellがnull であって
dgv.CurrentCell.value ではなかったです。
この違いにまったく気づいてなく
頭をかかえていました。
349:デフォルトの名無しさん
23/01/25 22:33:14.66 VgR3j9B70.net
datagridviewは本当に色々とめんどくさいよね
起きるイベントの順番とかタイミングとかカオスでバグが出まくる
350:デフォルトの名無しさん
23/01/26 01:02:50.84 41WP6aJtd.net
>>345
お前が馬鹿なだけ
351:デフォルトの名無しさん
23/01/26 22:49:39.84 lq03KzKz0.net
多分なんちゃらview全般に言えるのでは
352:デフォルトの名無しさん
23/01/27 17:54:28.03 taOXdrfWM.net
別に変なことしたくねーのに
変なことしたいでしょ?
って前提で作られててな
353:微妙なイベントの順番をハンドリングしないと普通のことも できないのは正直クソだと思う
354:デフォルトの名無しさん
23/01/28 13:20:46.28 I9B5TSew0.net
シンプルなテーブルを作るにあたりDataGridViewとListViewどっち使うか毎度悩む
そしてこいつらは行や列の結合セルを作れない事に気付いてTableLayoutPanelに移行しようとするもこっちはこっちでデータとのバインディングが面倒で断念
最終的にはただのControlクラスを継承したまっさらな白紙にOnPaintで自力描画する事に落ち着くのである
355:デフォルトの名無しさん
23/01/28 14:52:36.43 iXjFLTNM0.net
null 許容参照型について教えて下さい。
class Person
{
// null 非許容だと警告が表示されるので、null 許容にしています。
public string? Name { get; set; }
}
上記のケースで、null 非許容のまま警告を回避する為に、プロパティ宣言時に、下記のようにしようと考えています。
public string Name { get; set; } = string.Empty;
ただ、Name プロパティを参照する時に求める要件は「null でない事」ではなく「人名が代入されている事」なので、
string.Empty で null 警告を回避しても、string.Empty は人名ではない為、意味がありません。
この場合、Name を参照する側では、
if ( person.Name != null )
をチェックするか
if ( person.Name != string.Empty )
をチェックするかが変わるだけで、null 許容参照型にするメリットを感じないのですが、メリットはあるのでしょうか?
356:デフォルトの名無しさん
23/01/28 15:02:12.75 acHVjvs20.net
ケースによるが、コンストラクタを用意して
public Person(string name)
{
Name=name;
}
357:デフォルトの名無しさん
23/01/28 15:03:19.66 acHVjvs20.net
とやって、全てのオブジェクトには名前があるように保証できるようにするのが俺のやり方だわ
358:デフォルトの名無しさん
23/01/28 16:32:58.07 SSo2rJoBd.net
>>349
結合セルもできないのか
そういうの考えるともう枯れたHTMLで画面作る方が楽だなーって思う
359:デフォルトの名無しさん
23/01/28 16:37:13.72 qgiHv5Wf0.net
>>350
空文字は許容されてなくてnull関連の演算子も使わないならどっちでもいいんじゃね
360:デフォルトの名無しさん
23/01/28 18:21:00.62 DKSWYQK4a.net
>>350
null許容の場合は空文字とnull両方を考慮しないといけないだろう
361:デフォルトの名無しさん
23/01/29 06:55:37.48 Tvr/A6EZa.net
>>349
WPFでやれば楽よ
362:デフォルトの名無しさん
23/01/29 10:10:30.46 Bt1+Pj/S0.net
>>349
個人開発なら構わんが、会社でそういう糞コントロール作るなよ
保守するのが面倒くさい
363:デフォルトの名無しさん
23/01/29 10:26:49.48 tvJJpmA20.net
>>349
最近気づいたけど
セルの変更しないなら
いっそピクチャーボックスもあり
スクロール制御しないと駄目だけど
364:デフォルトの名無しさん
23/01/29 11:24:21.80 1KUwXnGJ0.net
大昔からString.IsNullOrWhiteSpaceでチェックしていたから気にしたことなかったわ
365:デフォルトの名無しさん
23/01/30 22:17:23.47 4W3kbClF0.net
JsonSerializerでdynamic型の配列に異なる型のオブジェクトを混在させたのもをSerializeしてからDeserializeするときに型を復元するにはどうすればよいでしょうか。
366:デフォルトの名無しさん
23/01/30 22:26:24.35 rXBejGf/a.net
キャスト
367:デフォルトの名無しさん
23/01/30 23:02:54.21 4W3kbClF0.net
キャストする型が不定なので保持しておきたいのですがそのような機能はないでしょうか。
参照関係はメタデータとして保持できるのですが…
なければ独自で型情報を保持するしかないと思うのですが、List<Hoge>のような型が存在する場合にGetType().Nameを読み取ってもList`1のような謎の文字列になってしまい…
368:デフォルトの名無しさん
23/01/30 23:08:33.77 oFd10dGn0.net
普通はtypeofとかisとか使うんじゃね?
369:デフォルトの名無しさん
23/01/30 23:10:20.10 oFd10dGn0.net
object型で何で扱って、typeofとかisとか使ってマッチさせるんじゃねえの?
370:デフォルトの名無しさん
23/01/30 23:12:24.68 4W3kbClF0.net
全てのパターンの型でマッチするものを探すようなコードを実装するということでしょうか。
汎用的なものは難しいですかね
371:デフォルトの名無しさん
23/01/30 23:33:12.81 EKczJlFVa.net
jsonに型情報なんか入ってないからプログラマが型を教えてやるしかねーぞ
入れられるならプロパティとして入れとけ
372:デフォルトの名無しさん
23/01/30 23:41:03.69 4W3kbClF0.net
うーむ…中々難しいのですね。
辞書に色々ごちゃごちゃにぶち込んで一発でシリアル化、一発で逆シリアル化とはいかないですか。
373:デフォルトの名無しさん
23/01/30 23:50:54.82 EKczJlFVa.net
プロがやれば何とかなると思うから依頼してみなよ
さすがに詳しいことをここで聞いたり説明したりするのはめんどいわ
374:デフォルトの名無しさん
23/01/30 23:52:57.23 4W3kbClF0.net
確かになんとかはなるかもしれませんね…
簡単にはいかないのは確か、というところでしょうか。
JsonSerializerが参照情報だけではなく型情報もメタデータとして保持できればよかったのですがね。
375:デフォルトの名無しさん
23/01/30 23:58:17.04 IhW3z+yo0.net
>>367
TypeNameHandling.All
しかしセキュリティリスクがあるからおススメできない
376:デフォルトの名無しさん
23/01/31 09:16:17.88 d4xiAPDr0.net
XMLでよければXmlSerializerがあるがな。
377:デフォルトの名無しさん
23/01/31 19:05:24.58 t9l1A9G+0.net
jsonのと比べてXmlSerializerだと何か良いことがあるのかね
378:デフォルトの名無しさん
23/01/31 21:43:56.67 d4xiAPDr0.net
>>372
型情報を含んでる
379:デフォルトの名無しさん
23/01/31 21:48:53.87 tyybi/5mp.net
型情報あっても、その型を解釈出来なけりゃ意味が無いからなぁ
送り手と受け手で同じ型宣言つかわにゃ
380:デフォルトの名無しさん
23/01/31 22:18:53.12 eUQUkrMna.net
おなじ宣言つかえばいいのでは
381:デフォルトの名無しさん
23/01/31 22:25:35.04 tyybi/5mp.net
作成者が同じとも限らないし、言語が違うとかもあるし
限定的な使い道しか無いんだよなぁ
382:デフォルトの名無しさん
23/01/31 22:37:59.59 JUpN+VeK0.net
何がしたいんだ?
自分も使えないデータを知らない人に渡して活用してもらうのか?
383:デフォルトの名無しさん
23/01/31 22:39:07.69 lNQXIXaf0.net
そもそもどういう理由でJSONを選んだのか
シリアライザも色々あるから、それに適さないデータを無理に扱おうとしても苦労するだけよ
384:デフォルトの名無しさん (ワッチョイ 8335-6BSU)
23/02/01 01:00:31.32 gXlE0Qft0.net
用途→状態保存
なぜ→特になし