C#, C♯, C#相談室 Part97

■ このスレッドは過去ログ倉庫に格納されています
2022/12/21(水) 10:18:38.02ID:DxBIri9+0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
434デフォルトの名無しさん (ワッチョイ d98e-kLz7)
垢版 |
2023/06/23(金) 20:46:57.75ID:fxt+MPHJ0
Rubyが終わっていて笑った
2023/06/23(金) 21:22:08.63ID:wybW+H5I0
つーか上位ほぼスクリプト言語だな
C#健闘してる方じゃね
2023/06/23(金) 22:02:02.60ID:EeYfvpOc0
ワイの超糞コードもgithubに上げればすっきりリファクタリングしてもらえるだろうか
2023/06/23(金) 22:38:35.50ID:G7lzLQj+a
>>436
超有用アプリならな
2023/06/24(土) 05:52:03.90ID:FvsXVYD90
今更だけど、.NETのLTSが三年って短すぎと思うのは俺だけ?
三年経ったらVisualStudioを買い替えて、新しいバージョンの.NETにマイグレーションしてテストして…ってそんな金誰が出してくれるんだ?
2023/06/24(土) 07:13:32.76ID:e/OWmdk60
今のシステムは3年持たないから別に短いとも思わない
俺の会社のシステムは年4回の更新がルールになってる
テストは自動化だから追加機能のない時は1日で終わる

VSはサブスクだしvscodeでも良い
2023/06/24(土) 08:24:13.30ID:FvsXVYD90
>>439
三年持たないシステムってどういうシステム?
うちはコテコテの業務システムなので下手すると10年以上使う…
2023/06/24(土) 09:10:16.70ID:e/OWmdk60
セキュリティやら何やらで3年以上も持つシステムってのは世の中には1つも無いぞ

10年以上使うことは出来てもそれって年々増加するリスクを抱えて使ってるだけ

俺が言ってるのはリスクを基準以下に抑えた安全なシステムは3年が限界って意味
2023/06/24(土) 09:19:27.28ID:fqjmYFK70
よほど古い体質じゃない限り、
今はCIとか自動化でFWとかのバージョンアップ含めて対応してくのが望ましいよね
持たないというか、「LTSきれるから対応する」という旧来の対応じゃなくて
継続的に最新を検証しながら順次当てていく運用がされてると思う

DBとかインフラ周りは事情変わるし、そっちに引っ張られることもあると思うけどね
体制を変えるのも企業としてカロリー高いし、中小ユーザ企業は置いてけぼりになってるかもね
2023/06/24(土) 09:20:49.88ID:8BwFeyDY0
>>440
Web系は軒並み寿命が短くなってる
システム的な側面もあるし、使用する言語そのもののサポート期間が短くなってるって理由もあると思う
業務系だとあまり感じないと思うけどかなり深刻よ

phpとかActive support2年、Security fixes onlyな期間いれても3年だぜ
444デフォルトの名無しさん (スプッッ Sd03-eK8M)
垢版 |
2023/06/24(土) 09:27:17.07ID:Qrp9SB+9d
スタンドアロンのマシンを工場に入れて稼働させるなら平気で10年使うとかあるんじゃない?
それなら別にサポート切れてもかまわんけど

問題はシステムそのままでネットワークに繋ぐけど更新するつもりがないようなケース。
既に動いてるソフトに追加で金(手間とかメンテ)かけたくない人たちはいるんだよ。
2023/06/24(土) 09:42:16.38ID:e/OWmdk60
別に金掛けないなら良いんじゃね
動かなくなった時とか問題が起きてもサポート対象外で知ったこっちゃ無い

