ふらっと C#,C♯,C#(初心者用) Part160
書き直しが無理ってことは実際に全部置き換えたのと時間を比較したわけではないんだよね
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に送信、画像取得
こんなのはどうですか? c#の初心者講座一通りやったのでデスクトップアプリ作ろうとおもうんですが
GUIつくるにはXamlの習得が必須なのでしょうか?
Pythonで作れたりしませんかね XamlやらなくてもWinFormでつくれるし
PythonでもGUIできるぞ PyQtか?
raspberry piで便利だったな。
winformと同じポトベタ >>295
>>296
どんな感じでやるんですか?
検索したいので単語とか教えてください
最悪xamlを学ぶつもりですが画面遷移で手こずってます とりあえずVisual Studioインスコして遊んでみたら 単語とか教えてくださいて、winformって書いてあるだろ xamlがC#の初心者講座に載ってなかったのであればxamlを学ぶのは遠回りだな
次にやるべきはxamlの初心者講座だろう xamlの本を大きめの本屋さんで探したら一冊もありませんでした
xamlを勉強する人はもうネットのリソースしか使えないんですかね
JavaScriptとasp.netはたくさんあったのに ネットでええやんというかあらゆる情報においてネットの方が良いと思うが
今はチャッジピーもあるし尚更
まあxamlは習得までのコストを考えたら明らかにコスパは悪いと思うけどね
素直にhtml、css、jsでgui作ったほうが良い 細かいところ知らなくてなんとなくは出来るけど
意味もなく呪術を使ってるような感じに近いのかな
今はエッセンシャルWPFみたいな本当の概念を教えてくれる書籍はどこにもないのかもしれないけど xamlで何でも書いちゃう凄腕は
たいてい他者から嫌われる
何故って、んなコードメンテ出来ねえんだよ >>309
でもデスクトップアプリはxamlしかだめなんですよね? 定型文しかしらないってカッコ悪いよ
WPFのmeasureなどの仕組みを知らないでその都度コンテナやコントロールで試行錯誤して時間だけ過ぎていくことになる >>312
いやいやJavaScript利用すればwebと同じ要領でデスクトップアプリも作れるよ >>315
え!そうなんですか
調べてたらwpf blazor avalon maui uwpと色々出てきて頭が混乱しています😥 >>316
全部忘れてReact Nativeでよい
WindowsターゲットはMSが開発してるしMS自身のプロダクトにも使いまくってて、
事実上WindowsのGUI開発の公式推奨フレームワークだ 技術力のないやつはどいつもこいつも自分が使ってる技術スタックが良いと思い込みたいんだよな 趣味でコード書くだけなんでWinFormsで間に合ってる WPF使うけどバインディング使わずにイベントハンドラですませることが多いかな WinFormsでソースを変にいじるとデザイナーの表示ができなくなるのが嫌でwpfにしてるわ。 xamlで色々なフレームワークいじれることがわかったので
大人しくavaloniaっていうやつでxamlを練習することにしました 自動生成されたコードを消すとデザイナーがエラーになる avaloniaはwpfと微妙にちがってたりするからな
ちゃんとdocument読むんだぞ こういう奴は人に聞いてるふりして聞いちゃいないからな
答えるだけ無駄 とりあえず6mWP1uh50がアホなのは良くわかった >>331
アホだけどwpfでコードビハインド避けて出来るだけバインドでやってるよ(笑) Windowsで画面の外にある範囲とか後ろにあるものを含めてスクリーンキャプチャ頑張ってしたいです
例えば画面の外に出てしまったExcelなどです。
C#でそんな魔法の関数ありますか?Windows APIでもいいのであったら教えてください
描画する前の段階のメモリにアクセスとかそういう関数とかあるかな win7までだったら何も考えずに撮れたけど今は無理なんじゃないのかな
アプデするたびに不便になってく プリントスクリーンキーでコピーできる範囲ならわかるけどはみ出ては無理じゃね? 昔ははみ出てようが、ほかのウインドウに隠れてようが取得できた
Winters 10 Anniversary Updateの前のバージョンのwindows10まで撮れたのかな
必要としてるのが自分の環境であればそこまでダウングレードすれば とりあえずどうやったら撮れたか手段教えてあげたらいいのでは? ありがとうございます
ダウングレードで出来ることを示せば今できない証明になりますね 仮定:フルHDサイズのデスクトップとして
using(var Img = new System.Drawing.Bitmap(1920, 1080)) {
using(var Grp = System.Drawing.Graphics.FromImage(Img)) {
Grp.CopyFromScreen(0, 0, 0, 0, new System.Drawing.Size(1980, 1080), System.Drawing.CopyPixelOperation.SourceCopy);
}
Img.Save(@"E:\Test.png");
}
これでまるっととれるが? 1920、1080外に出てるGUIもスクショしたいって話じゃないか? 他のウィンドウに隠れてる部分もスクショしたいって話もあったぞ なんかそういうWin32APIあった気がするけどな
まあ無かったら最悪SetForegroundWindowとかで一瞬だけ最前面にするとかSetWindowPosで一瞬だけ画面内に入れるとかか aero が有効なら背面のウィンドウも全部描画されているから隠れていてもキャプチャできた。
最近できなくなったというのは知らなかったけど。 EnumWindowsでそれぞれのハンドル得ながら
Windows Graphics Captureか
GetWindowRect + GetWindowDC + PrintWindow or BitBltを使えばできる
(GPT談) 書いといてなんだけども
隠れてるのも含めて全部スクショを取るアプリって
まともな使い方じゃない気がするのは俺だけ? アンチチートプログラムはまともなソフトウェアですよ アンチチートってどういう用途について言ってるのかよくわからないけど
事前の通知や同意を得えずにやるのは不法行為に当たる可能性が高いよ
学校の情報処理室のPCみたいなので
画面監視内容や目的を事前に通知して同意を得た上で
使わせるとかならまだわかる
でもそのくらいの用途なら違うアプローチがあるし
やり過ぎだと思うけどね ウインドウとその範囲を指定して切り出して表示する汎用ツール作っとくと
例えば為替チャート~ブラウザの一部だけ切り出してデスクトップ最前面に常に表示しとくとかそんなことができた >>344
>>345
出来ないとは断定できない感じですかね
できるかやってみます >>345試したらできた
普通のwinformsなら取れるがChromeやUWPは真っ黒になった
どっかで失敗してるんだろう デスクトップのDCからとると切れるけどウィンドウのDCからなら切れないし下にあってもキャプチャ取れるはず
真っ黒になるようなのはデスクトップDCから取ればいけたような
そうすると画面外とか取れないけど
あとchromeのハードウェアアクセラレーション切ってみるとか ああとウィンドウのDC取るって言ってもタイトルから取れるハンドルと実際に描画のウィンドウハンドル別のケースあるから描画されてるウィンドウから取ったほうがいいかと 画面外に出てる部分までキャプチャしてどうしたいのかは気になるな 最近wpf勉強し始めたんですけどmvvmでしたっけ?データバインディングするまでって
ややこしくないですか? いちいちバインディングしなくてもいいぞ
MSの方針なんて無視 バインディングすれば非同期スレッドからもリンク出来て楽だよ。 WPF+MVVMで作る場合のMVVMのライブラリは何がおすすめですか? CommunityToolkit.Mvvm でいいんじゃね?
ttps://learn.microsoft.com/ja-jp/dotnet/communitytoolkit/mvvm/ >>361
CommunityToolkit.Mvvm
これがもう少し早く世に出ていれば少しはWPFの評価が違ったかもな >>362
>>363
即レスありがとうございます
やっぱりそれが主流なんですかね
ググってもイマイチ情報が少なかったので皆さんどうしてるのかなって思って聞いてみたのですが、、 >>304
Microsoft.Toolkit.Mvvmの方じゃなくて?
↑は旧称で単純に古い >>356
プロ?なら出来るだけ避けたが良いよ
何の投資にもならんから .net frameworkから.netへの移行ツラぽよ
みんなこの苦労を乗り越えてきたんですかね 無理に移行しなくてもframeworkも現役だしそれで十分だぞ
スケーリングやcancellationtokenみたいなの考えると.netの方がいいけどさ >>370
どういう意味ですか?
あなたの言ってることがよくわかりませんごめんなさい >>372
クラウドに載せるアプリとなるともはや.net前提じゃないですか
オンプレからの移行となると.net化は避けては通れないかと…