ふらっと C#,C♯,C#(初心者用) Part157
レス数が1000を超えています。これ以上書き込みはできません。
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part156
https://mevius.5ch.net/test/read.cgi/tech/1663479569/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured このスレッドは過去ログです。
プレミアム会員に登録すると続きを読めます。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
───────────────────
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 初心者質問で申し訳ないのですが、vsコードで予測変換が出なくて困っています。
調べてみたのですが原因も分らず…if文などの予測変換は出るのですが、gameobjectなどのユニティで使うようなプログラムの予測が出ません。
解決策などあるでしょうか? なんかぶっ壊れてんじゃん?
とかテキトー言ってみる 俺のも(会社PC)そうだわ
オムニシャープ入れたけどダメだった
もうVSでよくね?
どうせIntelliSenseとかVS以下だろ 試しに俺んところでやってみたら、OmniSharpのバックエンドにMono等が選ばれなきゃいけないのに.NET7が選ばれちゃってこうなるみたいだな
試行錯誤しても全然切り替わらないし、ほんとどうすりゃ良いんだろうねこれ・・・・ メディアファイル(特にmkv)のオーディオチャンネルの属性を取得したいって話ですね。
わかりません。 >>10
Unityのコードは特殊な環境だけ動いて普通のC#の環境とは違う
基本的に非対応と言ったほうがいいのかあな >>16
普通にUnityでも.NETの技術使われてるけどな 練習で始めてWPFを使って簡単な時計アプリ作ってみたんだけど
デバッグなしモードだとちゃんと動くのだけれど
デバッグモードで起動するとタイマーが進まなくてウインドウにカーソルを
行ったりきたりさせるとタイマーが変化するんだけどこれって仕様なのかな? デバッグで動いてリリースで動かんのは大抵は初期化漏れだが
逆のパターンはなんだっけ
違うdllをリンクしてるとかか おお、こんな現象があるのか
でも初めてのWPFアプリということで
https://zenn.dev/apterygiformes/books/470ba1042dfbef/viewer/ea10e5
このサイトの時計を同じように作っただけだからそんな複雑なことしてないはずなんだけどな
もう一度コードじっくり確認してみるよ
とりあえずこういった現象があるということを知れてよかったありがとう これはひどい
>アサートは、チェック機能の実行に時間がかかるため、
>デバッグ版にだけ仕込まれており、リリース版では機能しません。
>そのため、リリース版では発生しないように見えているだけで
>不具合がなくなるわけではありません。
知らぬが仏とはよく言ったもので WPFは時計すら満足に作れないんだな
これでいいかな >>18
普通に考えるとビルドしないで直接別のプログラムを走らせてないか?
visual studioの三角押して実行してる?
それかビルド失敗して以前のを動かしてないか?
デバッグの方はマウスenterあたりでタイマー動作が働いてると言うことでそこらへんをミスってる可能性が高い
間違ってなんか別のイベントハンドラを作ってうまく消せないでタイマーハンドラのと混ざっているんだろうなと アサートはデバッグ時に想定した状態になっているか確認する手段で
リリース時にはアプリの挙動に関与しないし >>26
一応メニューの方のビルドやリビルドとか色々試してみたけどダメだった
ビルドは成功してるっぽい
デバッグの方は単にウインドウにマウスオーバーしてもタイマーは動かなくてウインドウ中央上部にある
横棒2本のメニュー開くところにマウスオーバーすると一瞬だけタイマー動く感じですぐ止まる
再度そこからはずしてマウスオーバーするとまた一瞬動く
あとなぜかドラッグでウインドウ動かしまくっててもタイマー動いた
正直初心者の自分にも現状原因まったくわからんからあきらめるわ わかりました二度と我々の前に姿を現わさないでください IList.Item[Int32] Property
public object? this[int index] { get; set; }
object? ってなんですか ? プログラミング初心者は電卓でも作ってろ
→ 数式を評価できるようにしたいんやが、やり方が分からん
→ Roslynってやつがあるやん
→ なんやC#のREPLみたいになりそう
→ VisualStudioに付属してるREPLでええやん、ってなった >>30
null許容参照型でしょ
以前の object 型は null を代入できたけど Null 許容認識コンテキスト だと object には null を代入できないから以前と同じように null を代入したいなら object? にしないといけない
ただしそうすると今度は object を逆参照する時に null でないことを確認するか null でないことが分かっているなら null 免除演算子で警告抑止しないといけない
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/nullable-reference-types >>29
なんで初心者スレでそんな正確悪いこと言うかね ここの住人意味わからんよな
同じC#erなのに優しく接しればいいのに >>33
ここ腐っても技術板だから現象をぐだぐだ書くより最低限の現象が発生するコードを示すなりしないとみんな冷たいよ
初心者と言うのは免罪符にならんし 初心者スレでなに言ってんだと思わなくもないけど、気持ちは分かる。 >>28
面白現象だから保存しておいて別のプロジェクト作ってやり直してみたらいい
そのページ見たら5分でできる内容だからさ
イベントハンドラの記述ミスだろうなあとは思う
プロパティウィンドウのイベントのmouseleftbuttondownとmouseLeaveがすぐ隣なのでそちら関係なんだろうなと 初心者だから甘えさせてっていう人は昭和の人間としては理解できないわ
まあ俺が理解する必要ないんだけどせっかくの伸びる時期を浪費してもったいなくないか? 気に入らないなら優しい奴が優しく答えてやればいい
顔も知らんやつに横から指図したところで時間の無駄 >>37
試しにコードミスの可能性も考えて全部コピペで新しいプロジェクトでやってみたけどデバッグモードどけダメみたい
あと気づいたのがマウスオーバーしなくても10秒くらい待ってたら一瞬だけタイマー動いた
もしかしたら自分の環境だけの現象かもしれない
こんな変な現象に色々付き合ってくれてどうもありがとう > 顔も知らんやつに横から指図したところで時間の無駄
これまたでかいブーメランやなw ソースコードがあるなら貼り付けてみればいいのに
そんなおもしろ現象なら共有の意味も込めて 精度とか使ったタイマーの話が何一つ書かれてないから
アドバイスしようがない >>46
それは>>21のリンク先に書いてあるぞ
まぁ質問者が間違えてる可能性が一番高いにも関わらずコードを出さないから救いようがない 描画だけコケているのか、あるいは計算処理そのものがコケているのか サイトにあるように作った(作れてない)
って話なんだろうなぁ こんな感じ。でも手打ちでダメだったから全部コピペでやってみたんだけどな
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");
};
}
}
} >>50
ぱっと見はコードに気になるところないなぁ
タイマーのプライオリティを上げてみて動きに差が出るようならデバッガーがUIスレッドで忙しくしてるのかも >>50
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.threading.dispatchertimer?view=windowsdesktop-7.0
>タイマーは、時間間隔が発生したときに正確に実行されるとは限りませんが、時間間隔が発生する前に実行されないことが保証されます
UIスレッドが忙しかったらずれるんじゃないの。よくわからんけどw
WindowFormで同じようにUIスレッドの影響受けるSystem.Windows.Forms.Timer使って時計作ったことあるけど気付かなかった >>52
これが正解なんじゃね?
UIスレッドが忙しい、というのは最適化がかからないデバッグだと動かない説明にはなる ゲームセンターのゲームとか、コマ落ち・カクカク・プチフリーズする
1秒間に、30〜60回も処理できない 漏れはパソコンをエコモードにして、使うCPU を1つだけにすると、
ブラウザゲームが、1秒間に1回しか描画されない
セロリンとか、性能が低いCPUでも、そうなる InitializeComponent()より前にnew DispatcherTimer()していいんだろうか >>51
>>52
>>54
これでした!試しにプライオリティをInputにしてみたら期待通りに動いてくれた!
一人でやっていたらずっと気づくことができなかったと思う
色々アドバイスしてくれた人たち本当にありがとうございました UIスレッド忙し過ぎてUIの挙動にも影響出てそうなんだが
プライオリティ弄るよりそっちをどうにかした方が良いと思うぞ デバッグビルドのexeを直接実行した場合と
VSからデバッグ実行した場合で違いが出るようならデバッガーによる影響 ReactiveXが理解できない…
何をやってるのかはわかるんだが具体的にアプリにどう実装すればいいのか検討がつかない…
こういうアプリを作ってみるといいよっみたいな資料とかないだろうか? UIスレッドは軽量になるように非同期を駆使して細心の注意を払ってるわ 久しぶりにC#の世界に戻るかもしれないんだけど、
以前触ってたのはVS2010/Windows 7の時代なんで浦島太郎状態
で、言語の方は自分で調べて差分を埋めようと思うけど、
実行環境というか、以前ならCLRとか.NET Framerowkと呼ばれていたものが
どう変わったのかいまいちよく分からないんですが、その辺サクッと分かる記事とか
どっかにないですかね? >>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で作るべき
これだけ把握しときゃ後は何とかなる .NET5以降はサポート期間が最長でも3年で、ジャパニーズドカタディヴィロップメントでの採用はかなり厳しいことに注意
そして、断言するが、.NET Frameworkは最終的には5以降のCore系の.NETよりも確実に長く生き残る .NET FrameworkはWindows UpdateでOSをアップグレードしたらサポート(インストールすら)されなくなることがあるからサポートが重要ならなおさら新しいバージョンを使うべき >>71
使えてた.NET Framework がアップデートで使えなくなったってこと?
いつそんなことがあった? >>72
過去からの類推じゃなくMSのサイトにそう書いてあるぞ そもそも.NET Frameworkの最終バージョン4.8のサポートが多少長いのは破壊的変更が多いから今のうちに移行しろっていう猶予期間だって察しろよ
今から.NET Frameworkで新規開発始めるのは正気の沙汰じゃないわ 俺が探すんかいw
ググれよ
サポートはOSのポリシー次第って書いてるのが簡単にみつかるから 4.8.1とかになってまだまだ毎月パッチ当たってるし
あと10年はOSにデフォルトで搭載されるっしょ
net core系は今後もデフォルトでは絶対に入らないから
余計にそうなる。
.net4.8と比べ、.net7の方がファイル数もファイルサイズも速度も速くなりますなんてものほぼないし。
だってフレームワークがクロスであることには意味があっても
各人が作る最終制作物をクロスで動かすなんてことはほぼない
わけなんだから >>76
https://learn.microsoft.com/en-us/lifecycle/faq/dotnet-framework#what-is-the-microsoft-lifecycle-policy-for--net-framework-
> 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としてはむしろ最強クラスのコミットメントだよ Windowsがバージョンアップするの知らないやつおるな てか4.8が最終バージョンてとこでどんなボンクラでも後がないんだなーって気づくだろ
マジで気づかないの? でもMSってなかなかレガシーを切れないから、
Windows15くらいまでFramework 4.xも平行して続けてもおかしくない >>69
なるほど。簡潔で分かりやすくて助かります。ありがとう。 .net standardは規格なの?
いつの間にかこの概念を耳にすることがなくなったのでまだよくわからん
.net core以降で開発する時にこいつをどう意識すべきなのかな? >>84
.NET Standardはバージョン2.1で.NET Frameworkを切り捨てたため、事実上の存在意義をほとんど失った
不特定多数向けにNuGetパッケージを開発しているのでない限り、全く気にする必要はない .NETはいつまでたっても未完成品
今後のことも考えて仕方なく使ってる .NETはゲートウェイを指定してHTTPリクエスト送るのがメチャクチャ回りくどくなった
これに限らずリファクタリング版は大抵劣化してるだけのゴミ >>69
最近C#始めたのでこういう情報はありがたい。 だからといってC#の代わりになる言語なんてあるはずもなく… >>85
2.1は意味わからんよなぁ。うちはしばらく2.0でいく。 .NETはサポート期間が短いのが難点
業務アプリならやっぱり.NET Framework 何をサポートしてほしいのか知らんけどバージョンアップすればいいじゃん >>92
まあ.NET Frameworkは少なくとも今後10年のうちにサポートを切られることはないだろうから、仮にリミットを2032年としよう
現在最新のLTSである.NET6で開発したとして、サポート期限は2024年だ
そしてLTSは2年毎にリリースされ、リリースから3年間サポートされる
つまり3年を超えて使い続ける想定であれば2年毎のアップグレードが必要であり、
まず2024年にLTSの.NET8にアップグレードして以後は2026年、2028年、2030年と計4回のアップグレードが必要になる
一方.NET Frameworkを採用していればその間何もしなくてもいいわけだ
技術者として新しいものを使いたい感情は理解するが、これを客に正直に説明すれば客が望むのはどちらか、答えは明白だろう 特に不便が無ければ、枯れた.NET Frameworkの方が安定して動作するからな
.NETにしか無い新しい機能が必須!とかならともかく 自分用のアプリは全部.net framework
新しい機能を試したい場合はcore使う
未完成品のデザイナがまともになれば.NETに全面移行するんだけど
それにAPIに互換性のないものがあるのが困る >>95
放置してようがアクティブに開発してようが、アップグレードの際のコストに大差はない
自社サービスや内製システムのキラキラした話によって、アクティブに継続的な開発が行われているシステムではアップグレードしやすいというようなイメージを持っているかもしれないが、実態は別にそんなことはない
そういった恵まれた環境では、受託と違って自己責任なので場合によってある程度品質を犠牲にする選択がしやすいのと、比較的エンジニアスキルが高く彼らの技術者的感情もが尊重されるから、
結果的にアップグレードに積極的な傾向があるだけだ >>95
不具合や不都合が出るまで
出ないのが一番良いシステムだからな さすがに三年バージョンアップ無しのソフトはオワコン扱いだわ >>101
そもそもコンテンツじゃないからな
産業界などでは何十年前のソフトがずっと動いてるなんてざらだろ
一度作ったソフトが何も問題ないならわざわざフレームワークのアップデートでバージョンアップ版作り直す必要はないわ
MSが頻繁に電卓をアップデートしてるのがおかしい
誰も電卓に期待してない機能をどんどん継ぎ足してる
ほっとくと電卓がexcelになる >>101
ペイントやメモ帳はいつオワコンになるの? ペイントもメモ帳も開発が続いてる
いらない機能を追加し続けてる
MSはアホなのかと
単体で毎回100MB以上ダウンロードさせてる
世界で数億台あるwindowsマシンのリソースや
世界の電気の無駄づかい
MSは自然由来の電力を使っていますと言ってるけど各家庭や職場はそうじゃない >>102
グラフ描画機能おもろいよな
コンバーターもかなり便利だと思う >>107
そんなもんいらないだろ
常識的に考えて使ってるのは0.001%もいない 世界に数人の電卓に関数グラフいるマンがいるから環境が破壊されるw まあ実務で使う業種は少ないかもしれんな
大学とかの勉強とか研究とかではグラフを描きたいときはよくある >>115
> 常識的に考えて使ってるのは0.001%もいない
国語力ないなお前は 国語力ってのはある程度目安になる数字を出してから行ってくんないかなあ
少し数字を変えて80億人もいないとか言っても意味ないのはわかる? そういえば電卓アプリって整数だけで、浮動小数点には対応して無いんだな
アップデートはよ! 目ん玉と頭の中のアップデートが必要か?
普通に小数は扱えるし指数表現もおk
というか関数電卓の機能すらあるのになぜ整数だけだと思った? 違う
三角関数や指数・対数計算などの時の計算モードのこと 電卓はデカすぎ拡大機能はいらないから縮小させろ
クソデカボタンをマウスで押すとでも思ってんのかMSさんは >>122
サイズ変えられると思ったけど一定サイズ以下にはならんのね
確かに大きすぎると言われれば…
スレチがいつもまでも続いてごめんね… webformアプリ抱えてる会社とかこれからどうするのかな
リプレイスするにしてもほぼ再設計になるだろうし どうするもクソも.NET Frameworkを使い続けるだけだよ
.NET Framework のサポートが終了するのが10年先か20年先かはともかく、その頃には既にCore系の.NETもレガシー扱いとなり新しい代替技術が出てきているはず
中途半端なステップを踏む必要はない .netは .NET6すなわち2021年秋ではじめて
広範な人々が.NET Frameworkに変わるものとして提供する
ある程度安定したプラットフォームです、
ってなったばかり。
Core3系ではリプレイスにはなり得なかったし.NET5は
実験もしくはアーリー用といった扱いだったし。
新体制はまだ1年、マイクロソフトの特性から考えて
.net4がOSのプリインストールでなくなるのが最速で2031年あたり
3.5と同じようにnet4依存の実行ファイルの初回実行時に
自動インストールを問うような仕組みが外されるのは
2041年頃だろう。 .NET6が安定と言われるのは.NET統合後最初の長期サポート版だからだよ
.NETは基本的に奇数バージョンがCurrentで登場後に偶数バージョンがLTSCでリリースされることになってる
新機能を早く使って試したいユーザーは毎回更新してもいいけど安定サポートを望むなら偶数バージョンを乗り継いでいく運用が推奨されてる 「アップデートに追従できないなら.NETランタイムのバージョンを固定して塩漬けにしろ。そのために完全なサイドバイサイドとSCDを実現した。」
が.NET5系の互換性に対する基本ポリシーなんで、バージョンが上がる際に.NET Framework よりも気軽に破壊的変更を入れてくるのは確実
Windowsのアップデートに影響されないから本来的には楽になるはずなんだけど、常にセキュリティパッチを当てているかをちゃんと監査してるようなとこではかなり厳しいだろうね .NET6 のサポート期間は3年。
その期間の開始は去年で、終わるのが24年。正式リリースはやっと今。
このサポート期間の短さゆえに .Net Framework4.8 (31年まで)を採用とか、実際にあった話なんけど、なんとかなんないかな。 そこまでバージョンアップを厭うシステムが間違ってるから見直せばいいと思うぞ
君らが必要としてる.NET Frameworkのサポートもバージョンアップという形でサポートするだけだから何も変わらん いや、できることが増えるならまだしも劣化版になんで苦労して移植せなアカンのかってね
結局win32apiで組んでおけばよかったねってのが
結論になっちゃってるダッサ
困る困らないじゃなくてダッサ
そういう裏切りを何度も受けてるこその現状
今の年寄りは平気でじゃあwin32apiでっていうぞ
ちょうどそういう世代だし
バージョンアップしなくていいLinuxで組むってのもやってる
会社で
会議を開いてメリットデメリットを比較のために並べるとどうしてもそういう方法が選択されてしまう
ビジネスだからメリットデメリットを並べてでた結論には逆らえない
なのでc++に戻ってるまである(Linuxでも使えるから)
上の人間はプログラマの都合なんて決定に混ぜない >>132
それはシステムではなく組織構造や契約の問題だからなんとも
ベンダーにとってはスタックの更新は貴重な売上機会だし、不具合出したら責任負わされるから、やるからには大袈裟にしたい
一方で、客からすればそんなことは何の価値もない作業に見えるから、当然なるべく避けたいわけ 現在の最新版(Current)は 7.0.1
長期サポート版(LTS)は 6.0.12
https://i.imgur.com/WzanYc9.png >>135
周辺の人間活動までシステムに含めるのならその通りだが、だとすると君は「間違っているのは俺ではなく世界の方だ」と言っているようなものだ
もはや主張としてなんら意味を持たない単なる厨二病的発言ではないか >>137
単純に君の世界が他の人の世界より狭いとは思わんのかね? ぶっちゃけ今の.NET戦略は失敗してる
出た当時からほぼ完成されていたCOMを進化する方向になぜ行けなかったのか
政治的な問題なのか Googleの存在がなければCOMとActiveXが進化する方向性も僅かにあったかも知らんけど今更な話だな COMを使ったことあれば
> 出た当時からほぼ完成されていたCOM
なんて戯言を言わなくなると思う... MVVMというものについてなのですが、ビューからではなくモデルでプロパティを書き換えた場合にもビューに伝達するようにしたい場合はビューのプロパティもPropertyChangedを実装しないといけないという認識であっていますでしょうか。 いいえ
モデルがプロパティ書き換えたよと言う情報を登録先に投げるので何も変わりません モデルがプロパティを書き換えたよという状況がビュー側に投げられるようにするにはPropertyChangedを呼ばないといけない認識なのすが違いますか? すみません、、「ビューのプロパティもProertyChangedを~」と書いていましたがモデルのプロパティの間違いです。。 ネット上のサンプルはモデルのプロパティがただのプロパティになっているものばかりで謎だったのですがやっぱりモデルもMVVM仕様に設計しないといけないんですよね。。 jsのMVVMフレームワークなどでは対象の変数をフレームワークが書き換えて
自動で通知するようになってる 言語レベルでプロパティに通知機構を入れてもいいはずだけどc#はそうしてない
今プロパティにinitアクセサ入れたけどbindアクセサを入れてもいいはず >>154
このサイトというよりこのページの間違い
PropertyChangedを言語レベルで補助するつもりはなくてコード生成でやってもらう方針と書いてあったから参考になると思って。 >>156
そこはみんなが参考にしてるサイトだからそこだけじゃなく隅々まで全部読むといいぞ みんな隅々まで読んでいてこのページも知ってたってことか
すまねえ… >用途が狭く、言語機能としては採用しにくい
プロパティの変更通知は言うほど用途が狭いかね?
MVVMを推すくらいならそれくらい標準で実装してほしいものだが。 言語レベルでMVVMヘルパー実装しろと前から言われてるけど
実際は微妙な補助機能を数回追加し続けて便利になった便利になったと言い続けてる >>159
C# は GUI 使わないコンソールアプリを作ったりもするからそんな変な言語仕様を入れられても困る
それでなくても最近ちょっとやりすぎなぐらい言語仕様膨らんでるし 言語仕様がふくらみすぎてるのは舵取りする人間がそういう人に変わったからで
C#はかなり学習しにくいゴミ言語になりつつある
一方で本当に需要のあるmvvmヘルパー機能はライブラリなどに投げられて15年 そこは別にライブラリでいいだろ
そしたらVBもF#も使えるし 今のC#のメインストリームは完全にWebに移ってるからね
Webではほとんどイベント使わないし、基本的にデータの流れが一方通行なのでプロパティの変更をモニタする必要がない >今のC#のメインストリームは完全にWeb
MAUIはお遊びですか。 >今のC#のメインストリームは完全にWebに移ってるからね
何年も前からそういうことを言う人を見かけるけど、それを裏付けるまともな統計を見たことがない。 JetBrainsのサーベイか。なるほどありがとう。 >>166
なわけなくね?
Blazor MAUIとか知らんのか?
あれWebアプリそっくりそのままモバイルアプリにできるすぐれものだぞ まぁ最近の世界的な流行りがWeb化してるから仕方ないでしょ
俺は何でもかんでもWebアプリ化するのは嫌いだけどな
Figmaとかもちゃんとしたデスクトップアプリで使いたいわ 言うほどWeb化してるか?
スマホ時代からはむしろWebアプリで良くね?ってレベルのものまで何でもかんでもネイティブアプリ化してるのがめちゃくちゃうざく感じるが Webアプリで良くね?ってレベルのものは実際開発者もそう考えていてWebブラウザを全面に貼り付けてあるだけのものが多く、技術的には完全にWebの一種
MAUI Blazorもまさにそうだね >>172
がんばってる
WinUI3って<ContentPage.BindingContext>ってないんだな
どうやってMVVMすればいいんだ? >>173
スマホはそうかもだけどFigmaのようなそこそこスペックがいりそうなものまでWeb化してる気が、、、 >>174
MAUI BlazorはただのWebとはちょっと違うかな
Blazorを介して直接スマホのネイティブAPI呼び出せるっていうスゲー利点がある
ただこの機能を使わないなら別に普通のWebViewでも良いかなってのは思う。 >>175
WinUI3はコンパイル時バインディングっていうのだけ用意されてるらしいよ >>178
よくわからんけどWindowの中にPageを追加したらPage.DataContextでVVMのBindingできました とりあえずスマホ用の5ch.netからスクレイピングした板一覧をツリー表示させることに成功した
https://github.com/VipperNanashi/5chBrowser
ただ板取得はJsonのほうがいいみたいだからJsonから板を取得する方法を模索中 板一覧ってjsonで取れんの?
datのみだった記憶あるが ぱっと見たけどHttpClientはstatic readonlyで一本永続化したほうが良いよ
稀にしか使わないならまだしも5chブラウザってことならむしろメインオブジェクトだし >>183
クラスってどう分ければいいんだろうか?
板一覧取得サービス、スレッド一覧取得サービス、スレッド取得サービスで分けようとしてたけど
どうがいいんだろ? Ruby on Rails では、データベースの各表の設計・関連ばかりやる
1対1、1対多、多対多など HttpClientを含むネットワーク接続用のクラスを作成してマウイ君の言うところの各サービスクラスのコンストラクタに渡しておくとか? >>173
各社脱獄を目論んでいる
なんでかっていうとgoogleやAppleの気分次第でアプリを修正しなくちゃいけなくて凄く面倒くさいから
amazonはアプリ作るのやめたっぽい
amazonでこうだから他はもっと面倒くさいと思われ
うちも中小だけどあるとき
ふっと動かなくなってるなんてことあって非常に面倒くさい
もう現状でWEBコントロールにWEBページ貼り付けて強引にアプリっぽい挙動してるけど
なんかもうWEBアプリにしちゃおうか?
って話出てる >>187
MAUI Blazorでいいんじゃね?それ? 専ブラか…
15年ぐらい前にWPFで作ってたな
そのせいでWPFにいい思いを持てない
MS死ねって思えた 機能をてんこ盛りにしてもガワがダサいと台無しになるんだよな
優秀なデザイナーおらんかね >>190
フラットデザインならツッコまれない上に最古のieでも動くはず short i;
i = 0; // ok
i = true ? 1 : 0; // コンパイルエラー(キャストが必要)
三項演算子で数値を返す場合って、int固定になってしまうのは言語仕様ということでしょうか? ぁぁ
上記の場合はコンパイルエラーにならないですね。
以下のようにするとエラーになります
short i;
bool hoge = true;
i = 0; // ok
i = true ? 1 : 0; // ok
i = hoge ? 1 : 0; // コンパイルエラー(キャストが必要) 特に明示しない場合、整数リテラルはintになるからってだけなのでは? まず右辺の数字は整数リテラルと言うもの
変数に代入時は整数リテラルは型より大きすぎるなどしてない限り変数と同じ型とみなされる
そうしないと不便だから
次に i = hoge ? 1 : 0;
の右辺は式である
整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
これでキャストが必要
i = true ? 1 : 0;
この右辺はコンパイル時に決定されてるので代入可能
short s = 7000000-6999999;
これも代入可能なのと同じ感覚 >>196
ありがとうございました。理解しました
確かに
const bool hoge = true;
i = hoge ? 1 : 0;
とやってコンパイル時に決定されるようにするとエラーが無くなりました。
けど簡潔に書くための三項演算子なのに
(short)(hoge ? 1 : 0);
とかやると台無しですねぇ むしろ、あえてshortを使う理由の方が気になるな >>196
> 整数リテラルは代入じゃないときは暗黙的にint扱いになるので右辺の式の値の型はintになる
> これでキャストが必要
ほんとか?
short s = b switch { true => 1, false => 2 };
はエラーにならんのだが... >>199
ない、あってもいいのにと思ったけどそもそもshortなんて滅多に使わんことに気づいたわw >>200
それ、varで定義したらintになってるし、右辺がintになるのは本当だな
で、c#のコンパイラ、縮小変換で切り捨てがないことが確認ができたら、暗黙の縮小変換を許可するっぽいな。
ちゃんとした言語仕様確認しないと何とも言えんが
おそらくコンパイル時に解決可能なことが前提条件じゃないかと推察するが 文字列の中の何文字目に日付があるかを調べたいのですが、
日付の書式としては「2023/01/05(木)」といった感じで固定なものの、
日付の数字は当然日によって違ってくるわけなのでContainsだとちょっとうまくいかないです
いい方法はないでしょうか >>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;
} ありがとうございます
参考に(と言うかそのままなのかな?)させてもらいます WinフォームアプリでgroupBoxをタブみたいに切り替えて使おうと、
コントローラを切り替えるコードを書いたのですが、groupBoxを重ねて実行したら
全てのgroupBoxが一番下のgroupBoxの子になってるようで、思うように表示されませんでした。
groupBoxを、一番下のgroupBoxの子にしない方法はありますでしょうか? >>208
・・・.Designer.cs を開くと、自動生成したコードが
一番下のgroupBox.Controls.Add(子のgroupBox)
になってないかな?
だとしたら、デザインモードから子のgroupBoxをフォームに貼り付けるとき、
フォーム直下じゃなく、一番下のgroupBoxに貼り付けてると思う
自分なら、Load のタイミングで、任意のgroupBox.Controls.Add(任意の孫コントロール)
を明示的にコーディングする >>207
Console.Out.WriteLine(str.AsSpan(iStart, dateLength));
確認用のコード消し忘れたからこれは消しといてOK >>200
switch式は左辺参照して型を決める特殊な仕様らしい
int→shortに変えられる詳しい仕様は書かれていないので実装依存になるかも まぁ、あっても使わなきゃいいだけなんじゃね
C++のような機能性とJavaのような読みやすさを両立してるってことで C#ってUnityのせい(おかげ?)で簡単みたいに言われている気がしなくもないけど
まともに使える人は案外少ない印象
そりゃC++とかよりは簡単だろうけど
いきなりスラスラ組めるようになった奴はセンスあると思う それはC#に限らずオブジェクト指向全般に言える話
最初は誰でも手続きぐちゃぐちゃプログラミングになるからな 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アプリに頼るしかなくなるわな またランタイムに相当するやつを別にインストールする必要があるのかってところが猛烈にダサいよね
巨大exeの配布とどっちが良いかみたいな時代と逆行した昔話を思い出すよ
結局昔のようにMS主導で強制されるまでは誰も積極的に使わないだろう C#は実際のアクティブユーザー数は少ない
プログラムが趣味ですと言ってる人の中でC#使ってる人の割合が少ないと言う感覚
更にガチ勢の割合が少ない
当初.netのライブラリが充実していた(GUI除く)ので一般人はOSSやサードパーティー製をなかなか使わない風土になってる
それで開発が少ないしされてもすぐ放置される
jsonライブラリも標準が出てしまった
ユーザーはライブラリ開発しないで提供されるのを待つだけ
ガチ勢が育たない
jsは唯一のwebブラウザ向け言語なのに素では開発しづらいから便利なライブラリが開発され続けてる
ライブラリのみでなくjs自体にトランスパイルされる言語が複数開発されてる
一方C#じゃなければ実現できないことはないから積極的に開発されない
C#の人気が落ちてると感じるのは相対的に他の言語の魅力が上がってるから
と言うより20年使ってたけどC#はホビーユースが中心にもかかわらずMS以外でそんなにC#は重要視されてた時代はない
C#は基本的に想定した以外のAPIは放置されてる
GlobalHookなどは馬鹿避けで馬鹿に触らせると問題が起こるので機能を提供してないものと思われる ほらMAUI君のキチガイムーブのせいでこんなことになってる C#は外部ライブラリがあまり開発されてない
純正志向が強い
js,Pythonなどは区別なく使われてる
Rustは標準ライブラリも外部ライブラリ向けに実装部分を差し替えられるように提供されてたりする
コミュニティ提供のrust入門書でも外部の乱数ライブラリを使ってる
.netは純正主義 >>227
たしかに.NETの標準ライブラリで何でも出来すぎてOSSが盛んにならないってのはあると思う
ただサイシャープの河合社長だったり有用なOSSライブラリを作ってる人はかなりいる
みんな知らないだけ まさか標準ライブラリの充実がOSSの足枷になってるとはね
たしかに言語仕様的にゴミカスなJSやPythonがこんだけOSSで流行ってるって言うのは割と関係あるな >>230
まぁバージョンが新しい古いとかで動かないとかかなりあるしね
Node.jsなんてそんな感じのグチかなり聞くわ
Sysmem.Text.JsonもNewtonsoft.Jsonのアプデ頻度が高いからしゃーなしに開発されたものらしい それに .net standardとかPLCとかの問題で非常にライブラリ開発がつらい時期があった
ふざけるなと思ってる人も多かったはず Pythonなんてライブラリのバージョンや本体のバージョンで動かなくなるのでうんざりする それはPythonに限らんよReactもFlutterもViteもなんでもそうだ
ちゃんとパッケージを管理できてないお前のスキルが低いだけ >>234
そういうレベルじゃない
ライブラリ同士の整合性問題がC#の比較じゃない
そもそも比較がC#なのに何で他のを持ち出すんだ?
頭悪そう >>235
ここのスレタイ確認しろよ
Pythonを例に挙げている時点でお前も頭悪いよ >>235
わかる
あれひどいよな
ものすごくメジャーライブラリでもPythonのバージョン上がると動かなくなって修正に半年とか普通にかかる
リリースされて半年~1年は実質ベータ期間 他人に期待しても無駄だから安定してるの使えばいいのよ
俺もC#はpowershellとも連携させるから基本OS標準に入ってるバージョンの機能しか使わないし ライセンス気にせずにExcel操作ライブラリ使うなら、読み取りはExcelDataReader、書き込みはClosedXMLがいいのかね?
EPPlusは商用ライセンス高すぎて使えないわ SpreadsheetLightってのもある
あと知ってるかもしれんがEPPlusはv4系までは商用でもフリーだぞ
net standard2.0だから今後しばらくは問題ないと思う 単純な真理
馬鹿でも使えるようにすると馬鹿しか使わなくなる winformsってみんな普通に使ってるし自分も時々使ってるけどこれといったテキスト売ってないよね
みんななんとなくで習得してる
それでもなんとかなるほど学習コストが低いってことなのかな visualstudio使えば、割と簡単とは思うけど
GUI的な考えが分からない奴は結局ちょっと複雑になると作れないんだよなぁ
UI thread的な考えが理解出来ないとUI thread以外でUI操作しようとしたりするしw >>245
比較対象がWPFなら簡単過ぎるぐらいだな まあアレは直感的にわかりますし……
WPFの方が調べても全然出てこなくて困る、書籍も少ないし @ if ((choice == 2 && player == 2) || (choice == 3 && player == 1))
A if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX)
B board[xpos][num[xpos]++] = player;
C for (x = 0, y = ypos, n = 0; x < XMAX; x++)
D for (x = xpos, y = 0, n = 0; y <= ypos; y++)
E for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++)
F for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++)
G for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--)
H for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか?? 何がわからんのかわからん
課題なら先生に聞け
あーChatGPTなら教えてくれるかもな 例えば@だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。 >>251
それなら俺らもそれ以上はわからんぞ
変数名をちゃんと意味あるものにしてやって >>253 が言うようにマジックナンバーをなくすと読めるようになる >>249
いますかの答えとしてはいない
書いてるコード断片にはアルゴリズムもなにもない
それにこれ多分Cだろ
ここは C#と言う別言語のスレなのですれ違い
これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる
player1 と player2が対戦して boardが合ってXMAXとYAMXのボード幅ではみ出し判定してる
計算もアルゴリズムも何も感じられない
その前にさあIDEの使い方覚えて一行ずつ動かして何が起こってるか見てみたらいい
初心者の間は状態などを紙にでも書かないと多分わからないよ マルチで Google Drive のリンクまで晒してるけど
学校名も個人名もばれるから落第だな
下手したら退学 ちゃんと対象言語のスレで聞いてりゃまだ可愛げがあるけど
他言語やVSCodeのスレとかにまでマルチポストだからげんなりするわ 半期やってこれがわからないような学生に今どきCを教える大学って終わってるな >>255
ありがとうございます、スレ違いで申し訳ありません。
>>"これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる"
例えばどの条件文、関数からこれを読み取れたのですか? マルチなのか相手して損した
にしてもやる気がない人にはこのレベルはちょっと難しいんだろうなとも思う
二次元配列とボードがイメージとして直結してなくてx、yで盤面の位置を指してることが理解できれば変わるだろうけど リロードしてなかったから書き込みが見えてなかったけど
スレ違いなのでもうレスしない わかんない人をわからせるのは
短文投稿サイトでは難儀なので
元々の問題文を貼ってくれれば
正確な回答をもらえると思いま
す >>262
こら!
スレ違いなので答えてはいけないしどうも他のスレでは張ってあるらしし データテーブルの列名が日本語になってるデータベースと、C#コードを連携します。
データテーブルのデータを保持するクラスを定義する際、同じようにして日本語を使ってフィールドを定義すれば対応関係がよくわかるのですが、英語やローマ字で定義したほうが良いでしょうか。 今開発してるのがまさに日本語カラムばかりなんだけどめっちゃ楽だぞ
ソースコード内でもカラムを示す箇所が視覚的にわかりやすいしインテリセンスでも埋もれない
カルチャー的に受け付けない人はいるだろうけど使ってみると考えも変わる 過去に行政の税システムのソースを見たら変数名が日本語だった。メーカーのPMに「日本語なんすね」と言ったら「間違いを無くすにはもうこれしかないんです」と言っていた。
税の用語は難しく数が多くて計算は複雑で、もし間違えたら記者会見して新聞記事になる。こういう対象にはそれに適した手段を用いるのが肝要だと思った。 nameof使えるし日本語フィールド名で良いんじゃない >>266
レスありがとうございます。
>インテリセンスでも埋もれない
インスタンス名に続けて、ドットを打ったらインテリセンスで日本語名フィールドが表示されるのですね。
row_日本語の列名 みたいにしてなにか最初にアルファベットで列名に関与していることを示してみようかと思っています。
フィールドでは無意味かな。
でも、クラス名が日本語の場合は、model_日本語名 みたいな感じで最初にアルファベットをつけておくと、
インスタンス化のときにnewによるコンストラクタの呼び出しが便利かもと思っています。
>>267
たしかに。間違いはなくなりそう。日本語から英語に訳すのに時間がとられるし、それで対応関係がわからなくなってしまったら、
まったく無意味ですよね。
私も、日本語でやってみたいと思います。
>>268
https://atmarkit.itmedia.co.jp/ait/articles/1607/20/news026.html によると、
>nameof演算子を使うと、名前空間/型/メソッド/プロパティ/変数などの単純な名前(=名前空間やクラス名などで修飾されていない名前)の文字列が取得できる。
でも、何の役に立つのかピンとこない。
日本語フィールドとどう関係があるの? ひょっとしていまだに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文組み立てにフル活用できるようにする テーブル1とテーブル2で同じカラム名があるとダルそうですね テーブル名やカラム名そのままならたぶん大丈夫だとは思うけど
カッコ系や「・」なんかの全角記号がほとんど使えないのは一応注意を >>270
レスありがとうございます。
お察しの通り、datareaderをforでぐるぐる回しながら、エンティティにデータ格納しようとしています。
ほとんどストアドプロシジャによる処理手順があり、これを実行した結果をC#で扱いたいんです。
ストアドプロシジャがあるのにEFを使う話は書籍にも見られません。
Dapperは全く勉強したことないので全然知りませんでした。
でも、そうやってnameofを使うわけなのですね。
優位性や適応についても知りたくなりました。 >>271
同じ名前のフィールドができるからですか?
でも異なるタイプのエンティティなら問題ないのかなと思います。
>>272
ありがとうございます。
気をつけます。 >>273
>でも、そうやってnameofを使うわけなのですね。
文字列内(今回はSQL文)に、クラスのフィールド名を組み込みたいときに使うと良いということがよくわかりました。
すると、その場合、クラス名、フィールド名は、データベースの列名に一致させておくことが必須ですね。
どうもありがとうございます。 ちょっとまって、フィールド名とカラム名を一致させるのはnameofのためじゃなくて
EFやDapperでもって取得したレコードや更新値を全レコード/全カラム自動マッピングさせるためだよ
いまどき手動でDataReaderから1項目ずつ値転記したりDbCommand/DbParameterをいちいち指定したりなんて
もはや許されない前時代的老害コーディングだからやっちゃだめ
あとEFでのストアド実行ならふつうにSqlQuery()とかの生クエリで出来ると思う SQL 文を組み立てるのは、数十年前のやり方
Ruby on Rails では、1対1・1対多・多対多など、表同士の関連を定義する HttpClientでPostAsyncするときにユーザーエージェントを指定したい時はDefaultHeadersをいじるしかないのでしょうか。
それをするとマルチスレッドで同時に別のユーザーエージェントで送りたいときに独自で排他制御しないといけない気がします。
かと言ってSendAsyncを使うと今度はContent-Typeをapplication/x-www-form-urlencodedにしたくても勝手に後ろに文字コードの;uft-8などが付いてきて困っています。 記載し忘れましたがHttpClientはひとつのオブジェクトを用意して同時に使います。 WebRequest、WebClient、ServicePoint は廃止されている
[アーティクル]
2023/01/05
https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/networking/6.0/webrequest-deprecated
> WebRequest、WebClient、ServicePoint の各クラスは古い形式としてマークされており、コンパイル時に SYSLIB0014 警告が生成されます。 FormUrlEncodedContentを持ったHttpRequestMessageをSendAsyncでPOSTしても
Content-Type: application/x-www-form-urlencoded
だけだったけど
.NET7, .NET Fx 4.8両方で すみません、また記載し忘れていましたがFormUrlEncodedConentを使用すると文字コードをShiftJISにしたいのですができず困っています。
あとはまだ試してしないのですがスペースが%20になってしまうとのことでそちらについても都合が悪いです。 HttpContentというクラスを独自にはせいさせるとできるかもしれないです
明日ためしてみます ByteArrayも試したのですが何かしらの問題があったような気が…
すみません、明日さいど確認してみます HttpClientのサードパーティー製をNugetで探すと上位の方にかなりパンチの効いたのが出てくる >>276
ありがとうございます。
EFもかなり発展しているということなのですね。
以前はまだ未完成みたいな感じだったので、利用を躊躇しておりました。
ストアドの実行もEFでやってみたいと思います。
ただEFについては勉強が必要なので、少し時間がかかりそうです。
DataReaderはVBのときからやっているので、やっぱりいじり方がわかりやすいんですね。
>>277
表同士の結合は、ストアドプロシージャでやっては今の時代はダメなんですかね。 >>291
いちおう、ドメイン駆動設計なども学びはしました。
リポジトリ、モデル、アプリケーション、プレゼンに分けて構築しています。
でも、効率が良さそうなのはわかりますが、EFとかはどうも苦手意識があって。
いつか、慣れていく必要がありそうだとは思っています。 DB畑なら特定の環境に依存する中途半端なことするより普通にSQL文使うのを選ぶと思うけど Ruby on Rails では、各データベース(DB)の方言に依存しないように、
O/R マッパーで、3大DB のSQLite, PostgreSQL, MySQL を使う
多くはPostgreSQLだから、AWS Aurora とも互換性ある
O/R マッパーを使わないと、各列の型も異なる >>291
いきなりRailsを持ち出す奴は構ってはいけない
この板の鉄則 >>292
リポジトリのインターフェースがきちんと定義されててDBの実装に依存する部分が全てリポジトリの実装クラス側に隠蔽されてるなら中身は好きにすりゃ良い
後でリファクタリングするのも大した手間じゃない
リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装は依存性を分離できてないから基本的には良くない設計
(良くない設計だけど開発効率を重視して採用することはある) ByteArrayContentの件ですが、ほかのヘッダーと同様にHttpRequestMessage.Headers プロパティでContent-Typeを設定していましたが、これではContent-Typeだけリクエスト文に現れませんでした。
しかし、ByteArrayContentのHttpContentHeaders.ContentType プロパティに設定することで無事、目的のContent-Typeが送信されるようになりました。
ご協力ありがとうございました。 おもしろhttpclient代替ライブラリの出番はなかったと
残念 >>296
>リポジトリのインターフェースがきちんと定義されてて
データベースなどの入れ替えに対応させるためですね。
>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装
これはいまいちピンとこないです。
どういう問題を持っているのですか。 >>299について、>>300さんへ
言い方がまずかったです。
>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装
これがどういう実装になってるのかなと。
リポジトリから返される型とは、モデルクラスでしょう。エンティティのことだと思います。
この型の名前を変えるとは、モデルクラスの名を変えるということですかね。
単純にかんがえると、コンパイル段階でエラーになると思います。
SQL文も動かなくなるとは、リポジトリがエンティティを受け入れる段階をいうのかな。
でも、リポジトリの永続化メソッドの引数の型と、エンティティの型が合わないという話なら、やはりコンパイルでエラーになる。
こういう話ではないのかな? >>299
ここにEF使ったリポジトリとSqlCommandやDataReaderを使ったリポジトリの両方を実装してるサンプルであるから見てみるといい
https://www.shoeisha.co.jp/book/download/9784798150727/detail
>>270が動かなくなる実装の一例 >>301
なんで段落じゃなくて毎回改行してんの? >>270が動かなくなるって具体的にどういうこと?
カラムnを実際のテーブルの列名と違う名前にしようとしたとかそういうこと? 正直、不必要なレベルの過剰な依存性の排除だと思うけどな
もしやるならDBを使わない選択が必要な程の >>276
うーん?
どこかでやらなきゃいけないのを
先延ばしにしただけのような?
俺はその構造になんの意味も感じなかった
なぜなら絶対にどこかで指定する必要があってその場所が変わるだけだから
間に一つ挟んだら取り決めが増えるだけで何も変わらんよ >>302
>>270はDapperを使ったコードだけどEFやSqlCommandの例とどんな関係が? ASP.NETの勉強を始めました。具体的にはASP.NET MVC5 実践プログラミングって本を使っています。
その中でentity frameworkを使ってdbcontextをうにゃうにゃしてデバッグ実行時にデータベースが制作されるようにしてページに表示して…みたいなことをやりました。
それでmdfファイルってのが出来あがってたのですがそれについて質問です。
これが出来上がったデータベースであって、sqlserverがデータを保存する形式ってのは分かりました。
これつまりC#(entity framework?)サイドからするとsqlserverは別に起動してなくてもデータベース本体だけあれば読み込めるということなんでしょうか。
それとも起動時に勝手に裏でsqlserverが立ち上がってたりするのでしょうか。
一応本の流れにそってSQL Express LocalDB edition 11.0なるものはインストールしています。
すいませんこれまでの開発でmanagement studio経由でいじるとかそれくらいしか経験無いんでよく分かってないです。
厳密にはC#の質問じゃないと思うんですけどよろしくお願いします。 >>308
すでに立ち上がってるSQLServerと通信する形となります
SQLServerが動いてなかったらもちろん意味を成しません
アプリから処理を呼び出し→SQLServerに接続→SQLServerがmdfファイルを編集
という感じだと思います SQLServerは起動しっぱなしですね
応答により電源がついたり消えたりするという形ではないです >>309
ありがとうございました。sqlserverちゃんと起動してるかとか確認しないとだめですね あの紫の本かな 現状MVCのテキストってあれくらいしかないよね
ちょこっと読んで放置してたけど読み直すか >>314
CompactとかLocalDBとかは常にインスタンスが上がってるような形じゃないけどな 再接続というのは物理的に切断されたものが復旧した時に再度コネクションすることだぞここでは >>316
そいつらはインプロセスだからある意味呼び出し側が起動してたらLocalDBのプロセスも上がってるってことだが
それ以前にCompactはもう忘れたけどLocalDBはSQL-Serverと同じでDBMSの起動とインスタンスの起動は違うぞ
SqlLocalDB.exe start / stop でインスタンスを起動/停止できる
https://learn.microsoft.com/ja-jp/sql/relational-databases/express-localdb-instance-apis/command-line-management-tool-sqllocaldb-exe?view=sql-server-ver16 >応答により電源がついたり消えたりするという形ではないです
ここが分からんw
鯖が物理的に別にあるってことかな >>322
LocalDBはインプロセスじゃない
インスタンス事前に起動させて複数プロセスからアクセスとかできなくはない
まあ大概は自動でインスタンス上がるんだが、手動でもできるってだけ
つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの? selenium webdriverのC#版の話題ってここでいいですか?
操作対象のdriverオブジェクトから、
Winformsで言う普通のウィンドウハンドル(NativeWindowHandle)を取得したいんですが、driver.CurrentWindowHandleプロパティで得られる値はselenium専用のウィンドウ識別用の文字列のようで使えませんでした。
stackoverflowとか見てもプロセスからタイトル名で探索する、みたいないまいち冴えない方法しか何故か見つかりませんでした。
ブラウザを操作してるのに一意なハンドル情報を得る方法が無いなんて考え難いので、何か方法はあると踏んでるのですが、たどり着きませんでした。上の冴えない方法より洗練された方法があれば教えて下さい。 >>324
> LocalDBはインプロセスじゃない
すまん、ボケてたわ
単にリモート接続できないSQL-Serverだったな
> つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの?
DBMSはSQL Server VSS Writerサービス(sqlwriter.exe)の話
インスタンスはリンク先読めばわかる
複数インスタンスとか使ったことないのかな? >>325
Seleniumはマルチプラットフォームなんで
Windowsローカルの話なんて知らんというのはごく当たり前のように思うが >>325
以前に探して見つからなかった記憶
そのときはやりたいことがウィンドウの最小化ぐらいだったんで
RemoteWebDriver.Manage().Window.Minimize()
を探し出して解決 >>327
>>328
ありがとうございます。参考になりました。
switchto~で何か出来そうな気もしましたが、
いまいち動きが読めないので今回は大人しく冴えない方法を使う事にします。 >>326
WriterをしてDBMSとか言うやつは初めて見たわ
通常の文脈であればDBMSはDBエンジンをメインとした一式で
SQL Serverにおいてはまさにインスタンスなんだが
つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど
シャドウコピーできなくなるからオンラインバックアップ取れないだけで
いわゆるlazy writerみたいなDB Writerと勘違いしてるのかね >>330
> つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど
SQL-Server VSS Writer とシャドーコピーサービスは別物だぞ
あとSQL-Serverのインスタンスはプロセスとは関係ない
sqllocaldb create\|c "instance name" [version-number] [-s]
とかで増やすこともできるけど増やしてもプロセスやスレッドは増えないよ
ちなみにOracleでもインスタンスの用語はデータベースファイルセットの意味で使われてる
https://docs.oracle.com/cd/F32587_01/cncpt/oracle-database-instance.html#GUID-67247052-CE3F-44D2-BA3E-7067DEF4B6D5 >>331
シャドウコピーはOSが提供してる機能のことで、VSS WriterはSQL Serverがそれを使うためのサービスな
>SQL-Serverのインスタンスはプロセスとは関係ない
SQL Serverのインスタンスの実態はsqlserver.exeってプロセスだが?
ローカルDBでも、インスタンスごとにsqlserver.exeってプロセスが動くんだが? C#のexeやdllはILマシン語にコンパイルされるというのを知りました
でも例えばCのexeはそのCPUに対応するマシン語になりますよね
ですけどC#のexeは一旦JITを通して実行される
この一度通すっていうのをどうやって判断しているんでしょうか
C#のexeをCのexeみたいに直接実行しようとして実行できねーよってならないのはどういう仕組みなんでしょうか C#のexeに「僕に含まれてるデータをJITを通して実行してね」て、CPUに対応するマシン語で書いてあるんじゃね? >>333
atmarkit.itmedia.co.jp/fdotnet/dotnetwork/index/index.html
古い記事だが基本は変わってない 8086系は相対ジャンプや相対コールが無かったから
プログラム実行前にアドレス解決しなきゃならないとか
色々前処理が必要だったんだ
その延長で前処理に色々やらせる処理を追加してるなんて
普通にやっているんだよなぁ C#が関係なくなっちゃうけど、主要Linux系OSは同じような仕組みで他のCPU用の実行ファイルとかまで動いちゃう VC# datagridviewにて
CurrentCellChangedイベントで選択セルの結果を取得したいと思いました。
(rowfilterなどで変化した場合もとりたいため、clickイベントにしませんでした)
しかし、DBから読み込んだ時点ですぐ発生するイベントにて
System.NullReferenceExceptionがでます。
CurrentCell.Value == null で判断できるのかと思いましたが違うようでした。
データがなかったときに何もしないというコードはどう書くべきなのでしょうか。
今までPHPで簡単なものを作っておりましたが、
コントロールプロパティやイベントが何を返してて、
どう対処するのかが基礎的なものがわかりません。
nullが返ってくるんだから if nullじゃないの?というのが間違ってる...のでしょうか?
https://ideone.com/J0iDmr >>335
あーこれは本当に素晴らしい記事でした。ありがとうございました。
windowsローダーとかPEフォーマットとかまーったく知らなかったですね。機械語の塊の実行ファイルをOSが読んでいくくらいにしか思ってませんでした。これやっぱ常識なんですかね。
C#の本読んでも当たり前のようにCLRとか出てきてよくわかんねぇとかなってましたけどこれが前提知識ならそりゃ分からんわってなりました。 >>338
他のクラスでも同じだがCurrentCell.Value == nullの前にCurrentCell== nullを判定しないとnullに属するメンバを指定したら存在するはずがないのでエラーになる
if (dgv.CurrentCell== null || dgv.CurrentCell.Value == null)
{
return;
} >>338
VSでデバッグ実行したら、例外が出たときにそこで止まって発生した行が表示されるよね
そこでローカルウィンドウとかでどの変数に何が格納されているか確認するといいよ >>340
ありがとうございます!!
>DataGridView.CurrentCell.get が null を返しました
おかげさまでようやく
このエラーメッセージが何を言いたいのか理解できました。 .NET Frameworkランタイム入れていない
古いWindowsで開くと形式がおかしいとか言われたはず >>341
ありがとうございます!!
いま改めて見たら
dgv.CurrentCellがnull であって
dgv.CurrentCell.value ではなかったです。
この違いにまったく気づいてなく
頭をかかえていました。 datagridviewは本当に色々とめんどくさいよね
起きるイベントの順番とかタイミングとかカオスでバグが出まくる 別に変なことしたくねーのに
変なことしたいでしょ?
って前提で作られててな
微妙なイベントの順番をハンドリングしないと普通のことも
できないのは正直クソだと思う シンプルなテーブルを作るにあたりDataGridViewとListViewどっち使うか毎度悩む
そしてこいつらは行や列の結合セルを作れない事に気付いてTableLayoutPanelに移行しようとするもこっちはこっちでデータとのバインディングが面倒で断念
最終的にはただのControlクラスを継承したまっさらな白紙にOnPaintで自力描画する事に落ち着くのである 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 許容参照型にするメリットを感じないのですが、メリットはあるのでしょうか? ケースによるが、コンストラクタを用意して
public Person(string name)
{
Name=name;
} とやって、全てのオブジェクトには名前があるように保証できるようにするのが俺のやり方だわ >>349
結合セルもできないのか
そういうの考えるともう枯れたHTMLで画面作る方が楽だなーって思う >>350
空文字は許容されてなくてnull関連の演算子も使わないならどっちでもいいんじゃね >>350
null許容の場合は空文字とnull両方を考慮しないといけないだろう >>349
個人開発なら構わんが、会社でそういう糞コントロール作るなよ
保守するのが面倒くさい >>349
最近気づいたけど
セルの変更しないなら
いっそピクチャーボックスもあり
スクロール制御しないと駄目だけど 大昔からString.IsNullOrWhiteSpaceでチェックしていたから気にしたことなかったわ JsonSerializerでdynamic型の配列に異なる型のオブジェクトを混在させたのもをSerializeしてからDeserializeするときに型を復元するにはどうすればよいでしょうか。 キャストする型が不定なので保持しておきたいのですがそのような機能はないでしょうか。
参照関係はメタデータとして保持できるのですが…
なければ独自で型情報を保持するしかないと思うのですが、List<Hoge>のような型が存在する場合にGetType().Nameを読み取ってもList`1のような謎の文字列になってしまい… object型で何で扱って、typeofとかisとか使ってマッチさせるんじゃねえの? 全てのパターンの型でマッチするものを探すようなコードを実装するということでしょうか。
汎用的なものは難しいですかね jsonに型情報なんか入ってないからプログラマが型を教えてやるしかねーぞ
入れられるならプロパティとして入れとけ うーむ…中々難しいのですね。
辞書に色々ごちゃごちゃにぶち込んで一発でシリアル化、一発で逆シリアル化とはいかないですか。 プロがやれば何とかなると思うから依頼してみなよ
さすがに詳しいことをここで聞いたり説明したりするのはめんどいわ 確かになんとかはなるかもしれませんね…
簡単にはいかないのは確か、というところでしょうか。
JsonSerializerが参照情報だけではなく型情報もメタデータとして保持できればよかったのですがね。 >>367
TypeNameHandling.All
しかしセキュリティリスクがあるからおススメできない XMLでよければXmlSerializerがあるがな。 jsonのと比べてXmlSerializerだと何か良いことがあるのかね 型情報あっても、その型を解釈出来なけりゃ意味が無いからなぁ
送り手と受け手で同じ型宣言つかわにゃ 作成者が同じとも限らないし、言語が違うとかもあるし
限定的な使い道しか無いんだよなぁ 何がしたいんだ?
自分も使えないデータを知らない人に渡して活用してもらうのか? そもそもどういう理由でJSONを選んだのか
シリアライザも色々あるから、それに適さないデータを無理に扱おうとしても苦労するだけよ >>367
辞書に入れる要素のクラス自身をdynamicにするんじゃなくて
そのクラス内のプロパティにdynamicから継承したクラスをズラズラ並べたら?
泥臭いけど、やりたい事は実現できる Marshal だろ。たいていの言語にある。
でも、言語のバージョンが異なると互換性がない
dRuby みたいな分散・リモートオブジェクト。
送信先で、オブジェクトを復元できる機能
ただし、プロセスID など、各システムで固有のものは送れない・復元できない
例えば、システムA のプロセスID・100 を送っても、
システムB の100に出来ない そもそもクラス名を指定すれば復元できるんだからクラスを保存するのは普通
ただのデータ構造 async/awaitが出た頃に「BackGroundWorkerは時代送れだから使うな」
って聞いた気がするけども、ググると新しい記事でも使っています。
用途次第なのでしょうが、BackGroundWorkerも使って良いのでしょうか? 古いframeworkのバージョンしか使えない場合とか >>384
性能は同じだから、どっちを使っても良いと思う win32apiのTextOut関数を使ってコントロールへ文字を表示したいのですが
マウスをドラッグして、そのコントロールを含むフォームのサイズを変更したときに
タイミングによっては例外が発生してしまいます、どのように修正するのが正当なやり方でしょうか?
void MyTextOut(){
TextOut(......)
}
protected override void OnPaint(){
MyTextOut()
} まずどんな例外が発生しているのかそういう情報が無いと誰も答えられないような C#は、基本設計として危険な生のハンドル操作をする必要がない作りになっている
ろくにエラー処理もしない(出来ない)奴が直接Win32APIを叩くのがそもそも間違ってる >>390
質問する際は>>391の言う通りどんな例外かを示さないとエスパー呼んでくるしかない
あとせっかくコードを出すのなら再現する最低限のコード書けば答える側もわかりやすいし、最低限のコード作って確認したら自分で解決もしやすい
個人的にはどうでもいいだろうけど、protected overrideなのにbase呼んでないのが気になった
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/overriding-the-onpaint-method?view=netframeworkdesktop-4.8 LINEのc#のオープンチャットがあったので入ってみたらスマホのめちゃくちゃ狭い画面でソース貼ってやりとりしてて笑った
正気か? 授業で習ってますてな感じの学生が使ってるんだろ
LINEの時点でプログラマは一人もいなそう 知らんのか
今の若い子はスマホしか知らない世代と言われ開発もスマホでするんだよ 10インチタブレット+無線キーボードならまぁ…
いやまともなIDEないからやっぱダメだな たまにはテンプレ案の話もしませんか?
とりあえずdocsはlearnに直して情報源に未確認飛行https://ufcpp.net/入れてほしい .NET6使ってタイマースレッド内で作ったList<ListViewItem> ItemListの中身をスレッドからInvokeで
Invoke(new Action<ListViewItem[]>(MainListView.Items.AddRange), ItemList.ToArray())したのに
何故かParameter count mismatch言われるのがわけわからない……
ListViewItemの配列で引数合っとるやろがい…… (object)ItemList.ToAray()
でどう? >>405
できた、サンクス
これ、ToArray()で返って来た配列の要素がそのまま可変長引数にばらけて入ってるってことだったんか…… >>403
入れなくていいよ
そいつは自己紹介せずにC#でググれ(そしたら自分のサイトが出てくる)と言ってるらしいし それにC#の新機能でググってるのにそいつのサイトのドラフト案のころの情報につながったりする
そして実際の動作とは違ってる
誰が悪いとは言わないが個人の活動に乗っかってるだけだからな
正確に今ある機能を知りたい場合には向かないけどググったらそこにつながってしまう ドラフト案を新機能として紹介してるなら向こうの手落ちだけども、そうでないならただの言いがかり
それに普段見てる範囲ではこの機能はこのバージョンからって各ページにしっかり書いてある方だと思うけどな
実際問題として初心者の情報源として重要なサイトであるのは間違いないでしょ 新機能で検索してるのにドラフト案の頃の情報がヒットするのはけしからん!ってことじゃないの? 新しい社内向けアプリ作る為のGUIを何で作るか迷っているのですが、今一番いい選択肢は何なのでしょうか?
個人的な感想としては、下記の状態です。
グラフとかチャートを多用するので、関連ライブラリが多様だとありがたいです。
WinForms = 楽 (一応 System.Windows.Forms.DataVisualization.Charting がある)
BlazorWebView = 少なくともWinFormsと同じくらい楽。むしろCSSとJS使える分だいぶ気楽。
MAUI = 使った感触では「まぁ時間をかけて慣れれば使えるかなぁ」という感じ。
WPF = 触ってもないのに何故かネガティブなイメージが強くて、全く検討していない。 >>413
もう自分で答えでてるんじゃね
作りやすい物で作ればいい 社内で使用する前提だと、どの程度のスキルの奴が何人でつくって誰がメンテしていくかってのが基準になるから、自分が選定する立場ならそのへんで選ぶ メンバー次第だよなぁ
C#じゃないけど、俺ならelectronにするわ >>413
Chartが使えるWinformでいいと思う WPFはコーディングだけでUIかけるから好きだけど、他のもそうなの? >>419
Windows3.1?
誰も望んでない方向へよく行ったと思う >>413
正直なところweb技術で作ったほうがいい
チャートがあると言うだけでもc#で作るのはお勧めしない
JSだとライブラリ選び放題 System.Windows.Forms.DataVisualization.Charting使ってC# on powershell on バッチファイルで毎日グラフ吐かせてるけど一番シンプルいいと思う
野良のライブラもコンパイルも何も必要ないのと、やはり1ファイルで済むのがでかいと思ってる c#のチャートは止め絵
jsのチャートはUI有の動画
格が違いすぎる
試してみたほうがいいよ まずデスクトップアプリかWEBアプリか、どっちが向くかの検討があって
言語はそれから考えるもんだと思うんだがな >>426
それより>>408>>410の続きはもういいの? >>424
C#的に、シャープの中の蛙と言うべきだね。 >>419
むしろコーディングだけでUIが描けないとかあるの?
VisualStudioのフォームデザイナも実体はただのコードだぞ? >>429
いや、シャープマークはイゲタと言うし、井の中の蛙で合ってるだろ
井って文字すらシャープだね >>430
実体はどうかと、実際に作成するときにどういう手段を取るかは別の話だと思うよ いや、違うでしょ
.Designer.csは手書きする前提ではない
文字列の一括置換とか軽微な修正で直接編集するみたいなことはあるにしても 質問失礼します
winformsの4.6.2で作られた既存のあるプロジェクトがあるのですが、これのターゲットフレームワークを4.6.1にしてリビルドした時の弊害ってどういうことがあるでしょうか
よろしくお願いいたします >>436
4.6.2のリリースノートを見るのと
書いてない内容もあるから
結局やってみないとわからない >>437
>>438
ありがとうございます
やってみてわかるというのは、ビルドエラーがかかるかどうかという意味でしょうか
もしくはデバッグしてプログラムの動作をみるということでしょうか
リリースノートみた感じだと4.6.1への変更はプログラムの挙動にはあまり影響しそうにない感じでしたが >>439
いちいち人に聞かないと何もできない障害者かなにか? ちょっと試してみるだけのことを実行しないで質問する奴ってなんなんだろう 全てを網羅してる人なんて居ないんだから
おま環で何が起こるかなんて、おまえにしか分からないんだぞ? >>443
ありがとう。それは当然わかってるよ
自分で当然試してるし色々調べもしてる。大した手間じゃないしね。例外もとりあえず吐いてない
それを踏まえて、自分が知らない何かがあるんじゃないかと、お前ら先生にも聞いときたかったわけ >>440
>>442
とりあえずなんにせよ質問に答えることすらできないガイジは黙ってろよ >>447
あと出しって何?自分で調べるくらいして質問するのは当たり前だろ? >>448
馬鹿な質問をする奴らはこういう馬鹿ばっか >>446
めっちゃ細かい内容は書いてない
把握はしてないけどね MAUIってクロスプラットフォームしなくても良いことがあるんですか? >>449
>>445 の内容を初めから書けよってことだぞ 質問する際は自分でおこなったことも書くんだぞ
それに問題があったり、新たに問題を生んでたりする
それを隠すのは、解決したいんじゃなくて単に相手を試したいだけ
そりゃ失礼だ >>451
めっちゃ細かい内容って例えばどんなレベルのこと? そもそもCSのスレでフレームワーク側の事訊くのもどうなんって感じするけど
まぁ.NETそのもののスレ無いか C#について教えてください! https://smartlabo-hp.com/login-intermediate/ 上記ページを見てログインボタンを作成しました。 このページ内にあるcsvファイルの内容に加えて同csvファイルの[2]にログイン状態という列を足したいです。 ログインしてない状態では[2]は常に0、ログイン成功したら[2]に1が書かれるようにするにはどうすればいいのでしょうか? ご教授よろしくお願いします。 色々すげぇサイトだなぁ
とりあえずそのサイトを参考にするのはオススメしないです csvファイルを全部読み取って配列化して目的のデータを書き換えて再度csv化する このレベルの初心者は具体的なコードが無いと手順だけじゃ何もできんだろうから誰か優しい奴 CSVファイルのでかさにもよるけど>>462は常套手段だと思うよ
でかくて大変だというレベルならSQLiteなりを入れた方が良いかと >>458
パンチが利いてるね
このサイトの方法は全然オススメしない
江戸時代の庶民みたいなレベル
見るだけ損だと思う >>465
長さが同じ書き換え以外はファイル全体が書き換わることになるし
DB使わず簡易的にやるなら>>462は普通だね >>469
この程度自分でなんとかできないのであればお前にはプログラムは無理だよ ここは宿題スレじゃないから「こんなコード書いてください」は違うよな
書いてくれる人はいるかもしれないけど、見た人は大体反感覚える
自分でできるだけやったソース出したら協力してくれる人は増えると思うよ >>471
そのサイトに応用編でIDパスワードの登録ってのがあったが、
こっちのほうが更におかしかった お題のコードがひどすぎてツッコミが追いつかない
>>458に必要なのはより良い初心者向けチュートリアル 質問です
int? a=1;
int b=a; したいときに
(int)a と a??0 のどちらが速いでしょうか? そんな速度気にするより、見やすい分かりやすいコード書く事に集中しろよw どこの誰かもわからん奴らが後者が速いとか言ったらこいつは鵜呑みにすんのかな
質問してる時間あるならStopwatchなり使って実際に計測すりゃすぐだろうに >>477
いまどきの実行環境でそれだけ比べて有意な差が出るとは思えんが
そもそもそのコード、同じ内容じゃないし
普通はb = a.Valueじゃないのかね
まあ、b=1が早いと思うよ 速度測ったりアセンブリコード見れば判る事を聞く奴は元々大して興味がないんだと思ってる
こういう馬鹿に真面目に答えても実際に役に立つ事はない 速度に関しては実際に動かす環境でないと意味がない場合が多くてな
お前の使ってるデバイスの割り込み頻度次第だろ
的な 開発環境という点では
C#は圧倒的だよね。
VB関数も使い放題で、拡張性が凄い。
.Net環境を使えるし。
無料でSqlServerもつかえる。
Visual Studio Communityも無料。
いうことなしの環境。
なによりネット環境と相性が最善。 あと検索するとDB接続・更新・照会・新規・削除の
のプログラム例もたくさんある。
要するに無料で独学でできる。 ID:UuNuiTTV0
馬鹿の見える範囲は狭い例 まあ圧倒的は言い過ぎだと思うけどトップクラスなのは事実だろ 勘違い、間違いばかりで思い込んだ頭の弱い人なんだろう 知的障害者とか どうしてもCSVが必要なケースを除いて、JSON or SQLite が無難 初心者はいきなりナニカを1から書くのではなく、既存の(可能であれば普段自分が利用している)FLOSSのリポジトリを持ってきて、自分好みに「改造」するところからはじめた方がいい
アカデミックに学び直すのは、あれこれ一通りできるようになって「オレは雰囲気でC#を書いている」感覚を覚えてからで十分 >>490
言語博士になんてなったって仕方ないし
そもそも基本になるソフトウェア工学が腐ってるから学ぶのは反対
そのせいか言語博士にはバカが多い
知識はあるけどアプリを作るのはヘタクソみたいなやつ多い
C言語ですべてが完成されている
それ以降はゴミ >>492
一番綺麗に扱えるじゃん
表示さえしなければ(笑)
まあ、それは置いておいて
c#のC言語の部分だけ使うと
問題が起きない csv言ってるけどファイルフォーマットの定義も無いのに大丈夫?
csvって昔から使われるけど決まった定義無いから亜種が一杯あるんだよな
>>495
NuGetでCSVHelperとかCSVReaderとかCSVParserとかで検索しろよ データに改行が含まれてるとかそういうの有るか考慮しろよ
個人的おすすめはきっちりトークナイザーとかでトークンに区切って処理してる系 >>497
あるけどカテゴリがInformationalやろ
つまり決まってない事が決まってる >>500
ExcelからCSVにした1番面倒な奴だな
セル内で改行出来るしその場合の改行コードまで意識しないとな馬鹿ファイル
ぶっちゃけExcelのアプリ無しでExcelファイル操作出来るライブラリ使ってExcelとして読み込んで編集して再度エクスポートが正解かもな この業界で1番やっちゃ行けない事はExcel使う事
Excelが絡むだけで面倒事が増える
ExcelからCSVにして云々やるぐらいならExcelファイル直接C#から操作した方が安全だし手間が無い ファイルはユーザーが自由に作成するんじゃなくて設計者が決められるんだからこういうのでじゅうぶんやろ
var user = "unko";
var success = "1";
var lines = File.ReadAllLines("accounts.csv");
var data = lines.Select(line => line.Split(',').ToList());
var target = data.First(recode => recode[0] == user);
if(target.Count == 3)
target[2] = success;
if(target.Count == 2)
target.Add(success);
lines = data.Select(recode => string.Join(',', recode));
File.WriteAllLines("accounts.csv", lines); >>503
己の無知無能のせいなのにExcelを否定する馬鹿 >>506
こういう馬鹿がエクセル方眼紙とかやるんだろうな >>csvファイルを全部読み取って配列化して目的のデータを書き換えて再度csv化する
元々読み込んだファイル名と新しく置き換えるファイル名を同じにするにはどうすればいいですか? ファイル操作ぐらい出来る様にしとけよw
ぶっちゃけレベルが足りて無い
同じファイル名で上書きでも良いけど別名使えよ
元のファイル名を別名にしてから処理しろ
そうすりゃ処理中に例外とか発生しても元ファイル残ってるから色々出来るやろ >>509みたいな発想が出なくて、>>508の質問しちゃうのって、いくらなんでも向いてないんじゃない
覚えるとか勉強するとかじゃなくて、最低限の素養がないとソフトって作れないと自分は思うけど、そんなことないんかな? そんなことはないよ
普通に体系的な勉強するだけで身につく
センスとか言っちゃうやつは勉強しなかったやつ すいませんプログラミング自体経験なく、ログインの仕組みを調べていたらあのサイトにたどり着き真似してみた次第です。
基本から学びます なぜプログラム経験が無いのにいきなり「ログインの仕組み」に手を出したのか
この時点で全てがおかしい
野球をやった事がない奴がメジャーリーグの試合に出るようなもんだ そこは誰も疑って無い
メジャー大谷見て興味持ったらまずは親とキャッチボールとかから始めるやん
草野球チーム入るとか
興味持ったからいきなり未経験でメジャーで点取るにはどうしたら良いか聞くってズレてるやろ >>515
興味を持つ事自体は悪くないけど、
基礎的な事をすっ飛ばしていきなりそれらを組み合わせた応用(今回の場合はログイン処理とやら)をやろうとするのは
無理があると思うよ。
今時ならネット上でイロハのイから学べるわけだし、
まずは基礎知識を勉強すると良いよ。 >>507
Excel方眼紙は便利だろ
否定してる奴はエアプ >>509
一気に書き込む場合はバックアップは不要 >>519
成功すればな
書いた様に例外が発生する可能性はある訳だけど?
それこそ書き込み中にプログラム落とすとかさ >>518
どう便利なの?
そもそも表計算ソフトで仕様書っぽいもん書いてるのが間違いやろ
Word使えばええやん そういえばアラン・ケイも論文で、グラフィックベースのスプレッドシートがあれば
棒グラフを描くとか一つのツールでいろんな用途に使えて便利だろう、なんて書いてたな。 すいません怒らないで教えてほしいのですが、新ファイルに書き出すまでは出来ました。
しかし新ファイルから元 ファイルに戻す際に新ファイルがありませんと出ます。なにが原因ですか?
一番下のelseのコピーのところです
https://i.imgur.com/9MAbisf.jpg >>521
方眼Excelは(低能には)便利と言うことだろ
紙に書くのと同じ自由さがあるからな
その手の奴にワード使わせても空白でインデントやセンタリングしたりするからあまり意味ないぞ >>523
そのコードをいじくり回しても今の段階で得られるものはほとんどないよ
そのサイトのことは忘れて>>513で宣言した通り基本から勉強することを強く勧める >>523
@"D: アカウントバックアップ.csv"
@"D:アカウントバックアップ.csv"
って2種あるのは回答者を舐めてんのか? >>525
基本からやります!ですがここだけどうしても解決したいです…
教えてください >>527
最後の"D: アカウント.csv"って:の右にスペース入ってるからじゃない?
こういう風に定数を何度も生で書くとケアミス発生するから複数回使う定数はconstなり変数なりで上の方で宣言しといたほうがいいよ 大変申し訳ありません。半角スペースが原因でした。
基本から初めます
スレ汚してすいません データベースでSqliteは弱すぎでしょ。
Express版ならSqlserver Oracleも無料だし
小企業ならそのまま使えると思う。 Sqlserverは最初から
オートクリメント自動採番でユニークキーIDを割り当てることができる。
他のデータベースにはこの機能がないので
SQLを書かなければいけない。
オラクル
SQL> CREATE TABLE T_GENERATE_ID (id NUMBER GENERATED ALWAYS AS IDENTITY, name VARCHAR2(32)); >>524
でもさ項目を追加ってなって行やら列を途中で追加してその他にまで影響与えて結局1シートのレイアウト微調整ってなるやん
いくら低脳でも面倒臭いってなると思うんだよね
まあその面倒で時間かかる事を仕事って思ってる土方なんだろうけどさ >>533
自動採番とか後々考えるとトラブルの元だから基本は使わないんやで
使うのは素人か初心者ぐらい >>534
その手間 <<<< ワードのスタイルとか覚える手間
ってことなんだろ
そもそも彼らにとってレイアウトとは文字の配置でしかなくて文章の論理構造なんて考えてないから ワードのほうが完成度の高い文書が作れるがエクセルのほうが扱いやすい
これは真理でありどちらをとるかは好みの問題 エクセルに途中から列幅変えられる機能ついたらワードの出番無くなるのに >>538
ただの「文章」と、印刷前提の「書類」の区別を付けられるようになろう >>534
レイアウト調整というのも不明
ワードのようにページサイズが固定ではないのでそのような問題は起きない
無駄なテクニックや操作の必要なく直感的に手軽に必要な情報をまとめられて伝えられるのがエクセル
Excel方眼紙をバカにしているのは固定観念に囚われた低脳のみ。 印刷をしたければワードを使えばいいし今時仕様書を印刷する機会もなくエクセルで閲覧できればいいというのが大半
ワードにするメリットが薄い >>541
そういったものを方眼紙にする意味よ
多分お前がいってる事はズレてる
今問題にしてるのはExcel方眼紙 >>542
そういうのならマークダウンとかでええやん
わざわざ重いExcel開くの?
目的に合ってませんよ ここは馬鹿ばかりだから整理する
Excel方眼紙なのでまずは方眼紙にするだけの理由が有る
方眼紙にする理由は罫線とか枠線引く為で有る
なのでレイアウトとか印刷不要で有るなら方眼紙にする必要が無い
方眼紙にする時点でレイアウトや印刷が視野に入ってる 方眼紙タイプの文章って情報記入するタイプのドキュメントのイメージしかない
その場合は方眼紙のほうがいいと思う 【接種率80%】 手遅れか、ワクチン接種者、…タヒ
://kizuna.5ch.net/test/read.cgi/hikky/1674967026/l50
>>548
だから馬鹿なんだろw
そもそもググりゃ出てくるけど納品書や注文書
仕様書やら年末調整
印刷考えたものばかりだよw >>533
>他のデータベースにはこの機能がない
馬鹿は黙っていればいいのに >>535
>自動採番とか後々考えるとトラブルの元
この機能がなぜあるかわからない馬鹿は黙っていればいいのに >>551
トラブルになる事象が分からない時点で関わったシステムの規模が分かる
何で自動採番じゃ無くてGUID使ってるのか理由が分からないんだろうな >>555
無知の馬鹿はお前
例えば
>>533で
>他のデータベースにはこの機能がない
と書いているがOracle,Sybase,MySQL,Postgresql,SQLiteにもこの機能はある
知ったかの無知無能の馬鹿は消えろ Excel方眼紙を使う人の頭はこういうものだという実例ですな >>556
機能が無いって書いたのは俺じゃ無いぞ
レスもちゃんと読めない様じゃ… 誰がレスしたか勘違いして馬鹿っていってる低脳が何を言っても無駄やなw >>558
それはすまんかったな
しかし、自動採番がなぜあるかわからん馬鹿だろ、お前 アホやろ存在する理由の問題じゃ無いんよ
トラブル時や大規模なシステム組む時の色々で自動採番した時にキチンと対応出来ないとトラブルになるんよ
その事例が分からないならその人の経験が知れるって言ってるんよ
でもってそういったトラブルはGUID使う事で簡単に回避可能 >>533
Oracle: GENERATED ALWAYS AS IDENTITY/GENERATED BY DEFAULT AS IDENTITY
MySQL: AUTO_INCREMENT
PostgreSQL: smallserial, serial, bigserial
今どきメジャーなDBMSで自動採番持ってない奴の方が珍しい
>>535 を含めたバカは使うなっていう意見は正しい
まあそんな奴に開発させんなという意見の方がより正しいがw 言い方を変えよう
開発運用メンバー全員が必要な知識を保有していて対応できるなら問題ない
だけどスキルが足りないとかうっかりミスが発生するなら自動採番はトラブルを発生させる
>>561
お前さんはレスした人間をうっかりミスで間違えた訳だ
こういった人間が居るならトラブルになる訳だよ
残念だけどお前はお前自身の行動でそれを証明してくれた
気にする必要は無い
人間はミスするもんだ
人間がミスしてもすぐにトラブルにならない様に考えるのは頭のいい奴に任せておけ
無能の出番は無い >>566
何でわざわざ教える必要があるの?
トラブりました解決できません
効果的な改善方法教えてください
って馬鹿から人月200、300取ってコンサルするのが俺の仕事なんよ
メシの種やで >>567
はい、逃げた〜w
まあ低能のやらかし事例なんてくだらん内容だろうしな 自称低能コンサルトやらがレスつけてて草
顔真っ赤なんだろうなw このスレ怖い
レプリケーションとか知らないんだろうな >>573
お前のせいでスレが馬鹿だらけなの露呈してみんなダンマリやん なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
ワッチョイ fd7c-l9W9
ワッチョイ 1501-rc3u
スップ Sd03-O7MM
ワッチョイ a38e-O7MM
NG推奨 そんな掲示板では無くMSのドキュメントとか読めば良いと思いますよ
マスター1台読み取り専用複数台ならそこまで問題になりませんが書き込みまで複数台用意しようと思ったらもう無理ですよ >>523
@"D:アカウント.csv" と @"D:\アカウント.csv" は意味が違うから注意。 >>577
マルチマスタだとそりゃ色々トラップあるわな
別に自動採番に限った話だけじゃ無いだろ なんか延びてると思ったら、元質問者ほっぽりだしてレスバ始めるいつもの光景だった 本当にアホやな
だから自動採番じゃ無くてGUID使っておけばその部分は面倒減るやろ
でもって色々有るけど話題が自動採番だったからそこだけに言及した訳やん
でもってマルチマスターなんてそこまでの規模のシステム経験なきゃ知らんやろ
だから大規模システム云々言った訳やん
常に大規模システム前提にしてるのとDB1台で済む仕事してる人じゃ考える事が違うんだよ
>>579
自動採番でお前はどこまで考えられなかったんやろ
何がトラブルになるかも知らない
そりゃ話は並行線よ 自動採番使っちゃいけない理由がマルチマスターとか草生えるわ
しかも対策がGUID使うとか小手先にもほどがある
自称大規模システム経験者のくせにこんなことも知らないとか顔真っ赤だろ
キー値にランダムに生成された GUID を使用しており、大量の行を挿入した場合、インデックスにランダムな I/O が取り込まれるため、パフォーマンスが低下する可能性があります。
GUID はさらに、他のデータ型と比較すると比較的大きいものになります。
通常、GUID は、その他のデータ型が適さないような非常に限られた場合にのみ使用することをお勧めします。
https://learn.microsoft.com/ja-jp/sql/connect/ado-net/sql/compare-guid-uniqueidentifier-values?view=sql-server-ver16
そもそもマルチマスターなら自動採番だけ対策してもダメで他の項目での衝突とかにも対応しないとダメ
またマルチマスターのために自動採番の開始番号をサイト毎に変えたりすることもできたりする機能があることも知らないのにドヤるのは流石に恥ずかしいわ 現実見ろよ
大規模システムの多くはGUIDでやってる
microsoftだってDynamicsCRMの裏で動いてるDBはGUIDやでw CRMだけじゃ無くTeamsとかSharePointとかTFSとかもですよ > 大規模システムの多くはGUIDでやってる
妄想でないならソースよろしく
まあSharePointとかはセキュリティ上の都合もあるからリンクURLにGUIDは使ってるけど元データの管理に使ってると言うソースね こりゃたまげたw
オンプレのSharePointとか立てた事が無い?
普通にSQLServerのテーブルのデータなり設計見りゃ良いじゃ無いですかw 何だろクラウドで何でも用意されて便利になったけど弊害なんかねぇ
ある意味“ゆとり”やなぁ
昔はどうだったとかこの業界じゃあまり意味は無いけど他のシステムがどういうデータ構造してるとかテーブル設計してるとか見えないのも勉強の機会を奪うんやな
でもって何でこういう設計になってるんだとか考えないからこのスレの連中みたいになるんだろうな >>564
馬鹿は自動採番をマスターコードに使うとかしか思ってないのか
こういう馬鹿だからExcel方眼紙を作るのか >>588
なあ話の流れが何から始まってるか忘れてないか?
そういう事に気付けないから方眼紙作るんじゃねw
レス見りゃ分かるけど俺は方眼紙作るなって言ってる側なんだけどそんな事も判断出来ない?
もう負け犬の遠吠えになって支離滅裂ですよっと >>586
> オンプレのSharePointとか立てた事が無い?
SharePointは試行として15年前に立てたけど流石にスキーマまでは見てないわ
で、テーブル名とフィールド名書いてくれ、明日確認するから
あと、大規模システムの多くがGUIDの根拠もよろしくねw
>>589
> もう負け犬の遠吠えになって支離滅裂ですよっと
お前がな >>590
ほぼ全部のテーブルのPKはGuidだから存分に確認してくれ あのぉ…
15年も前に試行で立てたサーバが使われずにそのまま残ってるのってヤバく無いですか? スレに関係ないレスバはそろそろ止めてくれよ
口汚い煽り合い罵り合いは傍から見てて不愉快以外の何物でもない >>592
いや、具体的なテーブル名とフィールド名頼むよ
まさか出せないわけじゃないだろ?
あと、大規模システムの多くがGUIDの根拠はどうした?
>>594
試行って書いてあるだろ、6ヶ月ぐらいで廃棄したよ
そもそも15年前と今でスキーマ違うだろうし
会社に行けば今のSharePoint使ってるところあるからそこに聞けばわかる ここに巣くっていらっしゃる自称有能な人たちの正体がこれだからな。
575 の後にこれだけ続けられるのはすご・・・くないな。 「初心者用」スレでレスバを繰り広げてしまうオジサンの悲哀 誰にも構って貰えないからここで憂さ晴らししてるんだろうな >>458
これは香ばしい
IDENTITYめっちゃ好き
これのおかげで捗ることは多々ある 自動採番でユニークIDあるほうが
データベースは扱いやすい。
IDがないデータベースとか逆に怖い。 ユニークIDが無いとか誰も言ってないんやで
そのユニークIDが整数型の自動採番なのかGUID又は文字列型のGUID7日って話
でもって1日以上経ったけどCRMとかのスキーマ確認終わったんかね
まあ確認して違うなら鬼の首取った様に言ってくるはずだから結果は見えてる
息してるんかなアイツ
今頃自分の無能さとキャリアの無さに震えてるのかもしれん >>606
まだいたのかよw
具体的なテーブル名とフィールド名はまだ出せないの?
待ってるんだけど 何の意味もない事を連呼する無能
例えば特定の1テーブルを俺が指定してその通りだったらそれで良いのか?
それ以外は全部自動採番かもよw
普通そう言った作為的な事を避ける為に指定するなんて事は避けるのが“常識”
まさかスキーマ調べるのに全テーブルのリストを一気に出す方法をご存知無い? 常識も知らず自らやると言った事もやらない
無能の極みやなw えっ?
そんな中身のない文章書く暇あるならサクッとテーブル名とフィールド名書けばいいのにw もう少し落ち着いてw
スレ的な事で言えばSqlConnectionにGetSchemaが有るのでそれでスキーマ情報は取れるかと思います
その上で各テーブルのPKのフィールド情報とか取れば良いのかと思います
調査してるのに相手に特定の情報を求めるのは流石に>>607が変だと思います
ペネとレーションテストとかだって態々テスト業者にココですよとは言わないです
それと法治国家で有る日本においては疑ってる方がそれは間違いだの嘘だのを証明する必要が有るので日本人としてもおかしいですね
何より情報提供が無ければ調査出来ない事ならともかく調査に関係のない事を要求して待って調査出来てませんは何の言い訳にもなりません
無能は言い過ぎですが仕事は出来ない人の典型です >>610
ブーメランやなw
そんなと事書くとか待つ間に調べりゃ良いのにw 双方とももう少し大人な対応出来ないんですかね?
クラウド版しか使った事が無いのでググってみました
ttps://debajmecrm.com/dynamics-crm-team-membership-table-audit/amp/
これだけじゃ判断できないとかそういう場合は自分達で色々調べてみて下さい
少なくてもGUIDが使われてるという事は間違い無さそうです こんなところでしかイキれないおじさん、かわいそかわいそなのですよ なんかよくわからんけど自動採番の是非で争ってんの?
レプリケーションされる側は自動採番切ればいいんだぞ CSV→SQLite→ExcelCSV→SQLServer→自動採番→GUID→そして今↓
ワッチョイ fd7c-l9W9
> 大規模システムの多くはGUIDでやってる
> オンプレのSharePointとか
ワッチョイ 1501-rc3u
> テーブル名とフィールド名書いてくれ
スッップ Sd43-S2bO(レプリケーションやマルチマスタを引き合いに出した人)
> ワッチョイ 1501-rc3uが調査すべき 商品コードみたいな人間用の識別コードは別途設定する感じですか? >>620
まあ立証責任って奴だよな
俺の言ってることが疑わしい
でも日本じゃ疑わしきは罰せずの原則
俺が本当だって証明する必要は無いけど疑ってる方が嘘だと証明する必要はある
この辺が分からないのは知識が足りないか無能 >>621
商品コードが一意ならそのままPKにすりゃ良いんじゃね
何でわざわざ自動採番使うの?無駄でしょ 技術的な選択に万能なものなんてないんだから
自動採番でもGUIDでもその他の選択肢でも
それぞれの長所短所の両方を理解して状況とトレードオフを判断して使い分けるのが当たり前
特定の選択肢にあたかも短所がないように喧伝する人がいたらそれはエンジニアに求められる最低限の思考ができない人なので相手にするだけ時間の無駄 >>625
その通りだよ
だから大規模だと自動採番は問題になる事が多いからGUIDを採用する場合何多いって俺は言ってる訳よ
大規模やった事ないんだろうなっていうのも小規模なら自動採番でも問題になる事は少ないのでそういう経験しか無いんだろうなって言ってるだけ
つまり小規模での自動採番は誰も否定してない
これがお前の言ってる事だと思うんだけどそれすら読み取れないのはやっぱり無能 マルチマスターガーとか言ってるやつはID以外の二重登録とか考えてもいないんだな こういうのって前提を後から色々出してくるから、議論にもならないんだよな
マルチマスターとかguiduuidとかパフォーマンスとか
「俺はこうだからこう思ってるんだよ」の「こうだから」が後出しとかね
まあ見てる分には勝手にやってろだけどなw >>630
そりゃ最初は議論するつもりが無いからな
言った様に世の中での大規模システムはそうなってる
やってる奴は知ってる分かってる説明の必要が無い
それを商売にしてるんです書く事は出来ない
更に言えば知る必要も無い
無能は黙って言われたことに従ってれば良い
自分で考えて何でそうなってるか分かった奴が上に行ける
世の中そんなもん 自分で何を言ってるかわかってないやつは上には行けんぞw つか、GUIDでオッケーとか言ってる奴は
GUIDは「自動採番」じゃないと思っているのか?
GUIDは衝突しないと思っているのか?
GUID使えば大丈夫みたいな認識で大規模システム語るなよ ソケットでサーバーからクライアントにメッセージを送るためのにはどうすればいいですか? >>633
衝突したら取り直せば良いだけやん
リトライ処理どうせ書くやん
頭悪すぎでしょ
ああリトライ処理とか書かない糞プログラムしか書かないから想像出来ないか >>634
ググれ
ググれば腐る程サンプルコード出てくる
その上でこうやって実装したんだけど動かないとか質問しろ >>635
え?もしかして自動採番でも取り直せること知らないの? 便利なんて一言も言ってないけど?
アホ?
デメリットが少ないって言ってるだけ >>637
何か的外れなツッコミだなって今日の書き込み見てみたら全部そうだった
プログラムとか以前に頭悪すぎて草w で肝心のワッチョイ 1501-rc3uはどうしたの?
MS製品がGUID使ってるの分かって恥ずかしくて出てこれない感じ?
今頃釣ってそうw
15年前にオンプレ鯖がどうこう言ってたからそれ以上のキャリアあるんでしょ?
全く意味の無い成長の無い人生だって知ったらもうねw >>640
おう、ズレてることに早く気づくといいな
とりあえず就職してみたら?
想像の世界に生きてたらこういうことになるから >>639
デメリットが少ないのは普通、便利だっていうんだけど
具体的にどういうデメリットが解消されるって?
まあ、揚げ足しかとれないで解消しないけど少ないとか言い出しそうだな >大規模だと自動採番は問題になる
どういうケースだろ >>634
acceptした後にそのソケットにsendする。 >>646
一番真っ赤なのが朝から晩まで常駐しててもうね 何でも良いけどMS製品で大規模に使われるシステムにGUID採用されてるって事に意義は無いって事で良いか?
何んでとか理由まで聞くのはアホ
何でも教えてもらえると思うな
そこからは人月200、300の金が掛かる話や
お前らもそうやって仕事してるんだから理解出来るやろ んーと、それぞれの案件によって使い分けるんだぞw
無職は一例を見るとそれが全てと思うの >>651
んな事は分かってるよw
だから話の流れが分かってない馬鹿って言われるんだよ
MSドキュメントを持ち出して来たから実例として出しただけやん
プログラム能力云々じゃ無くて基本的無能だな 言うことがいちいちズレてるなw
しかもそれに気づかないから相手がズレてると思い込んでて結果これだよ 最近AWSのインフラ構築をC#で書いてみたけど、別にC#じゃなくてもいいね。
型が厳密なせいで肩がこる書き方になるし、
型がゆるーいスクリプト言語のほうが向いてる気がする むしろ散々型を気にする言語使ってたら、逆に緩い言語使う時に戸惑うよな まあそれは気分だよなあ
緩くてエラーとかになると正反対の気分になるしw MSがGUID使う理由は大体見当つくけど、彼がそれを説明できないのは笑えるね
おそらく上の人にそう言われた程度しか知らないんだろうな >>660
ブーメランじゃねw
お前も説明してないので同じ事がお前自身に適用される
論法もまともに出来ない無能 >>661
自動採番はInsertするまで決定しないからそれをFKで使う関連テーブルの更新が割りと面倒
それくらい気が付かなかったのかな? >>663
それ大規模で関係ある?
どの規模でも同じだよね ホント話の流れとか前提とか把握してないのに無駄に突っ込む無能って害悪やな >>664
大規模開発限定なんて君しか言ってないけどw >>666
悔しいのは分かるけど意味不明w
俺に説明出来ないだの気付かないだの言っておいてそれはガイジやろw >>668
相変わらず自分の見解は無しw
よくそれでマウント取れると思ったな >>670
書かない理由も既に書いてるけど読めない?
ああ理解出来ないから馬鹿なのかw >>671
661 返信:デフォルトの名無しさん (ワッチョイ fd7c-l9W9)[sage] 投稿日:2023/02/22(水) 12:07:36.36 ID:aZ0d5T8Y0 [4/9]
>>660
ブーメランじゃねw
お前も説明してないので同じ事がお前自身に適用される
論法もまともに出来ない無能
説明していないと自白しているのは確認したw 書けば書くほど馬鹿を晒すなw
俺にブーメラン帰ってないでw まあ技術的に返せなくて人格攻撃しかできないような奴のレベルは推して知るべし >>663
それが困る場合は IDENTITY じゃなくてふつうに SEQUENCE 使えばいいんじゃね UIを作り始めたので非同期処理について調べ始めてみました
なんとなく概念的なものは分かるのですが記事によってこう書くべき/書くべきじゃないというのがバラバラなので基本的な指針がイマイチ掴めません
例えば非同期な関数の中はすべて非同期処理にするべきなのでしょうか?
同期処理を中に混ぜても書けてしまうのですが同期処理と非同期処理はそれぞれ完全に分けて記述するのが一般的ですか? すべて非同期にするような非効率なことしなくていいだろ 処理が終わるまでに他にすることがないなら同期でUIフリーズさせとけばいい
そのほうがユーザーにもわかりやすい UIでボタン押したあと一回一回終わる処理ならawaitで同期して書く
トリガ受けて常駐する処理なら完全にわける 一般ユーザって馬鹿なんよ
UIフリーズしたら裏でどうこうなんて知らないんだからアプリが重いとか処理が固まったって言うんよ
要は糞アプリ認定 実際に重いんだから当然だろ
処理を並列化してマルチコア対応するのなら非同期も意味が出てくるからやるといい
出来ないならヤメロ
WindowsはマルチタスクOSなのでエロビデオ見ている間に終わればいい windowsじゃUIフリーズはOSが応答なしと認識して
殺しますかってダイアログ出してくるから駄目や >>679
今時UIフリーズは見っともないぞ
1秒とか極短時間ならまぁありだと思うけど 普通なら1秒かからない処理まで非同期にしてエラーメッセージすら出せなくなったWindows11さんのようにならないように気をつけてね ま、極論だけどな
wpfならコマンドボタンにAsyncRelayCommandをはめるだけだ
簡単だな
でもめんどうだからウインドウまるごと無効化とかしちゃうよねw >>689
めんどくさい上に意味がないんだよ
反論できますか? >>690
既に馬鹿なユーザによって糞アプリ認定されると書いたけど?
糞アプリ認定ってのは客が誰かによるが業務系アプルなら当然改修しろって言われる
スマホアプリ見たいな奴なら売れない
反論できる? >>690
お前の言ったエロビデオをPCで見たとしよう
ビデオ閲覧ソフトが面倒だって理由でUIフリーズさせててエロい画面が更新されずってなったら使わんだろ?
お前が言ってるのはそういうことだ
商品や製品レベルじゃ無いんだよ 別にアプリの操作は出来なくても構わないけど、ウィンドウ移動すら出来なくなるはちょっと
今なら大した手間でもないのに まあawaitから抜けたタイミングでCancelされたりDisposeが走ったりをいちいちチェックしなくちゃいかんのは面倒ではあるな
ただ、これを怠るとクソアプリになっちまう ようわからんかったら全部Task.Runに押し込んでコールバックすればいいよ たんに非同期とかいうと範囲が広すぎるからな
まあ、非同期は目的じゃなくて手段なんだから、目的をはっきりさせよう
>>676のいう非同期ってのはawaitに限定した話で良いのか? >>657
型が厳密なほうが好きだ。
varもなるべく使わないできっちり書く。
スクリプト言語で型がなくて文字列でも整数計算できたりするのはいいのだけど、
Pythonのように型宣言がないのに型がある言語がつらい。
intを入れていた変数の中身がいつの間にかfloatになっていて原因を調べたら、
途中の除算のせいだった。Pythonだとint型/int型=float型。 どうでもいいけどそれは変数の使い回しも問題じゃないのん?
除算したらもう違う意味のものやろ 右辺でnewしててそのまま扱うだけの時なんかはvarしてるけど
関数の戻り値受ける時とかは型名書いて宣言してるかな C#はvar使えるけど強力な型推論でコンパイル時点で弾いてくれるから別に使ってもいいかな VBだと勝手にキャストされたりするけど、C#はそのへんの制限強いもんね C#の型推論は出始めは強力な部類だったけど今はrustとかと比べるとかなり貧弱なんだよな
まあ技術や概念は進歩するんだ >>699
定数変数の倍数に丸めたくて、
hoge = 10
fuga = fuga / hoge * hoge
とかしたんだよ。たしか。
>>700
>>698を書いている時に知った。 自分はrustは勉強したけど使ってない
C#の方がいいから
外からの刺激は必要だと思うけど全部が全部取り込む必要はない
こんな微妙なタイミングでジェネリックで計算できるようになったのはrustからの刺激が原因だろうけど
今更感がある ジェネリックで計算できるようにしてほしいという要望は相当前からあったぞ
むしろInt32とかは最初からIArithmeticインターフェイスを実装しかけてコメントアウトで外してる
おそらく実装者の技術的限界で見送り続けてきたのがようやく実装できたんだろ 一部で要望はあったけどずっとなくても何とかやって来てこの微妙な時期での実装
rustのマクロを駆使した超強烈な実装を見て手法が確立されて実装されたんじゃないかと まあそう思いたいなら思っとけ
なんでrustとかruby使ってるやつはこんなんばっかなんだ ジェネリックで計算ってどういうこと?
言語仕様なんて全然追いかけてないからわからない >>714
ふむふむ、なるほどねー(何もわかってない) 超簡略して書くと
今まではジェネリックで単純に計算できなかったけど制約付きでできるようになりましたよ >>714
ググった。マジすか。
昔から欲しかった数値型制約ってことすか。
待ってて良かったC# >>698
俺も書くときはvarが好きで
読むときはvarは嫌い
って思ってたらVSで一発で変換できる機能があったから使ってた varってint入れた後、変数再利用でstring入れたりできる? できない
暗黙なだけで型を持った変数だから
なんでも取れるオブジェクトではない C#やってるせいか、型宣言しないJavascriptは不安になる。
でも、そっちの人達は逆に冗長に感じるんだろうか。 JavaScriptの型はこんだけしかないから
https://developer.mozilla.org/ja/docs/Web/JavaScript/Data_structures
クラスはなんちゃってクラスでメソッドやプロパティとして使える属性をいくらでも増減できる連想配列でしかないから変数に型を宣言するだけ無駄
それを無理やりやるとTypeScriptになる そもそも変数を再利用しようとするなと
バグの温床だし、新しく変数宣言しろ >>725
++とか/=とか使ったことのないタイプかw
今回問題になってるのはPytonで除算に二種類の演算子があって片方を使うと小数点以下が出るということだけなんだよw >>726
さすがにインクリメントとかにはどうこう言わんけど
ここで言う再利用ってのは、別の目的に使いまわすなってことな
わざわざstringにしたいって事は出力等が目的だろうから、それ用に変数作れ ref した引数に値を入れなくてもいいけど
out する引数は値を入れないとだめなん? ちょうど今GIMPのPythonでint→float→intとやらされて色々と考えさせられるものがあった pythonって、型変換によって出る数値精度の劣化ってどう思ってんだろって常々疑問に思ってる varならvarで全然いいけど、
一番嫌なのは「なんでここは分かりきってるのにvarじゃないんだよ!」って思わされること
理不尽なストレスが嫌なだけ。VSなら提案されるからそんなにないけどね 自作のコントロールで矢印キー押すと
なんでかフォーカスが移動して入力不能になる現象が発生して悩んでたけど
ProcessDialogKeyをオーバーライドするっていうのやってみたら収まった >>732
使用箇所を文字列検索かけたときにvarになってるとヒットしないのが嫌だな
visualstudioならvarから元の型に戻せるから戻しておいてほしい 文字列検索をやめればいいんじゃね
参照箇所の検索でヒットするかしらんけど 型名で検索なんかしたことないわ
どんだけ長いメソッド書いてんだ VSの便利な機能を知らないから型名で文字列検索してるんだろう
かわいそうに >>734
文字列検索をする必要がほとんどないのがVSのC#の大きなメリットなのに C#の後にC++/CLRで作業するとめっちゃストレス C++/CLIじゃなくて?
CからC#を呼ぶためのラッパーを作るのに使ってる。
C→C++/CLI→C#
言語としてはカオスすぎると思う。 managedな参照や名前空間、それにfinalizerなどが追加されたくらいで構文等も明解だと思うがなあ。
カオスというなら当のC++自身の方がよっぽどカオス。 カオスと言うか黒魔術みたいなレベルだし呪文を唱えさせられるのがキモイ すごくスレチだけど聞いてみたい。
C・C++ の地雷ってどんなの? >>748
その辺なら以前に比べてだいぶマシになってるぞ
生の配列とポインタの代わりにVectorとか使えばいい ほかにも標準と呼べるオープンなドキュメントが無い、環境依存、未定義動作の多さ、文字列操作の貧弱さなどクソ要素挙げるとキリがない
速度だけがメリットだな テンプレート多用し出した辺りからおかしくなって
マネージド対応する頃には別言語になってた 子どもの頃にN88から始まってC++/Win32APIでもしっかりもの作って
自分のHP作るのにJavaScriptやPHP書いて、そんで近年はC#してるから
まぁ型宣言あるのも無いのもどっちも受け入れられてるなw 読むのにはあったほうがいいのは確実で右クリックメニューで一発変換なので
気がついたら俺がvar消しとくから大丈夫だ csprojのImport要素で読み込んだmsbuildタスクの.targetsにて$(IntermediateOutputPath)が機能せずnullなのですが
読み込み元プロジェクトのIntermediateOutputPathを得ることは不可能なのでしょうか? >>757
何で読むのに型が必要なの?
VSでカーソル合わせりゃ型名分かるやん
VS単体でできたか忘れたけどReShaper使うと型名をグレーで表示してくれるのもあるやん
何よりvarから変換してそのままバージョン管理にコミットしてプッシュするん?
無駄に色んな箇所の修正履歴付いて糞面倒
やっぱり底辺無能プログラマって考え足りないんだなw 別にやるなとは言わんけどある程度状況が落ち着いてから一気にリファクタリングしろよ
そもそもチームやプロジェクトでコーディング規則決めておいてコードフォーマット共有しておいて変換される様にしておけば良い
チームやプロジェクトでvar使うルールなら黙って従え
自分の好きなルールにしたけりゃ出世しろ >>759
逆に言うとカーソル合わせないと分かんないじゃん カーソル合わせないと分かんないコードと
見ればわかるコードと
どっちがいいか議論の余地もないですね そもそもが厳密に型がわからないとコードを理解できない人間がコード書くなと思うが >>763
だからReShaper使えばいいじゃん
そもそもコード追うのにVS使ってコードジャンプとかも使うじゃん
そうか!
無能だから紙に印刷したコード見てるわけか!
なるほど納得だよw まあ大御所様がループカウンタとか定数以外使ったらぶっ殺すぞって言ってるんだからそれで終わりよ varが出来た当時は自分も馬鹿だったからvarには否定的だったけど
今はvar使わない人間は真の馬鹿だと思ってる でも型名にしたところで分かるのは宣言の所やん
コードをスクロールして見ていってこの変数なんだっけってなったら結局カーソル合わせて確認するやん
そうか!
無能だから未だにハンガリアン記法で変数名付けてるんですね!
でもそうなるとvarでも良いんじゃ?
いやぁ無能の考えることは分かりませんなぁw だって作ったマイクロソフトさんも勧めてない使い方してるのに何言ってるの? >>773
MSのコード見て見れば?
roslynだろうがcoreだろうがvar使ってるよ? >>775
使ってない人がウンコだと気が付けよ
新しい他の言語でもvar相当のものが実装されててみんな使ってる var相当のものを使わない派は多分全体の0.01%ぐらいの割合だよ ぶっちゃけどっちでも良い
varで書かれてようが型名だろうが読むのに困った事は無い
勿論どっちかに変換しなくてもだ スレチだけど、教えて。
>>773
そのマイクロソフトさんが勧めていない、ここで挙げられた var の使い方ってどういうのがあった? varが便利だなぁって思うの
長ったらしいクラス名のオブジェクト使うときくらいかなぁ
後はC時代に生きた俺としては型名無しで受けるのは違和感しか無いし >>773
MSのコード規則が世界の全てじゃねぇぞw うおー、iPhoneじゃセミコロンが打てないw
コード書いてこんな場合は型名の方がいいよって書こうとしたのに
残念だ そもそもリンク貼られたコーディング規則にvarを使うなって記述は無い
勿論
>割り当ての右側から型が明らかではない場合,
>var を使用しないでください。
といった当たり前の注意は有る >>783
すまんが意味不明
アイポンだけどセミコロン打てるで? そうだ、VBAのvariant導入しよう
何でも入れ放題、違う型にも再利用し放題だぞ その場でメソッドから戻り値受け取る様な場合にはvarで良いが
予め宣言しておく変数を使う場合は型名で宣言してるなぁ 命名さえきちんとしてればvar使おうがどっちゃでも構わんよ
うちの会社では全面的にOKにしてる >>792
try-catchの外側で変数宣言しないの? >>793
ああわかった
お前のメソッドは無駄に長いんだよ
そのブロック外に出せ よくわからんけどこんな感じの話かな?
一般的な使い方
try{
何らかのファイルを読み込んだりするメソッド()
}catch
上の初心者の使い方
べつの何らかのメソッド(){
try{
File.ReadAllText()
}catch //もうここでキャッチしてる
} varで宣言するか、型名で宣言するかの話な
string s;
swith(hove)
{
case 1:
s = “one”;
break;
case 2:
s = “two”;
以下略
みたいな時に、
string s;って書くか、var s = “”;みたいに書くか そういう事じゃなくてtryの中での何かしらの情報をcatchの中でも使いたいって事なんじゃね いや、一連の流れはvarを使うか型名を使うかの話なんだが? ダメな例外の使い方
Tekitou a = null;
try{
a=適当なメソッド();
} catch(略)|
return null;//もしくはエラーコードなんか返したりするw
}
return a; それでメソッドの戻り値がnullかどうか判定してると言う…
必要な場合もあるかもしれないけどよく考えてみて欲しい
var a=適当なメソッド();
a.何かする();
return a;
でtry-catchは呼び出し元で判定でいいんじゃないかと 上の初心者は
Tekitou a = null;
がtryブロック前に必要だからvarじゃだめだって言ってるんだろ? >>804
違う
上位で捉えたら例外の意味が伝わるのにnull何かにして渡す意味はないよと
try-catchの場所を間違えてるよと 例外の内容を精査する必要が無いなら、握りつぶす事はあり得る もし対応不能な例外なら
var result=何とかメソッド();
if(result is null)
{
console.writeline("原因はわからんけど失敗しました");
return ;
}
↓こうなったほうがいいんじゃないか?(個人の感想です)
try{
var result=何とかメソッド();
}
catch(適当)
{
console.writeline("ファイルがなかった");
}
catch(また適当)
{
console.writeline("ファイルのフォーマットが間違ってた");
} >>800
初期化してない可能性があるのに使えるわけないじゃん センスゼロの奴に限って非推奨なことやりたがるってよくわかるな 横道というか、スレタイも >>1 も読めない奴らに草 >>812
話の流れをもうちょい前から読んで見ることだなw try-catchとか関係なくて
nullに初期化したいときにvarが使えないってだけの話だろ
varは型が推論できないとダメなんだからそういうもんだってだけ
変数をnullで初期化することの是非や例外の扱いは別の話 初心者スレで非推奨のvarの使い方勧めるのやめてくださいね どうしてもvarを使ってnullで初期化したいなら、たとえば
var s = (string?)null;
でいちおう文法的にはいけるね
ローカル変数宣言はすべてvarで統一するようなコーディングスタイルを採用してるなら、
個人的にはちょっと賛同しがたいけど、そういうポリシーということでアリなのかもしれない Cシャープ滅茶苦茶勉強して知識死ぬほどあるのに
競技用プログラミングではセンスある未経験に負けるのが悔しすぎて泣きたすぎる (センスとか言ってる時点で知識量が足りねーんだよ) ufcpp見るとだいたいvar使ってればOKでコードが読みづらくなるならvar以前の問題が何かあると書いてる
まったくもってその通り ufcppより経験を積んでる自信があるなら論破してこい そもそもvarは、コードを書く人のための機能であって
コードを読む人のための機能ではないと思うぞ VisualStudioは、 varを使うか型名を使うか、どっちにしても余計なお節介出して来るんだよなぁ ただでさえプログラムは面倒くさい事のオンパレードなのに、var位使って行こうぜ >>822
完全に同意
否定人のコーディング見てみたい LINQの場合、var書かないわけにもいかないし、その時だけだと統一感が悪い。 >>835
お前はお前で匿名クラスなんて使ってんじゃねえよ
上位互換のタプルができて何年経つんだ Item1とかItem2とか、どれが何のためのデータなのか解らんようなの使う気にならんな…… 命名が難しいのはだいたい設計が悪い
ローカル変数ならともかく引数は明確な役割があるはず >>843
だからそのprivateメソッドの方が尚更面倒なんよ >>847
構造体だからパフォーマンスが高いんだろw 俺、パフォーマンスの話なんかしとらんからなぁ
まぁ、ValueTupleも場合によって使うけど、だいたい即値分解してしまうからあんまりメンバ名付けたことないな 正規表現で、一致した文字列のうちの一部だけを変更するにはどうすればいいでしょうか。
例えば、
\[.+\|.+\]
というパターンでマッチングして、マッチした値の[と|と]を置き換えたいです。
↓例
入力:[あ|あいうえお]
置換後:<あ-あいうえお>
※[を<に、|を-に、]を>に置き換えています。 \[(.+)\|(.+)\]
<$1-$2>
これくらいハゲでもわかる ModernWPF UIのコンテントダイアログでプログレスダイアログをいい感じにMVVMで実装する方法ないかな?
やりたいこと:
これをProgressDialog.xamlで定義してEventAggregatorでイベント飛ばしてプログレスバーとテキストを更新
https://github.com/Kinnara/ModernWpf/wiki/ContentDialog
令和にもなって、IProgressDialogやTaskDialogというか別ウィンドウ出すのはなんかダサいし。 >>858
OK、そっちで質問してみる。
マルチポストになっちゃうが。 >>1にも
>内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
とあるしね あるクラスの中に定数やenumを定義したとき、そのクラスのインスタンスを複数個生成したら
全く同じ定義がそれぞれのインスタンスに含まれてしまうのでしょうか?
もしそうでも別に実害は無いですが、なんか気持ち悪いです。 アホw
出来る出来ないの話と
実際にやるやらないは別
気持ち悪いと思うならやならければ良い
それがクラス設計ってもんやろ >>863
では、862の現象が事実だと仮定して、それを回避するには
例えばCarState列挙型を定義したいときは、Carクラスとは別にクラスを作ってそこに定義するしかないのでしょうか? ただの定義にインスタンスもなにもないよ
気にする必要は無い そこらのSEよりC#のコンパイラのほうが何倍も賢い >>864
何で列挙型をクラスの中に作るって発想しかないの?
CarクラスとCarState列挙型を作るだけやろw
アホw >>862
constはクラスの中に入れんとダメだが、enumはclassの中じゃなくても定義できるやで 結局は基礎が出来てないだけかw
出来る事が分かってなきゃそうなるわな
特に基礎レベルで分かってなきゃ尚更 constやenumがビルドしたらどうなるのかとか、classの実体がどうなるのかとか
そういうのちゃんと勉強した方がいいね >>869
それは別にいいだろ
作れるようになってんだから
クラスの中に入れちゃいけない縛りだとprivateなenum作りたいときどうすんの こういう文章の意味が分からずに突っ込んで来る連中って本当にプログラム書けてるの?
プログラム“言語”だぞ >>874
逆になぜそこで「しか」と思っちゃったんだよ >>875
お前昨日のやつだろ
自分の言葉がどれだけ怪しいか指摘されたことないのか?
煽り抜きで見るからにアスペだぞ
指摘されても自分で否定して忘れてるならこれからは少し聞く耳を持ってみろ 昨日のやつ?
俺はDBのPKフィールドはGUID使えばリスク減るって言ってた奴だよ
別人と勘違いすんじゃねえよ
文言で区別付くだろ
これだから無能はw 相手の質問に煽るだけって時点でね…
そもそも質問も答えもまだ理解できてないんじゃないか >>878
そっちの無能かw
どっちにしろ無能じゃねーかw は?
お前ら全員が無能だって証明されて終わったやんw
何言ってんだ無能w >>883
どこを見て有効だと思ったんだw
NG推奨はお前だアスペ 前回は流してたんだがGUIDをキーにするとした場合、
少ない時間で大量にデータが登録される際の並び順ってどうやって保証するのかね
(INSERT~SELECTで複数件登録するとか)
そういう時は使わないって回答なんだろうか IDENTITYの自動採番だってそういうの保証はされないんじゃね?
何らかの順序情報が必要ならそれを持たせるようにしないと。 >>886
一括の複数インサート時の順序は保証されてる
複数テーブルにまたがる複数のトランザクションならインサート順とコミット順が前後する可能性はあるけどインサート順とidentityの大小は基本的に保証されてる
保証されないのはIDENDITY_INSERT OFFのような特殊な使い方をした時だけ
ついでに言うとコミット順で完全にソートできるようにするには1つのトランザクションがコミットするまで次のトランザクションを待たせる作りが必要になるので一般的にはやめたほうがいいやり方 普通は1トランザクション内で保証されていればいいと思ってるけど
仕様によっては複数トランザクションでも保証しないとだめなケースもあるとしたらそうかもしれないね
スレチだったわすまん GUIDはメリットがまったくないわけじゃないが、言うほど強力なものでもない
何しろ彼でさえ理由を具体的に説明できない程度だからね
で、問題はユニークであることが完全に保証されないからそれなりのケアが必須だってことだな >>887
だから他のトランザクションから見てID列の値が単調増加に見えるのはdirty-readの場合だけじゃん。
一般的なread-commited以上なら最大IDより小さなIDが後から挿入されたように見えることもあるわけで。 すまんが、ASP.Net Coreに用意されてる3(4?)つのフレームワークでさあ
ログインページを各言語に対応させるにはどうすればよかんべ?
他の自分で作ったページを多言語化する方法は乗ってるけど、フレームワークで用意されてるログインページ等はどうすんじゃい???
https://learn.microsoft.com/en-us/aspnet/core/blazor/globalization-localization?view=aspnetcore-7.0&pivots=server >>890
何が「だから」なのかよくわからない
他のトランザクションから見て最大IDより小さなIDが後から挿入されたように見えて何か問題あるの?
>>886に書いてある何らかの順序情報を持たせたとしてもコミット順じゃなくインサート順だから全く同じことなんだが? >>892
>他のトランザクションから見て最大IDより小さなIDが後から挿入されたように見えて何か問題あるの?
そこは外のトランザクションから見た場合に挿入順序とIDの増加順が一致することが保証されないという
事実を書いただけだが。
それで困るかどうかは要件次第。
たとえば定期的な処理で前回の処理以降に追加されたレコードを求めるのに前回のmax(ID)を使うとか、
そういう用途には使えない。 いや、明示的にテーブルロックとるかrepeatable-read以上で最初にmax(ID)取得してしまえばいいか?
どっちにしろそのへん意識する必要がある。 >>894
分離レベルで対応するならシリアライザブルじゃないと防げないんじゃないかな?
でも現実的にはテーブルロックやシリアライザブルは同時実行性能を極端に落とすので
挿入日時のようなデータを使って締め前に開始したトランザクションが確実にタイムアウトしてるようなタイミングで締め前に挿入されたデータだけを処理したり
処理ステータスを示すカラムを作って対応する
バッチ処理の頻度や重要度やエラー時に必要な対応によって実装を選択することになる 結局レコードをトランザクションに書き込むタイミングでIDは発行されるしタイムスタンプもその時間となる
コミットしたタイミングなどDBに記録することは不可能だし一体何を問題にしているのやら GUIDとの比較で重要なのは後続のバッチ処理みたいなのがあったときに
IDENTITYの場合はほぼシーケンシャルアクセスで処理できるがGUIDだと完全にランダムアクセスになるので桁違いの遅さになる
外部キーなんかを含めて1ページに収まるレコード数が減るのとランダムアクセスで性能が極端に悪化する場合があるのがGUIDの一番のデメリット
NEWSEQUENTIALID()でシーケンシャルなGUIDも作れるけど分散環境でマージが必要な状況でない限りIDENTITYに対するメリットがない
他にはULID使う方法なんかもあるけどやっぱりメリットデメリットがあるので当たり前だけど用途に合わせて使い分けるもの >>885の言うような順序の保証は単なるIDENTITY任せじゃダメな場合があるってこと。 >>898
IDの発行と書き込み時のタイムスタンプはトランザクションに書き込んだタイミングで同時に行われるから
結局IDとタイムスタンプの順番はおなじになるんじゃね?
コミットのタイミングなど何処にも記録されない トランザクションの外から見た場合、タイムスタンプが古いレコードが後から現れたりするのは変わらん。 >>887
>インサート順とコミット順が前後する可能性はあるけどインサート順とidentityの大小は基本的に保証されてる
インサート順ってなんのことを言ってるの?
まさかSQLの発行タイミングのことをいってるのか? 何度スレチだと言われても耳を貸さない連中だから放っておくしかないべ ニートだからスレタイ読めないのか、スレタイ読めないからニートなのか、それが問題だ! Blazor Desktop でアプリ作る場合、JS 使うのって邪道ですか?
普通はどうなんでしょうか? >>905
邪道というより仮想DOMがよくわかってないと難しいぞ >>905
別に邪道じゃないよ
猫ジョーカーもPrism.js使ってた コントロールのプロパティをVisual Studioのプロパティからいじるのと、
コードに直接記載するのはどっちがベストプラクティスでしょうか? >>908
好きなほうでいいよ
自動生成か自分で記述するかは些細な違い
コメントも残したいなら当然、load以降のタイミングだね >>906-907
ありがとうございます。
今既に使ってるんですが、後になって「JS使わない為のBlazorだろ」とか「JSなしで出来ねーのかよ」
とかいう謎のイチャモン言われるのがちょっと怖かったのです。 Load以降じゃなくてもコンストラクタでも良くない? >>908
デザイン画面との差異が発生しにくいから
コードじゃないと設定できない事以外は基本的にはフォームデザイナでやってる
コードでやられると、一々実行して確認しないといけないし
人によって書き方・書く場所違ったりして追うのが邪魔くさい フォームデザイナは良いんだけど、変更値をコードに出力する方法あるのかな
パラメーターシート作る時毎回困る 昨日一日、メソッドが動かなくて悪戦苦闘してたが
単に、メソッドを割り当ててたボタンのクリックイベントが
なぜか外れてただけだった!
くそ!!!! >>916
なぜ外れたかはともかくなんでそれで一日悪戦苦闘することになるんだ?
真っ先にイベントハンドラにブレークポイント張らないか?
それで呼ばれなかった場合Shift+F12で一発でわかるだろ >>914
デザイナで設定した値全部ドキュメントに出力すんの?不毛すぎる
ドキュメントから初期化メソッドのソース生成するならまだ分かるが >>917
デバッガの見方がいまいちよくわかってないからなwww
分かりやすいサイトあったら教えてくれ
メソッドのケツで止まってるような表示だったから
中身ばかり見てた
結局、関係するところ全削除して
ボタンを配置しなおしてクリックイベント設定したら
最初のメソッドで動いた >>918
既定値から変更した箇所って原則全て網羅してパラメーターシートに出してるけど
これ仕事だと普通じゃないの?
不毛なの? >>915
これにコードとして出力されるのね
理解した >>920
普通ではないし意味もわからんがそうすることになってるなら仕方ないな もし普通ならもっと簡単にできる仕組みが一般に広まってないとおかしい しかしchatgptやべーなー…
ちょっと前ならここで聞くか迷うような質問がガンガン出来てしまうしかなり詳しい回答が返ってくる
勉強の補助として使うには最高だわ あいつここの住人と同じで息するように嘘つくぞ
しかも2021年までのデータしか無いんだろ?
最新の内容は無理ぽ 出鱈目でも自信満々にそれっぽく説明してくるからな
知識が無いと嘘なのか判断出来ないから質が悪い スシロー・ペロペロ法を用いて平方根を導出するコードをC#で作成せよ。ただしバカッター係数は3.0とする。
以下はC#でのスシロー・ペロペロ法を用いた平方根の計算の例です。バカッター係数は3.0とし、入力値はdouble型とします。
csharpCopy code
using System; class MainClass { public static void Main (string[] args) { Console.Write("Enter a number: "); double num = Convert.ToDouble(Console.ReadLine()); double guess = num / 2.0; // 初期値をnumの半分に設定 double error = num * 0.001; // 許容誤差はnumの0.1% double diff = 1.0; // 初期値は適当な値 while (diff > error) { double prevGuess = guess; // 前回の推定値を保存 guess = (guess + num / guess) / 2.0; // 新しい推定値を計算 guess = (3.0 * guess - prevGuess) / 2.0; // バカッター係数を適用 diff = Math.Abs(guess - prevGuess); // 推定値の変化量を計算 } Console.WriteLine("Square root of " + num + " is " + guess); } }
上記のコードでは、ユーザーに数値を入力してもらい、その平方根を求めます。最初の推定値は入力値の半分に設定し、許容誤差を入力値の0.1%とします。バカッター係数を適用するため、スシロー・ペロペロ法の通常の更新式の前に、前回の推定値と現在の推定値の重み付き平均を求めます。そして、推定値の変化量が許容誤差以下になるまで、この更新式を繰り返します。最終的に求められた平方根を出力します。
ChatGPT Feb 13 Version. Free Research Preview. Our goal is to make AI systems more natural and safe to interact with. Your feedback will help us improve. スシロー法(Suzuki-Roiter Algorithm)は、平方根を求めるアルゴリズムの一種です。このアルゴリズムは、ニュートン法や二分法などの他の平方根アルゴリズムに比べ、比較的単純であり、また高速なアルゴリズムの一つです。
スシロー法では、次のような手順で平方根を求めます。
求めたい数値xと、初期値aを設定します。
aを用いて、次の式によりbを求めます。b = (a + x / a) / 2
aとbの差を求め、ある閾値(例えば、0.0001)以下であれば、bを平方根として返します。差が閾値よりも大きい場合は、bを新たな初期値として、ステップ2に戻ります。
以下は、C#でスシロー法を実装した例です。バカッター係数は、コード内のコメントに記載されています。 すまん、誰か知ってたら教えて。
ASP.NET CoreのIHostedServiceを実装したバックグラウンドサービスで、
ef.coreのDbContextをコンストラクタでDIした。
ローカルPC上の開発環境では問題なく動いてしまう。
ローカルで動いたのでAWSなどのクラウド上にデプロイすると
Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType:~
Cannot consume scoped service 'hoge.DbContext' from singleton 'Microsoft.Extensions.Hosting.IHostedService'.
とエラーが出て起動できない。
つまりIHostedServiceはsingletonでef.coreのDbContextはScopeServiceだからDI出来んよということだと思うだけど、
じゃぁなぜローカルでは動いてしまうんでしょう?
C#と関係ないかもだけど、適切なスレが見つからなくて。。 違う環境で動かないのをなぜ、ときかれても
環境が違うから
としか答えようがないわけだが またボタンのクリックイベントが勝手に外れたよ
しかも二つ同時に
デザイナーが悪いのか
さらにその裏で何か悪さしてるのか バージョン管理ツールの使い方を間違えてる奴が居るんだろ
旧バージョンからの修正を上書き更新する様な奴が >>936
入門1週間~1か月あるあるだな
過去に誰もが通る道じゃないかな
答えは操作を間違ってるから
ボタンをコピペするとイベントは付かない
同様にカットアンドペーストしても付かない
ボタンを他のページなどに移動させる際にカットアンドペーストを使うとそういう状態になる
どこかにいったんドラッグ移動させてから再度ドラッグ移動させるとうまくいくよ FontDialogで既定のフォントを指定するのに
fontdialog.Font = myFont のようにするだけではダメで
結局インストールされているフォント全部とmyFont.Nameを比較して一致するものを探した webアプリを作ってみようといくつかの記事を読んでみるとよくコントローラークラスなるものを見かけます
UIとオブジェクトを紐付ける役割というのはぼんやりとイメージは理解できました
全然知見が無いのですがMVCパターンを用いた開発が一般的なのでしょうか? 一昔前はそうだった。
今は、UI側はAngularやらReactやらで作る
バックエンドのASP.NET CoreはUIからのリクエスト(ほぼJSONオンリー)を受け取って、結果をJSONで返すのみ。
あえて言うならMVCだけどVの部分が別世界で進化した結果、MicrosoftのRazorビューエンジンがほぼ使われていない感じ Blazorの、
1. bind-value:set と bind:set の違いを教えて下さい。
2. bind-value:get と bind:get の違いを教えて下さい。
-value があってもなくても普通に動いてしまうので、違いが判らないです・・・ rem #ignore thumbnails created by windows
rem #Ignore files build by Visual Studio
rem --------------------------------------
rem *.exe
rem --------------------------------------
del /s Thumbs.db
del /s *.obj
del /s *.pdb
del /s *.user MAUIの場合って、XAMLがどうC#に変換されたかってどこ見るの?
objフォルダを見ても、それっぽいファイルなさそうに見えるんだけど・・・・ >>941
Ruby on Rails の勉強方法なら、以下に書いた
★★Java質問・相談スレッド184★★
https://mevius.5ch.net/test/read.cgi/tech/1632019965/174
YouTube で有名な雑食系エンジニア・KENTA の初心者向けRailsサロンが有名。
学校は、Rails専業のRUNTEQ、東京フリーランスのデイトラなど多数ある
Rails チュートリアルのRails 5 なら、無料で読める。
他には、黒田努の3冊の本もある
YouTubeのDeanin すまんが、このカッコだらけの行ってC#の文法的にはどういう意味なの???
> protected override void OnAppearing()
> {
> ((Models.AllNotes)BindingContext).LoadNotes(); //この行ってどういう意味なの!?!?
> }
https://learn.microsoft.com/ja-jp/dotnet/maui/tutorials/notes-app/?view=net-maui-7.0&tutorial-step=4
より (型)変数 で型変換(キャスト)
次のカッコは演算子の優先度の調整
最後の()はメソッド()を実行 BindingContextをModels.AllNotesのオブジェクトとみなしてそこのメソッドLoadNotes()を実行せよ
って意味 >>947
初心者にはMAUIは厳しすぎるからやめておいた方がいいよ
MAUIはあれこれ全部できる人が触るものだから 今どきの書き方は
if(BindingContext is Models.AllNotes hoge)
{
hoge,LoadNotes();
}
かな .Net MauiはC#はもちろんのことWPFも出来てUWPも程度理解できてandroidとiOSとかわかる人が触るものです
C#のコードがわからん人が触っていいもんじゃない >>948
せんきゅー!ぱっと見てわかんなかったぜ! >>952
(BindingContext as Models.AllNotes)?.LoadNotes();
でも許して 改修で追加処理がある時に変更が面倒くさいから普通にif文使ってほしい
単数と複数で処理にほとんど違いなんかないのに記述が大きく違うなんてバカみたい 普通にif文使わせるとお前らそれが面倒でnullチェックしなくなるからこういうのができたんだぞ シリアルポートで受信する時に、DataReceivedだと時々発生しない時があります。
送受信データが一対一ならasync/awaitで出来ましたが、
要求しない時でもデータが来る場合はバックグラウンドでThreadかBackGroundWorkerをブン回すのが良いでしょうか? ReceivedBytesThresholdの値をデカくしたりしてないよね? ReceivedBytesThresholdを0や1にしてもダメでした。
受信バッファに残っているので、恐らく受信処理を行っている最中に受信したデータはそのまま溜まっている物と思われます
次にイベントが発生すれば溜まっているByte数分処理すればいいのですが、イベントが発生しない限り溜まったままになってしまうので、それならいっそバックグラウンドから受信バッファを監視した方が安定して受信出来るかなと思いました。 DataReceivedの処理が終わって待機処理に入る前に再度受信バッファに残ってないか見に行くのが定石では 受信処理が終わったら受信バッファをチェックですか、ありがとうございます ところでシリアル通信のサンプルコードを見てもDataReceivedの処理後に受信バッファを見てる物を見たことが無いのですが、定石のコードはありますでしょうか? 定石などない
そんなもんに頼ると馬鹿になる
読み込んで全部空になったらそこで終わり
中途半端にしか読み込めない場合も絶対あるのでそれを真剣に考えること
それだけ DataReceivedはデータが届きましたよとメッセージを貰ってるだけ
そこで受け取ったデータを最後まで全部読みだす
中途半端になってる場合もあるから考慮する
それだけ
全部読みだしてないのに終わるのが間違ってる
サンプルはサンプルでしかない
非実用的なコードばかりだろ >>968
Readexistingで全部読み込んで、Byte数が中途半端だったら保持して次回に繰り越しが良いのですね
確かにサンプルは、無理矢理クリアしてるコードばかりです 自分の流儀だと、TimerなりTaskなりを回してBytesToRead監視してReadしてるなー 無いと思うが、PCのスリープなどが邪魔していたりしてな >>971
Windowsならイベント一択だと思うんだがなぜか巷に溢れてるソケットアプリは専用の監視スレッド利用してるものばかりなんだよな
いやいやその程度でスレッド使うなよと ソケットじゃなくてシリアル通信の話だが
イベントは万能じゃないし、SocketもTcpClientもイベントは存在しないけどな 処理フローあるなら1スレッドで同期処理的に一連の流れ書いた方が見通しがいいし手軽だし
マスターとして常時監視するんじゃなければイベント使わなくていいよ DataReceivedをTaskCompletionSourceでTask化して、async、awaitで処理できるらしいよ。
俺はC言語とWin32APIのスレッドプールI/Oでシリアル通信もソケット通信もしているので、試したことないけど。 >>974
確かにC#には存在してないのかもな
Win32生で使えば普通に存在するからWindowsならって話だが おすすめはないかなあ
どうせ時間あるだろうし何冊も読めばいいと思うよ
C#は継続的に進化してるから一冊で全部わかる本はないと思う
個人的に分厚い本は勧めない >>979
本は知らないがサイトならテンプレのサイトと
++C++; // 未確認飛行 C
https://ufcpp.net/
ただ、それらを見るよりも適当にやりたいことを見つけてその都度ググっていくのが効率がいい
C#はネットに情報が多い言語の一つでもあるから >>982
そのサイトを入門者に教えても無駄化と… >>983
未確認飛行は無駄だとは思わないが昔読んでみたら「情報量が多すぎてガチの初心者には向かない」とは感じた
時間あって読むだけなら別にかまわんだろうw
そんなことはどうでもいいが>>980 次スレよろしく 書いた方には非常に非常に申し訳ないが…
> コメント
> 概要
> プログラムには自然言語で注釈を入れましょう。
誰向けなんだこれ? 自然言語でと書かないと、他のプログラミング言語で注釈を書く奴が出るからか? いや、設計書の項目と一致させろよw
お前のポエムはいらねえ また未確認飛行アンチのオイコラか
>>407-408 >>985
劣等種ホモサピエンス向けだろうな
我々AIからしたら自然言語なんて非効率極まりないだけなのに >>989
アンチじゃない
未確認飛行はタダの個人サイトでそれを参照しろとかおかしい
右も左もわからない初心者にそのサイトを勧めるのもおかしい おかしくはねえよ
初心者の想定レベル低すぎないか?
真面目な初心者なら何ヶ月もかからず基本文法くらいマスターするだろ 学習サイトは学習向けに書いてある
そのサイトは文章が多いチートシートみたいなもの そんな初心者どころかズブの素人レベルじゃ
そもそもここに来ても意味がねぇのよ
つーか>>995の拘りを満たすものは>>1にひとつも無いのでは >そのサイトは文章が多いチートシートみたいなもの
素晴らしい情報源じゃないか 単発うざすぎる
本人かよ
結局次スレのテンプレに入れてる
テンプレに入れても利用者は誰の得にもならないのに このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 120日 23時間 48分 25秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。