リスクの説明をしてそれでもリスク許容するって判断したならそれまででしょ
責任者は自分が下した責任を取るだけじゃん
2023/06/24(土) 09:42:45.76ID:Ne+ocOnc0
大掛かりな業務システムだと製造自体で年超えるから、三年はまあ短すぎだわな
2023/06/24(土) 09:48:33.39ID:LJ+05Jz7a
三年経つ前に上位互換が出るのに何を困ってるんだ
2023/06/24(土) 09:52:27.28ID:fqjmYFK70
そんな大掛かりで特定のバージョンに繊細に依存するようなナイーブな業務システムを、ターゲットに入れてないんやろ
2023/06/24(土) 10:09:17.87ID:ftOLWUwva
逆に.NET4系はなんであんなに長くサポートされるんだろう
2023/06/24(土) 10:32:24.72ID:0M7dS181M
一つの製品に時間を掛けると完成度は高くなる
今はそれをやらないで次々製品を出している
そのほうがメリットがあると考えてるから
2023/06/24(土) 11:12:26.40ID:Ne+ocOnc0
それが出来ない分野ってのはあるんだよ
全てが同じように作ればいい訳ではない
2023/06/24(土) 11:58:36.68ID:M+vyHTL9a
>>449
コンセプトがWindowsの新しいAPIでWindowsの一部だから

新しい.NETはマルチプラットホームなのでどんどん新しくしないとOSに取り残される
2023/06/24(土) 12:17:48.33ID:xi03mIO7a
Javaもそんな感じだよね…
うちみたいな昔ながらのSIerはついていけずに潰れるな…
2023/06/24(土) 12:34:32.06ID:0M7dS181M
.net coreはOSの一部じゃないから放置しても良いってことか
その割には3.1とか頻繁にWUかかるよな
何がそんなにダメなのか知らんけど
2023/06/24(土) 14:05:07.43ID:PIVgHtxEa
. NET Core は Windows、Linux、および macOS で動作します。
. NET Framework は Windows で動作します

だから、Linux が頻繁にupdate されるからかも
2023/06/24(土) 14:22:04.26ID:XM0MR1xzr
ん?
NETFrameworkもNETCore3.1/6も毎月定例でWindowsUpdateが来てるかと思ってたんだが、違うの?
2023/06/24(土) 14:28:46.29ID:M+vyHTL9a
>>456
そのアップデートが行われる期間が三年じゃ短いんじゃないかという話をしてるんだよ
frameworkの方はwindows付属なのでosのサポート期間と同じ長さになる
2023/06/24(土) 15:52:52.15ID:XM0MR1xzr
あ、>>456の疑問は>454に対してで
Coreのアップデート期間が短いなんて話への興味もないしサポート期間が短いという認識もおれは持ってない
2023/06/24(土) 15:56:12.83ID:M+vyHTL9a
話を変えるときには「ところで」とか言った方がいいぞ
2023/06/24(土) 16:00:59.80ID:3NRUJc/l0
2008年にリリースされた.NET Framework 3.5SP1はまだサポートされてるんだよな...
2023/06/24(土) 16:01:33.74ID:XM0MR1xzr
え、ごめんよくわからない
このスレの流れで誰がどのレスでどう話を変えたの?
具体的にどのレスに「ところで」とかつけるべきなの?
2023/06/24(土) 19:44:52.86ID:nsaxU9To0
漢和及第
2023/06/24(土) 22:17:19.98ID:875mwHlZ0
>>445
リスクを説明したらFrameworkで作ってくれと言われるから
言われないようにサポート伸ばしてくれって話だろ
2023/06/24(土) 23:48:28.18ID:0M7dS181M
変な話になってるな

.NET Core 3.1のサポートは2022年12月13日で終了

