ふらっと C#,C♯,C#(初心者用) Part160
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part159
http://mevius.5ch.net/test/read.cgi/tech/1691454079/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured record型について調べに調べたんですが説明が理解できませんでした。
今までtuppleやkeyvaluepairや構造体を使ってたけど
その代わりに使えばいいと理解していいですか? const var i=1;
const var f=2.0;
const var s="three";
const var t=(1, 2,0, "three");
のように型名を省いて暗黙的に推量して頂くとエラーが出てしまいます。しかしconst抜きだとエラーが出ません。
この違いは、どのような設計思想が大本にあるのでしょうか?
また、何らかのケースで「const抜きだと推量できるがconstありだと推量できない」事があったりするのでしょうか? constにできるのはプリミティブな数値型と文字列型のみ
constで定義できるかどうかと型推論とは関係ない
あと推量じゃなくて推論ね >>8
ありがとうございます。
プリミティブな数値型や文字列型で、varによる型推「論」とconstが同時に使えないのは何故なのでしょうか? あ、ごめん、そうだconst varはできなかった
一応理屈としては「定数は推論不要だから」だけど思想的なものは知らないや その「思想的なもの」についてに質問だと思ってたけど、違ったのか。
ちなみに自分は知らない。 C#コンパイラチーム開発者の回答
https://stackoverflow.com/questions/2128432/type-inferring-a-constant-in-c-sharp#answer-2128581
> > why can't the type be inferred when the variable is a constant?
>
> "constant" and "variable" are opposites. const var gives me the shudders to type.
> A constant is a value that never changes and has no storage location; a variable is a storage location whose contents change.
> They're completely different, so don't attempt to combine them.
> The var syntax was chosen to call out "this is a variable", and we're sticking with it.
>
> var can stand in for a specific type declaration, but combining it with const severely muddies the picture of what the compiler does with the value.
> Therefore const var is disallowed to prevent this confusion and you have to explicitly type your constants. >>10-11
ありがとうございます。
>>12
ありがとうございます。
やはりコンパイラ開発者の強い思想があるわけですね。「varとconstが反対の意味だから」という信念には納得です。
今後は const とタイプするたびに Eric Lippert に対して最上級の殺意がinvokeされそうです。 そんなに殺意あるなら使わなきゃいいよ
ストレスは身体に悪い これはFBIに通報案件なのかな?
プログラマでこういう馬鹿な書き込みをするなんて… >>6
ご解答ありがとうございます。
これって違いなんですか?
record class sampleclass
{
}
record sampleclass
{
}
どっちも違いという違いが無いみたいですが >>17
いや自分で書いてみました
record classってrecordのみと何が違うんですかっていう話です
どっちもequalの挙動同じだしclass付ける意味あるのかなと recordをrecord classって掛けるようになっただけで同じじゃね recordが導入されたC# 9.0では参照型しかなかったけど
値型でも使いたいって要求が出てC# 10.0でrecord structが作られて
記述あわせるためにrecord classって記法ができるようになった >>21
ありがとうございます。
気にしなくてよさそうですね。
c#はこういう細かな規則が少ないんで助かります。 https://twitter.com/intent/tweet?text=https://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC
https://twitter.com/thejimwatkins https://twitter.com/intent/tweet?text=https://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC
https://twitter.com/thejimwatkins デザインパターン勉強してるんですが
抽象と実装を分けるとか、生成と機能を分けるとか
「分ける」系の概念多いですね
結局インターフェースとか継承を上手く作ってコード拡張しやすいように
するのがデザインパターンって思っていいですか?
いくつか似てるのあって厳密に理解したくないですw class Item {public string[] Tags;}
string[] findTags = ...
var q = DB.Items.AsQueryable();
// "AND"条件での抽出
foreach (var tag in findTags)
{
q = q.Where(x => x.Tags.Contains(tag));
}
Entityframeworkでこんな感じのDBでAND抽出はできるのですが
findTagsにあるうちのどれかが当てはまったら抽出という"OR"抽出はどうやったらいいのでしょう? q = q.Where(x => findTags.Any(tag => x.Tags.Contains(tag)));
でどうや >>28
入れ子にできるとは。これは天才。ありがとう 試していないが、EFでこれが本当に動くの?
linqでは正しいけど、EFではSQLに落としきれずに動かないことがあった
これがテスト済みなら大分助かる EFのsqliteで問題なし
特殊なことをしているわけでもないので他のdbでも落とせない問題は出ないかと >>32
ありがとうね
これから使わせてもらいます 「厳密に理解していないと」
プログラミング中に急に収集がつかなくなるが
それでいいのか? 読み込んでいるファイルがUTF-8で正しく保存できているか確認したら?
変な文字コードが混ざっていないか。 対象の文字列の中身は?
そして Substring のパラメータにはなにが入るの?
文字列関係はきちんと理解しておいた方がいいよ。 日本語変数名の時点でまともにコード読む気にならねぇ(個人の感想です) >>38
でもさ英語圏の人達は変数名が英語じゃん
それって日本人が変数名を日本語で書いてるのと同じ感覚やん
何が違うの?
キー入力の観点で日本語入力のオンオフ切り替える手間が面倒とか
昔みたいに日本語の様なマルチバイト文字がコンパイル時に使えないとか悪い影響与えるっていうなら話は分かるんだけど OSとかの根本部分は英語だしなぁ
いくらその上にマルチバイトで覆ってても
英語の方が単純、安全、分かり易い 英語圏と日本語圏でプログラミング力の平均値がかなり乖離があるのもこれ。
10000行とかでもコメント皆無でも英語圏の人なら
たった1分眺めるだけで概ね何のプログラムかはプログラムに縁がない素人すら答えられるが、
日本人の英語話せないプログラマだと大半は答えられないねぇ。 >>34
その3072とか4080の数字、全角になってないよな?
>>37
この画像見て変数の中身は?って言っちゃうのはさすがにどうかと >>42
Substring( 0, 4-5 ) になってたりしない? ってヒントのつもりだったんだけど。 画像の幅の文字列の長さ見てみたら他のコードはいってて9超えてそう いや一応メッセージみると数字のみ抽出はされてるような感じ ParseしてるところのSubstringとLengthをそれぞれ取り出して確認しればいいのにね さすがふらっと、>>46とか>>49のように提示された情報すら精査できない人間がアドバイスしようとしてて草 例外の内容からしたら、全角数字をParseしようとしてるように思えるんよね
>>51
もう黙っとけ まずRegexで\d*と[0-9]*の両方使ってみたら?
\dは数字系のものが全部かかるので全角が入っててもtrueになる
未知の文字列に対して幅決め打ちで取るのは止めた方がいい 左下に情報でてるっていいたいんだろ?
でも結局それをみても投稿者だけでなくここでレスしてる奴も原因が特定できないなら一度細かくみりゃいいだけじゃねっていいたいんだが?
実際の開発でもそういうことしないの?
俺も見た感じ何がおかしくなってるのか不明だし細かくわけりゃ何かわかることもあるだろ
あと全角がわかりにくいならいったん左下の情報でもクリップボードにコピーでもしてエディタにはりつけるなすりゃいいんじゃね GetFilePropertyValueの中で何してるか知らんけど
もしGetDetailsOfで幅を取得してるなら先頭に見えない制御文字が付いてるな
画像の幅の文字列.Substring(1,画像の幅の文字列.Length-6)で一応いけるけど
OS変わってピクセル表記じゃなくなるだけで動かなくなりそうだし正規表現の方がいいな GetFilePropertyValueの中で何してるか知らんけど
もしGetDetailsOfで幅を取得してるなら先頭に見えない制御文字が付いてるな
画像の幅の文字列.Substring(1,画像の幅の文字列.Length-6)で一応いけるけど
OS変わってピクセル表記じゃなくなるだけで動かなくなりそうだし正規表現の方がいいな >>55
画像に写ってるコードと例外と変数情報見てそんな程度のことしか言えないから馬鹿だってんだよ
>ここでレスしてる奴も原因が特定できないなら
何人か数字が全角じゃないかって言ってるだろw
節穴かお前の目は
全角数字をParseしたらFormatException出るんだよ馬鹿 C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と
https://www.publickey1.jp/blog/22/ccarbon_languagegooglec.html ブラウザなどで文字列をダブルクリックすると単語を選択してくれますが、
この単語はどこが認識しているのでしょう? IME?ブラウザ?
WPFなど自前のアプリでつらつら文章表示するものがあって、
その文章をダブルクリックするとブラウザなどとは異なり変な区切りで単語選択されます。
C#から介入可能でしょうか >>51
これが切り分けの最初のステップだよね
原因は>>56が書いてるように不可視の制御文字だと思うけど 確かに、先頭に制御文字があったらあのコードじゃParse失敗するけど
幅と高さのプロパティの番号って176、178だったっけか >>65
番号はOSバージョンによって変わるらしいよ >>56
GetDetailsOfをためしてみたら確かに先頭に「0x200e」(左横書きの制御文字)がいるみたいですね
デバッグの画面だとわかりにくいけどエディタに文字列貼り付けたら数値の前に怪しいスペースができてた
[0] 8206 '' char
[1] 53 '5' char
[2] 57 '9' char
[3] 48 '0' char
[4] 32 ' ' char
[5] 12500 'ピ' char
[6] 12463 'ク' char
[7] 12475 'セ' char
[8] 12523 'ル' char >>62
wpfはモダンui()と引き換えに知性を失ったのだ知性の犠牲にな 7のwpfはそんなに悪くないのに10だとショボすぎなんよね 【AI】Stable Diffusion 3発表、Soraで話題の拡散トランスフォーマーを採用 [すらいむ★]
http://egg.5ch.net/test/read.cgi/scienceplus/1708865670/l50
ボイス・トォ・スカるしている者も攻撃を受けるようになりました 原因は先頭に制御文字が入っていることでした。
回答ありがとうございます。 https://twitter.com/intent/tweet?text=https://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC
https://twitter.com/thejimwatkins お借りします。
Accessに接続したいです。frameworkの時はoledb関係で接続できますが、.NETではどのような方法があるんでしょうか?
探してもframeworkばかりの情報でどうしていいものか悩んでます
プロジェクトは.NET6で作成してます すいません追記です
mdbではなく、accdbの方に接続したいです ふつうにNET6用のSystem.Data.Oledbをnugetから追加するだけじゃなくて? nugetの使えますか?
インストールボタン押しても反応がないというか、またインストールボタンがアクティブになってしまうんです…
こちらのプロジェクトの設定が間違ってるんでしょうか accdb使ったことないけど、とりあえずnugetでSystem.Data.OleDbインストールしてmdbは使えるの2年前くらいに確認したけどな C#は時代遅れの言語ですか?
これからはPythonだって聞いたのですが、
C#よりもPythonを勉強した方がお仕事ありますか? AI時代はぶっちゃけ言語は割とどうでもいいからな
そういう意味で最も手軽に書けるPythonが第一に選択肢に上がってくるのはその通り
まあC#はAI最強帝国MS公式言語だから他の言語に比べたら時代遅れにはなりづらいと予想されるけどな ありがとうございます
WindowsアプリならC#がベストなのですね
C#にしようと思います >>83
情報ありがとうございます!
その時は.NET6か5あたりですか? なんでもいいからデスクトップアプリ、フルスタックWebアプリを作れるようになるべきだよね。
その点C#なら言語1つで上記全て出来る
Javaはデスクトップがちと辛い
新しくやるならRustが今後期待できる
Pythonはいまだスクリプト言語の域を出ない。ネイティブコンパイルに期待 長期的には女を口説く方法でも覚えた方がいいだろうけど、中期的にはSQLだな
近いうちに、AIがデータモデルとUIとSQLを生成し、人間はそれをレビューするだけの開発手法が主流になる >>88
5と6両方でやったよ
7と8はまだ見てないね >>88
今ちょっと.NET6で確認してみたけど、accdbも接続できるね >>91
ありがとうございます!
パッケージソースのマッピングがオフになってたようです
それを構成し直したら無事インストールできました
ありがとうございます!感謝です! >>92
すまん
まあまあイケメンなんで一緒にカラオケでもどうですかって声掛けると7割ぐらいの確率でホテル行く ブサメンのナンパは通報事案
婚活サイトで相手を探すしかないし
そこでも容姿で弾かれる
やっぱC#頑張ろう マツコネ2に変えるのに車両価格がってなったんだとして
オプションとして選択できるように残してくれればよかったのになんで完全オミットしたのやら for (int i = 0; i < arrs.Length; i++) {......}
int al = arrs.Length;
for (int i = 0; i < al; i++) {......}
こういうのってどちらが良いんでしょうか
上側は、毎回Lengthを評価するので遅くなるような気がする
下側は、変数iが無駄に思える 配列のLengthであればその配列が内側で持ってる値を返すだけで評価なんかしない
後者の形で書くだけ無駄、パフォーマンスが良くなるなんて思わないほうがいい
あとiもできれは避けて
foreach(var item in al) {......}
のほうが余計な変数が減ってなおよい >>102
あえてforを使用しているんだからインデックスをループの中で使いたいかもやろ
そういう無駄な指摘が俗に「ウザい」っていうんよ i,j,kをループの変数にするのはfortranの名残
そしてそれは数学の名残
総和記号Σの変数のi,j,k
知らない人は中卒 >>104
foreachでも要素のindexを取り出せるじゃん んでもってタプルで受け取るってか?
素直にfor使っとけよ ほんと
for使うなとか低レベルにもほどがある
最近はforeach使うなすら現れてるw
qiitaのレベルが下がるわけだ foreachで順番通りにやらなきゃいけないオブジェクトではまったわ >>100
「遅くなるような気がする」じゃなく実際に自分で測ってみたら?
「どちらが速いですか」などの質問も割とよく出るけど、処理内容によって変わるかもしれないのだから自分で測ってみるのが一番早い
https://atmarkit.itmedia.co.jp/fdotnet/dotnettips/412stopwatch/stopwatch.html
ここのSystem.Threading.Thread.Sleep(1000);を計測する処理に差し替えるだけでできる .Count() を .Count にしろって警告出るからイヤイヤ直したわ ・記述を変更しても、コンパイラの最適化によって同じIL(中間言語)になる可能性もある。
・JITコンパイルでほとんど差がない可能性。
・AOTコンパイルで(略)
・C#を使っている時点で最速でないから、そんな速度差を気にするくらいならC/C++、Rust、アセンブラを使え。 イテレータが無いかも知れないから、foreachは限定的だよなぁ >>100
> for (int i = 0; i < arrs.Length; i++) {......}
配列の範囲外アクセスのチェックを省略する最適化がかかるから変に凝った書き方はしない方が良い
> 変数iが無駄に思える
全てを代替出来る訳じゃないけど、可能ならforeachを使えば 最近の.NETはメジャーバージョンアップのたびに最適化されているから速度差はあまり気にしなくてもよくね?
どうしても高速化したいのならNativeAOT使おう
制限はあるけど使い慣れたC#で記述できるから最高だぞ こういうので速度気にするって百万回位のループとかなん? >>119
ループの中で何を処理するかによっても違う
パラレル使う手も有るしね C++使おうが速くならないんだけどな
逆に処理色々自分でかかなきゃいけないしそれが効率悪い分だけ遅くなるまである
世の中うまいようにいかないもんなんだ 他と比べてとかそういうんじゃないんだよな
最初に作ったアプリをバグフィクスや機能追加していくと速度が落ちていくことがあると言うか大体落ちる
ひどいと今まで30秒で処理してたのが33秒になりましたとか
目算で思っていた範囲以上に遅くなるとちょっと嫌な気分
これが地味にダメージなんだよな
そういうのが積み重なると目も当てられない
それを避けるために日常的に無駄のないコードを心がけるのが精神衛生上良い
他でもない自分のため 昔での事だけど、Cじゃないんだけどさ
テーブルの各値を1つづつズラしてシフトする処理で1番目に初期値零を放り込むプログラム合ったんだけど
テーブル毎バサッとやったら3時間掛かってたのが10分でおわってワロタ記憶あるわ
なんでそれまで誰もやらなかったんだか(笑) >>122
そもそも30秒掛かってる時点で無いわ
30msにしてから言え >>123
C#でListに1万件ループでAddするのとAddRangeで一気に追加するのでは速度が段違いだよねって話みたいなもんか? >>118
NativeAOTも良し悪しだけどね
リフレクションが制限されるし
実行時のプロファイリングによる最適化が掛からないから繰り返す処理だと不利かも >>124
1時間の動画解析が30msで終わったら苦労しない 10万枚の画像差分解析が30msで終わる時代に生まれたかった >>125
時々Listが取りこぼすバグが直った! なあ365のGraphSDKだけどv5凄く使い難くね?
特にページイテレーターとか糞じゃね?
全件取れるようにGetAll全部に用意しろ
イテレーターで1件ずつ取り出すのはそのままで良いから1ページ毎にAddRangeで追加出来る様に追加しろ あとGraphAPIはいつまでv1のままなんだ?
いい加減バージョン上げろよ string.Splitはcharとstring両方受け付ける癖に
string.Joinはstringしか受け付けないの
なんでそんな一致しない仕様にしたのか .NET Frameworkの方だと最終でもStringしかないな
Coreは前からCharもあるけど Coreの時に互換性を破壊して言語仕様から作り直してくれたらもっと良かったんだけどね きっとChatGPTさんやGeminiさんが大活躍 勢いのある言語はライブラリなどの開発が盛んだ
C#は昔からそういう系統は後手後手
今後も主流の言語のおこぼれを頂く立場 async/awaitとかはC#の実装後に他言語がパクり始めたね c#好きって言う人は多いけどjava好きって言う人ほとんどいない
この差はなんだろう C#はMicrosoftが推してるってのもあって年々扱いやすくなってるし良い言語ではある
けどGUIライブラリ周辺は完全に力入れる方向性ミスってる
xamlなんかじゃなくて最初からmvcに注力してれば… なんでAI用のライブラリが遅れてんだ?
結局インタプリタが正義なんじゃねーのか?
インタプリタで開発して完成したらネイティブコードに転換するような言語でいいんじゃね? AIは発展途上だからライブラリ化してもすぐに更新必至だしなぁ C#がメジャーなり切れないのはGUIライブラリがゴミカスみたいな変遷をたどり続けてるのが一番の癌じゃね そもそもGUIライブラリってそんなに作るの難しいのか?
MSほどの組織があればGUIライブラリなど数ヶ月で完成できるだろ
何が開発を阻害してるの?
Windows自体の問題なのかc#の問題なのか 完成してるやん
自分が使いこなせないXAMLにイラついてる奴が居るだけでさ xamlかぁ
あれで何でも記述したプロジェクトの表示系の不具合修正する仕事した時には
xamlでなんでも書くんじゃねえ!
と本気で怒った記憶 コード書いてオリジナルのタグ作れるよ!(*бωб) そういう事じゃ無くてコードでもXAMLと同じ事出来るじゃん
正確に言うとXAMLがコードに変換される訳だけど >>146 訂正 mvc→mvu
有名なアプリが大抵react、flutter、electron製な時点でお察し
当のMicrosoftでさえTeamsをMAUIで作ってない C#自体は最近はそう大きな変化はない
大体は他の言語の機能の後追いか内部のための変更が多い印象
全てを把握している人間は少ないのではないか
自分は過去のC#の言語の表現が好きだった
最近は記号の羅列や呪文に近くなっている >>158
簡略化する為の表記法がどんどん呪文化する元凶だよな モダンな言語なんて大抵呪文だし記法覚えりゃいいだけじゃん
それで記述が簡潔になるんだから御の字よ
俺はリフレクション系じゃなけりゃ抵抗無いわ Typescriptの型機能凄いよ
c#もこうなればいいね 言語固有の記法なんか覚えても近い未来にゃ糞の役にも立たなくなるからなぁ Add(int x int y)
{
return x+y
}
これ呼び出すのがシンプルにx+yって計算するよりも遅いです。
どうしたらいいですか?書いちゃったプログラム全部書き直しってのは絶対無理です。
ちなみに1回につき100万回くらい呼び出さないといけません。 書き直しが無理ってことは実際に全部置き換えたのと時間を比較したわけではないんだよね
https://ufcpp.net/study/csharp/structured/miscinlining/
多分普通に最適化されてると思うけど まあ一応AggressiveInlining付けてみたら >>167
それがそのままなのかどうかは不明だけど基本的にはメソッド呼び出しは遅くなる
本当にごく限られた特定の場合だけインライン化と言う最適化が働いて速くなることがあるけど
それを過信してはいけないと思う 要するに.ランタイムのバグか
それの尻拭いをプログラマがすべきか否か >>167
publicかどうかで変わるかなあ?
LLMに修正させれば? >>168〜>>173
ありがとうございます。
>>169
一部置き換えたのを計ったら早くなってたけど
全体では少し早くなった感じでした。
ちなMath.Powは何故か遅くMath.Sqrtはそうでもないのは
私の勘違いでしょうか。 > ちなMath.Powは何故か遅くMath.Sqrtはそうでもないのは
そもそもの機能が違うメソッドを、あっちは遅くてこっちはそうでもないとか比べる意味ある? >>175
ランタイムのバージョン違いで挙動変わればバグだよ
バグじゃなかったら何なの
それがWindowsなの〜 こういう理解できない人は多分最後まで理解できないんだろうな
挙動は同じで実行時間が違う
C++だと顕著だけど実装依存の最適化は別に言語仕様ではないので何とも言えない 「Spectre」と「Meltdown」みたいな重度のセキュリティーホール対策で実行速度は大幅に落ちた
セキュリティーホールをふさいで極端に言えば挙動が変わってるけど最初の挙動は本来期待しない動作
オプション指定しないと最適化されないのは想定している動作であり期待しない動作ではないのでバグではない コンパイラの設定次第で究極的に速度重視とか、メモリ削減重視とかやれるんじゃねーの? switchが、ビルドしたらswitch式に置き換わるかswitchステートメントのままかってどういう基準なんだろ? C#に限ったことじゃないけど
BigInteger型があるのにBigFloat型が無いのは何でなのか?
どちらかというと後者のほうが科学技術計算とかで使い道あると思うんだが Lisp族には分数型があったな
浮動少数よりあれで持ってた方が良いんじゃないか >>183
科学技術計算でdouble精度を上回る有効数字桁数が必要とされることはほとんどない。
BigFloat型でと同様な計算は10の整数乗倍することによりBigInteger型でも可能。 天文学的数字なんか上位3桁でもおおくらいだろうし、それ以上正確にする根拠も必要性も無いからなぁ 巨大な行列の固有値が正確に必要な問題とかで4倍精度必要なケースあるけどな >>191
そう言うものには浮動小数点形式は使わないだろw 浮動小数点はどこまで行っても概数でしか無いからなぁ
円周率の計算みたいにするしか無いんだよなぁ なぜないかと言えば一番は需要がないから
次にハードウェアで演算が実装されていないから
マルチスレッドと非常に相性が悪そう そもそも固有値計算は反復法で数値的に解く以外のアルゴリズムが絶望的に遅い
反復法で有理数を使うメリットは皆無 MAUIで会員制のデータ計算、集計アプリ作ってて外部サーバーのMysqlに直撃繋いてSQL書いてるけど、問題ない?
(デスクトップアプリみたいな感じで)
PHPでWebAPI作るのが面倒だし、認証トークンがよく分からん。 >>201
それってDBへの接続文字列が書かれたものがコンパイル済みとはいえクライアントにあるって事だろ
逆アセンブルは簡単にできるからDBに直接アクセスされてデータ消したりテーブル消したり出来るぞ
当然ながら会員データも他人の読めるので個人情報入ってたらアウト
損害賠償で乙 MAUIで書いてるならWebAPIもC#で書けば良いじゃん
swaggerから簡単に生成出来るし
色々考えるとWebアプリの方が楽だぞ >>202
接続文字列のユーザーIDとパスワードを管理すればいいんじゃねーの? >>207
昔、DBへの接続アカウントを社員数分作ってた時代があってだな... IAM DB AuthenticationみたいにDB接続前に別のところで認証して
その結果のトークンをMySQL接続時に渡してプラグインで検証してるなら
直接繋いでても一般的に許容されるレベルのセキュリティは確保されてるんじゃないのかな アクセス元のIPアドレスでフィルタすると多少はマシになる 認証トークンがようわからんとか言ってるし、そんなセキュリティ確保されてるレベルじゃないと思う 行レベルセキュリティとかもして無さそうだから認証だけの問題でも無さそう VBA使ってスタンドアロンで動くものしか作ったことない私がやるとこうなる。
一応、Firebaseからデータ読み込むだけのスマホアプリをXamarinで作ってストアに公開して2年経つが、今のところ特に問題ない。
今回のスマホアプリは昔、プロに作ってもらったものを参考にして、MAUIで作り直してる。
SQLが使えないFirebaseは使いづらいし、テーブルの数が多くて、読込、追加、更新、削除を頻繁にやらないといけないからMysql使ってる。
今、PHPでWEBAI使って作り直してるけど、デバッグがやり難くて困ってる。
あと、プログラムは仕事では殆どやってない素人だから大変だ。
外注を使うと金がかかるから自分で何とかするしかない。 おじいさんゆっくりお休みください
仕事はプロに任せましょう 本業の片手間でやらざるを得ない人もいる
責める気にはなれない >>215
ストアに公開してる時点でそれは許されんよ 外注使うと金かかる(分かる)
自分で作ると金掛からない(勘違いしてる)
その時間仕事してると給料が入る
会社なら一般管理費等も考えると普通の外注と同じで人月100とか120万となる
つまり素人が時間掛けて自分で作るより外注した方が安い ああサービス残業的に作ってるっていうなら確かに金は掛からない
社畜精神凄いとは思うけど 誰と勘違いしてるか不明だけど
そいつは俺じゃないぞ
そして毎回的外れなレスしてるのはお前だろ馬鹿 自分も社内の制御系システムしか作ったことがないからWebの認証周りやセキュリティ関係が全く分からない
こういうのみんなどうやって勉強したの 今はもう振り落とされたけどjs系で勉強した
C#だけ触ってるとわからないことが多すぎる >>227
言葉が足りなかった
お前が勉強したのはjsの認証ライブラリってだけで認証の仕組みなんて分かってない
ライブラリの使い方覚えただけ
C#にも認識ライブラリは有る 変な話jsで認証やセキュリティの話は10倍ぐらいのスピードで時間が流れてる気がする
自分が勉強したころはJWT使いましょうだったのがかなり前からJWT使うなだし
関心を持ってる人間の量が違う >>230
上にも書いたけどライブラリじゃなくて認証の仕組みなどだよ
C#関連で見ると言及されることが少ない
js関連見てるとそこら辺の情報が豊富にある >>232
お前の探し方が悪いだけ
そもそも企業だとADやら365のAzureADでSSOやらSAMLするからMicrosoft系で認証系の情報が少ないとか無いんだよ 話がずれてるぞ
さっきの質問者にそれを教えてやれよ
あえてそれに乗ると
探しかたが悪いとわからない = 勉強しづらい
だと思うんだけどね
C#だけ触ってると井の中の蛙で概念すら知らないことだらけ
js系触ってるとずっとweb系のセキュリティの洗礼を受け続けることになる
それで関心を持ってる人間が多くてカジュアルに技術が学べる機会がC#より多い
ネットだけじゃなくてjs系の書籍も発行されてて手に取ることが出来る
探しかたが悪いなんて話にはなりにくい
こんな単純なことは理解できるだろう >>231
「かなり前からJWT使うな」なんあったっけ? 今お騒がせのどんぐりシステム
http://web.archive.org/web/20131009170307/http://www.geocities.jp/nullpo0/
開発終わってるツインテール2.51で書き込み出来てる
ツール 環境設定 板一覧の更新URLを
http://bbsmenu.afi.click/5ch/bbsmenu.htmlに変えれば即使える
C#のソースも残ってるし誰か勉強がてら改造続けてくんない?
今後問題になりそうなのはhttpsとか他の板登録関係かな 今更古いWinFormsのアプリは触りたくないな
高DPI対応させるだけでも面倒だ tailwindじゃねぇtwintailだ…
upliftやdonguri対応とかそこらへんなら誰かしてくれそう どんぐりといってもcookie送ってるだけだから
10年前に開発が終わった旧い専ブラでも普通にドングリできる afi.clickとか明らかにアフィカスの何かだろ htppsに対応させるにはソースのどこをどういじればいいの? >>246
板一覧をhttps://menu.5ch.net/bbsmenu.html に対応させるなら
Twintail Project\ch2Solution\twinie\Forms\Dialogs\BoardUpdateDialog.cs
の267行目のhttpをhttpsにして
Twintail Project\ch2Solution\twin\Base\Table\KatjuBoardTable.cs
の83行目を「@"B>(?<cat>.+?)</B>】(?<brds>.+?)(?=【)",」とかに(適当)
Twintail Project\ch2Solution\twin\Base\Text\URLParser.cs
の41行目のParseBoard()に入ってすぐか、呼び出す前にurlの前後の
「"」を取っ払う処理入れたら読めると思う
あと、その少し上の正規表現を2行とか5行定義してるところで、httpを
https?とかに変えといた方がいいかも ふむツインテールでは確かに書けるな
どうしたものか マ板は有効になってるっぽいし、ム板もそのうちなるんかねぇ どんぐりキャノン撃つのが面倒なんで専ブラで対応したらめちゃくちゃ便利になりそうな気がする >>226
僕も同感です。
そもそも認証やセキュリティまわりで議論が白熱するか分からん。
ログインされたらパスワードを入力させるだけの話じゃないの。
何で難しい話になるんだろう。頭がいい人はその認証方法じゃだめじゃ
みたいに思うんだろうか。 >>255
exeとかのアプリケーションならそうだけど、
Webアプリケーションの場合には、ログインセッションをcookie等で維持する仕組みが必要。 cookieとセキュリティくらいか。
やり方なんてそんなにないと思うけどなぁ。 >exeとかのアプリケーションならそうだけど
むしろこっちが気になるな
exeとかのアプリケーションでログインされたらパスワードを入力させるだけの話ってどんなアプリケーション? 俺は>>255が何を考えているのか知らんけど、
>>258が例えばユーザー毎のアクセス権とかパスワード変更とかを気にしているのであれば、
Webアプリケーションだろうがexeだろうが一緒だから省略してるよ。 >>255
普通のアプリ開発だと
普通の画面にある機能は誰でも実装できるけど
認証機能は難しすぎて問題すら解らない領域だから
通常はクラウドの機能を使うとかライブラリー当てて何も考えないで終わりが通常 SSOだのSAMLだのはgptで出てくるから脳死でコード貼り付けるだけよ >>263
世の中てそんなもん
他システムがOpenIDConnectに対応してるのなんて少ないんだよ Passkeyも脳死でできるようにしてください
ポンコツな俺の頭には難しすぎます 実装で不必要に長いコード書いちゃってでも動いてはいる場合って
修正しなくていいんですか? 271に続いてこれとかも聞いておきたいです。
C#も新しい機能出てますが2018年までの知識だけで
コーディングしてる場合2024年最新の文法でかけ!
とかも言われるんでしょうか? >>273
そうなんですか。
ただ極端に古いコーディングだったらアウトになりますか?
taskが今流行ってるのにthreadで書いてるとか。 誰に言われるのを心配してるのか分からん。
目的によるに決まってるだろ。 きちんと動いているならそれはそれだけで尊いとも言えるけどな。
100% バグを出さない自信があるならなにをやってもいいけど。 なんとなくだけど.net frameworkでしかコード書いてなかったけど.NETでコード書くってこと? インデックスってあるじゃん s[1..3]みたいな
あれって操作する前に境界をチェックしないと例外発生するから結局面倒臭さは変わらないような OutOfRangeしても例外発生もクラッシュもしないように言語仕様で手当てされてても
アクセスした結果が正常かどうかこっちでチェックはしなきゃなんねぇでしょ チェック機能付きでエラー時の値を指定できる拡張メソッドでも作れば解決じゃね? 非同期asyncについて質問したい
複数の非同期関数を同時に実行して結果を受け取る
そのタスクのうち1つでも結果がfalseならば他のタスクを全て中断としたい
WhenAllでは全ての結果を待つので無駄な場合がある
WhenAnyでは最初に終わったタスク結果は受け取れるだけである
この場合どうしたら良いのだろう? >>282
Copilotによると
ideone.com/o0qKFx タスクを実行する前に CancellationToken を作って、各タスクに引き渡しておけば?
タスクの中で失敗を検出した時点でトークンを使って他のタスクもろともキャンセルさせるとか。
実証していないから出来るかどうかは確証がないし、お作法的に正しいかは知らない。 >>283
非同期処理の例のTask.Delay()にもCancellationTokenを渡してあればもっと良い
各タスク完了後のtoken.ThrowIfCancellationRequested()は要らない気がする ループの中でawaitしてるんはどうなん?
後ろのほうのタスクがさっさとfalse返してても無駄に待たんの? >>286
肝心なところを見落としてたorz
無駄に待ってしまうね
各タスクにCancellationTokenSoruceを渡してreturnの前にCancel()しないとだね
メインタスクのforeachは削除してTask.WhenAll()で c#で現在ゲーム作成中です。
データベースに画像を保存したら01011みたいなデータになってるから
dbから直接画像を抜かれる心配ってないですか? DBの中覗かれたら抜かれるよ
つーか、その程度の知識ではまだ早い >>289
zip暗号化をすれば何とかなると思います。
ゲームを進めていかないと現れない文字列をパスワードにします。
ステージ1クリア→g
ステージ2クリア→o
ステージ3クリア→a
ステージ4クリア→l
画像取得→パスワードgoalをdbに送信、画像取得
こんなのはどうですか?