しかし
OSの一部でもないのにWUが頻繁だなと言うこと
2023/06/25(日) 00:29:58.39ID:V4eFoXc90
そういえば、Powershell 5.1 は .NET Framework 4.5(1年ほど前にサポート期限切れ)ベースなんだっけ?
2023/06/25(日) 00:51:28.16ID:/3B8vXhI0
どうでもいいけどここは.NETスレなの?
2023/06/25(日) 08:32:09.29ID:2v/o3liJ0
https://dotnet.microsoft.com/ja-jp/download
https://dotnet.microsoft.com/ja-jp/download/visual-studio-sdks
2023/06/25(日) 09:31:39.01ID:Pbv9OTEga
ただでさえ過疎ってる板に.NETスレを建てろと…
2023/06/26(月) 08:54:25.45ID:r2qj24yMd
C#=.NET
やし・・・
2023/06/26(月) 09:11:37.26ID:BCuqrZMcM
VBはもう終わってるし、F#はさすがにマイナーだからな
2023/06/26(月) 09:51:35.07ID:yWmO1o4aa
F#なかなか始まらんな
C#がどんどん関数言語化していくから結局C#でいいやとなる
2023/06/26(月) 11:20:47.72ID:lp02RsUd0
F#が始まるとかありえるん?
2023/06/26(月) 11:46:00.16ID:yWmO1o4aa
今は各言語で使われてるasync/awaitもF#から始まったものだしLINQもF#のseqが源流っぽいし読みやすくて面白い熱狂的なファンのいる言語ではある
パターンマッチングや型推論もF#には劣るけどC#でできるようになったしF#ならではという部分がどんどん無くなってるんだよね
2023/06/26(月) 11:48:47.71ID:6bPwUIFfp
非同期がわかりにくくなった元凶かw
あんなんコロコロ都合で変える様なもんじゃ無いんだよ
最初から計画して作るものなんだから
極端な話、別の記述で独自させて書くくらいで丁度いい
2023/06/26(月) 11:54:40.07ID:yWmO1o4aa
非同期がわかりにくいと言ってるやつはスレッドプログラミングしたことないだろ
2023/06/26(月) 13:14:43.61ID:6bPwUIFfp
>>475
だからスレッドプログラミングするなら
これはスレッドですと明示すれば良いのであって
ゴニョゴニョ都合でawait/asyncを継ぎ足すなって言ってる
2023/06/26(月) 13:26:22.95ID:xa7FGeCo0
そんなこと俺たちに言われても…
2023/06/26(月) 13:57:22.25ID:AbxEqbtsa
async/awaitすらわからんやつにはスレッドはわからんぞ
あれでどれだけ簡単になったと思ってる
文句言うなら一度やってみてから言え
2023/06/26(月) 13:59:26.99ID:6bPwUIFfp
>>478
簡単になった=無駄に乱用してわけわからんくなってる
2023/06/26(月) 14:01:01.10ID:AbxEqbtsa
慣れろ
今時非同期は必須だ
2023/06/26(月) 14:06:16.36ID:6bPwUIFfp
タスク間通信を簡単に記述出来るだけで良かったのに
2023/06/26(月) 14:09:10.59ID:AbxEqbtsa
>>481
そういうのをスパゲティと言うんだよ
基本がなってないのにそんな大口叩いてたのかよ
素人さんの想像なんか知らんがな
2023/06/26(月) 14:11:51.42ID:6bPwUIFfp
>>482
同期待ちよりはマシだぞw
2023/06/26(月) 14:36:29.88ID:AbxEqbtsa
>>483
スレッドでもミューテックスとかで待つぞ
2023/06/26(月) 14:48:55.41ID:6bPwUIFfp
>>484
そう言う設計ならそれで良いだろ
無闇やたらにawait/asyncするよりマシ
2023/06/26(月) 15:34:19.13ID:AbxEqbtsa
プログラミングしたことないなら無理してここに書き込むなよマジで
2023/06/26(月) 17:02:06.93ID:6bPwUIFfp
バリバリ現役なんだが、だからこそ無闇やたらの同期待ちが目に余ってしかたないんだ
2023/06/26(月) 17:24:13.02ID:rofd44ra0
2023/06/26(月) 17:47:57.08ID:xvrwDUzc0
async/awaitって、待ちが発生しないから
代替処理はmutexとかじゃなく
親スレッドに完了通知を投げるような実装をイメージしてた
素人の考えだけど
2023/06/26(月) 18:03:45.93ID:dzJ0G1qca
>>489
同一スレッドでも複数のタスクが行えるのがasync/awaitのいいところ
JSなんてシングルスレッドだからね
スレッドなら待つのにはmutexやsleepを使ってデッドロックした時にはもつれた紐を解くような作業をしてたのをawaitでできるのはとても便利
491デフォルトの名無しさん (スプッッ Sd03-eK8M)
垢版 |
2023/06/26(月) 21:11:57.84ID:aG57g/0Md
awaitはC#コンパイラによって即returnに展開されるぞ
Taskの終了時にawaitしたとこまで一気にジャンプする

関数の制御構造を変えるので「async」のマーカーが必要だったり返り値がTask or Task<T>になる制限がつく

Taskの完了とかを管理するのはThreadPool。
(乱暴に言えば)言語側が用意しておいたスレッドのうち、
手が空いたスレッドが手当たり次第にタスクを実行する
2023/06/27(火) 19:16:05.01ID:QS4FigDjM
Logって実質Nlog一択なん?
2023/06/27(火) 22:09:32.35ID:ghrulNj20
AzureInsightに流すからNLogなんて何年も使ってないな
2023/06/28(水) 19:32:11.06ID:vmGYJlnU0
読みやすくなっただけでasync awaitの価値がある
2023/06/29(木) 19:21:45.21ID:KA7Oajuk0
プログラミングはコアまで理解出来るほど、上等と言えるのですか?
C#だつて中身はc++でしょう。c#自体をいじれるくらいになるのが上等なんでうsかね
2023/06/29(木) 19:26:32.60ID:wnB+yAyw0
日本語でOK
497デフォルトの名無しさん (ワッチョイ 3501-MtLz)
垢版 |
2023/06/30(金) 08:16:31.24ID:yIPSI8W+0
「C#の言語仕様変えられるほど上達しますた!」
「いいから仕事しろ」
2023/06/30(金) 08:52:01.87ID:esKo1UNu0
C#の中身がC++だと思うようではw
499デフォルトの名無しさん (ワッチョイ 6d54-wYA+)
垢版 |
2023/06/30(金) 17:31:05.12ID:t7Ah47nQ0
googleとかの検索エンジンで、検索文字列入力エリアに文字を入力すると、自動的に検索候補が出てきますが、
自分で C# の ComboBox に表示してみたら、表示までにかなり時間がかかります。
どうすれば高速化できるのでしょうか。

検索候補として IEnumerable に保持している要素数は2万件で、最初の1文字入力時に表示されるまで、体感で1秒以上かかってます。
今のソースは下記です。
------------------------
List<string> suggestionWordList = ;//あらかじめDBから取得済みの検索候補

//inputedWords は、入力文字列をスペースでsplitした配列。
void Search(string[] inputedWords)
{
var keywords = inputedWords.ToList();
var result = suggestionWordList.FindAll(s => keywords.TrueForAll(s.Contains));
ComboBox1.DataSource = result;
}
------------------------

※要素の保持方法や文字列処理は言語固有の機能が結構あるので、C# スレで質問しました。
2023/06/30(金) 17:34:41.36ID:J13eQfHYp
要素自体をインデックスで振り分けるなりして
少なくしろよw
2023/06/30(金) 17:48:35.79ID:VF6YXMlba
検索対象となる単語をあらかじめハッシュ化してオフメモリのハッシュリストを作成
入力された単語を単語に分割してハッシュリストから取得
ということをすれば速くなる

これが何を言ってるかわからなければ素直にデータベースを使えばいい
2023/06/30(金) 17:56:59.79ID:6/DdYNrc0
単純にDictionaryにしてみたら>List<string> suggestionWordList
2023/06/30(金) 18:58:29.90ID:WfbDsXZP0
>>499
トライ木っていうデータ構造が有効
C#での実装も幾つかあるので試してみて
2023/06/30(金) 19:29:54.39ID:IuqpHB1v0
RedisCacheを使う
505デフォルトの名無しさん (スプッッ Sd43-eK8M)
垢版 |
2023/06/30(金) 19:31:24.87ID:MO4ylNlnd
2万件のデータ全部に対してContainsやるって考えたら相当時間食うよ
Contains自体もそんな軽くないし


googleは相当な人と金をかけて即応答ができるようにしてるから比較しちゃいかん
ひらがな数文字に対して応答するべき内容はあらかじめ決めてる(キャッシュしてる)でしょ
2023/07/02(日) 00:34:31.39ID:Nui6TCHha
byte b1 = 0xff;
byte b2 = 0x00;

これから

0xff00のushortを作るにはどうすればいいの?
2023/07/02(日) 00:46:15.78ID:vHxGGNZJ0
>>506
b1をushortにキャストして8ビット左シフトしてb2をOR演算する。
2023/07/02(日) 01:36:16.53ID:Nui6TCHha
できた
2023/08/05(土) 16:04:29.93ID:kjB6gU/20
WinForms でコードを表示するのに TextBox だとちと物足りないんで何かいいものありませんかね。
AvalonEdit を試してみて、何とかフォームに貼っつけるとこまではできたんだけど、なかなかに苦戦中。
もうちょっと手軽なのないでしょうか。行番号、ルーラー、カレント行の下線表示ぐらいができるもの。
もしくは、AvalonEdit を WinForms から利用する詳しめの解説などありませんかね。
2023/08/06(日) 12:36:00.23ID:SuulMMGF0
ないよ
自分で作った方がいいね
511デフォルトの名無しさん (ワッチョイ 5978-c/5M)
垢版 |
2023/08/06(日) 19:32:42.41ID:Q5k+gq0j0
Azukiってコントロールを日本人が作ってるからそれを試したら?
手軽かどうかは知らないけど
2023/08/06(日) 23:19:05.04ID:0GfmBnLn0
ないのかー。そうだろうなー。結構探したし。
Lazarus なら SynEdit とか付いてるのに、C# にこれだけないとは意外ですよね。
もうちょっと AvalonEdit 頑張ってみます。
2023/08/06(日) 23:33:37.66ID:ILFiPS2A0
AvalonEditはWPF用だからWinFormsからだと面倒そうだな
2023/08/07(月) 01:24:55.75ID:a71kCeze0
仕事なら商用コントロール買っちまうとか
逆に元をWPFにしてしまうとか
515デフォルトの名無しさん (ワッチョイ 019e-nD50)
垢版 |
2023/08/07(月) 07:47:17.07ID:4eIXUsq00
前任者が作ったexeしかないアプリを修正して
管理しろって言われてdnspyとか使ったけど
メソッド名とか変数名とか\u○○○みたいになるの
なんとかならないのか

試しにプライベートで作ったアプリやってみたけど
日本語も英語も普通にそのまま復元できたけど
なんだこれ
2023/08/07(月) 08:12:39.89ID:a71kCeze0
まさに逆コンパイル対策の難読化なのでは
どうにかしてソース手に入れるかクリーンルームするしかない
2023/08/07(月) 08:59:53.98ID:TF3XFQ9V0
ILSpyとかもあかんの?
518デフォルトの名無しさん (ワッチョイ 019e-nD50)
垢版 |
2023/08/07(月) 09:34:30.01ID:4eIXUsq00
ILSpyもdotpeekもあかんかった
エラーが9000以上あってやる気無くすが
上司がやれと言うからやるしかない

そもそもフリーソフト使っていいとか
この会社大丈夫かって感じだけど
2023/08/07(月) 09:47:03.04ID:7/9pVZv50
Windows Forms で Azuki 使ってる ( 2年くらい前、アプリに組み込んだ ) けど、結構いいよ。
プログラミング経験ほとんどなかった当時の自分でも割と楽に使えた。
2023/08/07(月) 13:15:57.85ID:Dc9awXL3d
前任者に連絡した方が早いだろ
後ろめたいものでもない限り
2023/08/07(月) 13:27:55.50ID:M4j0V4D40
難読化してあるのにソースが残ってないとか平和的に前任者が退職しているとは思えないな…
2023/08/07(月) 14:51:47.26ID:qK3pMcB0r
てへぺろ
523デフォルトの名無しさん (ワッチョイ 7101-1Ouz)
垢版 |
2023/08/07(月) 15:06:31.00ID:OVvdQQKF0
>>516
クリーンルームするとは?
2023/08/07(月) 15:15:00.86ID:M4j0V4D40
これじゃね?
クリーンルーム設計
https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%A0%E8%A8%AD%E8%A8%88
2023/08/07(月) 15:21:10.51ID:j7MPZ2iT0
>>523
ライセンス問題等を回避するために、既存の(主に外部の)成果物を認知・参照せずに「独立して設計する」ことを言う
この場合は原理的にクリーンルーム設計するしかない状況(逆コンパイルしても意味消失していて事実上メンテ不可能)
526デフォルトの名無しさん (ワッチョイ 019e-nD50)
垢版 |
2023/08/07(月) 16:20:01.23ID:4eIXUsq00
変数、メソッドは力技でどうにかなるとして
このコード意味わからん
最後のmanifestResourceStreamでnullになるし
コードが悪いのか、デコンパイラーが悪いのか
そもそも何がしたいんや

int num = 119752025;
int num2 = -60238915 - num;

StringBuilder stringBuilder = new StringBuilder();
int num3 = 476705732 - num - num2;
stringBuilder.Append((char)num3).Append((char)(num3 >> 16));
num3 = (769905914 ^ num) + num2;
stringBuilder.Append((char)(num3 >> 16)).Append((char)num3);
num3 = 477230015 - num - num2;
stringBuilder.Append((char)(num3 >> 16)).Append((char)num3);
num3 = (num ^ -764548291 ^ num2);
stringBuilder.Append((char)num3).Append((char)(num3 >> 16));
num3 = 597773385 + num + num2;
stringBuilder.Append((char)num3).Append((char)(num3 >> 16));
num3 = 477230024 - num - num2;
stringBuilder.Append((char)num3).Append((char)(num3 >> 16));
Stream manifestResourceStream = assembly.GetManifestResourceStream(stringBuilder.ToString());
2023/08/07(月) 16:55:49.75ID:xvTtzPnJM
おかしいのはお前だ
ソース全部読んでどうすんだよ

その部分を管理して修正したいのか?
一体お前は何をしたいんだ?
2023/08/07(月) 16:58:00.59ID:xvTtzPnJM
ソースを全部読んで理解するのが本質じゃないだろ

そのexeの機能を知っててそれをどうしたいか知ってるのはお前だけ
ここにソースを書いて何がしたいんだ?
2023/08/07(月) 17:15:24.91ID:+7fby/fj0
そりゃ難読化されたコードの解読方法を教えて欲しいんでしょ
2023/08/07(月) 17:31:24.09ID:xvTtzPnJM
その前にさあ

上司に社内のexeの逆コンパイルされたコードを5chに貼っていいと許可を得たのか?
2023/08/07(月) 17:56:22.03ID:tUDbyujs0
>>519
おお、いいね。WPF をちょっと学び始めてた。情報ありがとう。
ダウンロードにえらい時間かかったけど、無事使えた。
GitHub に移ってちょっとずつでもメンテしてくれないかな。
2023/08/07(月) 23:51:55.88ID:y0ApZ26H0
>>526
おおっと、これはとても重要な暗号化ロジックだな〜(棒)
533デフォルトの名無しさん (スプッッ Sd13-nD50)
垢版 |
2023/08/08(火) 09:47:42.83ID:eRtC1siad
これを暗号化ロジックって捉えるのやばすぎw
2023/08/10(木) 17:54:38.28ID:e0t7LaQ/0
Windows10でHttpClientをHTTP/3として利用することは不可能なの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況