1 名前:デフォルトの名無しさん [2022/09/18(日) 14:39:29.51 ID:VjUDO6tf0.net] 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980 を踏んだ人は新スレを建てて下さい。>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part155 https://mevius.5ch.net/test/read.cgi/tech/1655422932/ ■関連スレ 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 VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
645 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 11:36:03.24 ID:cwSbm70XM.net] >>638 よく言われるのは「How」はコードで書く 「What、Why」は自然言語や図表を使って書く、、、てこと
646 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 17:37:50.25 ID:tZqy6bJ10.net] >>644 >>645 どうも きれいなコードを書くことでフローチャートはいらないのかもしれないですね 処理は言語化しないと何をしてるのか分からなくなったりしますね
647 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 17:53:52.87 ID:zg6rbg9v0.net] フローチャートなんてアセンブリ言語でしか使わんぞ もしかしたらCでギリギリ使うこともあるかもしれんがオブジェクト指向言語では必要ない オブジェクト指向言語でフローチャート使わなきゃならんとしたらその前にまずオブジェクトの設計がおかしい
648 名前:デフォルトの名無しさん [2022/11/05(土) 18:13:19.21 ID:jSE+d3f7M.net] >>645 Whatもコードで表現しようぞ
649 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 18:22:12.07 ID:anrNho5cM.net] >>648 宣言的プログラミングだね 理想的だけど手続きを全て無くすのは難しい コードはどうしてもハイブリッドになってしまう
650 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 18:26:36.41 ID:pQZkgeTuM.net] オブジェクト指向言語で処理の流れを図示するならシーケンス図やアクティビティ図 静的な構造の図示はクラス図やパッケージ図
651 名前:デフォルトの名無しさん (ワッチョイ 9279-YsF2) mailto:sage [2022/11/05(土) 18:43:24.92 ID:D4NMIenB0.net] アクティビティ図書くなら フローチャートのがわかりやすいな
652 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 20:41:38.38 ID:SeMW4Qkf0.net] VSがある程度自動的にクラス関係図生成してくれねぇかなあ
653 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 20:58:35.47 ID:zg6rbg9v0.net] クラスデザイナーというのがあるからインストーラの個別のコンポーネントで検索してみろ
654 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 21:29:39.32 ID:6Vg185nZ0.net] >>653 あれってCore系未対応じゃなかったっけ?
655 名前:デフォルトの名無しさん [2022/11/05(土) 21:50:02.83 ID:mwXpY34pM.net] >>649 HowだけでなくWhatもコードで表現しようとするのと宣言的プログラミングはちと違うんだが いずれにしても重要なのは「仕様のWhat」を「コードのWhat」として対応付けること
656 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 22:06:58.20 ID:neflR3f7M.net] >>652 クラス関係図ではないけどあるクラスのメソッドやフィールドと他のクラス(または外部ライブラリdll)への関係を図示するだけならコードマップ表示がある
657 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 22:57:43.05 ID:x8IGYLJlM.net] Windowsフォームアプリ(.NET Core)のスケルトンコードより フォーム初期化処理(InitializeComponent()メソッド) https://i.imgur.com/ukmU36Z.png
658 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 23:01:20.64 ID:mbE+OsReM.net] >>655 ほとんど同じだよWhatをコードで表現しようとすると自然と宣言的になる というか宣言的プログラミングがそういうもの どうやってではなくてどうなって欲しいかを記述する
659 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 00:37:13.40 ID:zZNJQBYc0.net] >>656 使用環境条件が厳しい コード マップを使用して依存関係をマップする https://learn.microsoft.com/ja-jp/visualstudio/modeling/map-dependencies-across-your-solutions?view=vs-2022 >コード マップの作成および編集には、Visual Studio Enterprise エディションが必要です。 >ただし、Visual Studio Community および Professional エディションでは、Enterprise エディションで >生成されたダイアグラムを開くことはできますが、編集することはできません。
660 名前:.NET MAUI HighScool [2022/11/06(日) 00:58:03.81 ID:Am1kuzif0.net] .NET 7についての前情報得てるやついる? どんな感じなんだろ?
661 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 02:59:28.10 ID:3Vlqt+cVa.net] 質問です。 構造体を使っていて関数内でnewしてそこで使い終わる(ボクシングしない)場合は、stackに乗るだけなので、heapは汚さないしgcには影響無い認識でいいですよね?ゲームを作ってるのでgcの影響を少なくしたいんです。
662 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 07:14:57.83 ID:t/MPMTDqM.net] 構造体でもインスタンス生成してる時点でガベージコレクションの対象 .NETでは値型であろうが参照型であろうがすべての変数は監視下に置かれる ボクシングは値型の変数を参照型(object型)変数に代入する時に一時インスタンスを生成して値をコピーして渡す機能なので全く関係ない話
663 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 07:30:46.83 ID:mzFwuoQr0.net] >>661 > 構造体を使っていて関数内でnew よくわからんからコードで示して
664 名前:デフォルトの名無しさん (ブーイモ MMad-yfbC) mailto:sage [2022/11/06(日) 09:30:46.32 ID:OgJKt7GdM.net] >>661 の理解で正しいよ。>>662 は間違い。 値型は単なるデータ構造であり、それ自身はGCの管理対象にならない。
665 名前:デフォルトの名無しさん (ブーイモ MMad-yfbC) mailto:sage [2022/11/06(日) 09:45:40.42 ID:OgJKt7GdM.net] ただし、もちろん値型の変数を使ったらその先が全てGCの追跡の対象外になるわけではなくて、値型に定義された参照型の変数はGCの追跡対象となる。 上に述べた通り値型は単なる埋め込みのメモリのデータ構造なので、それ自体は単にGCをバイパスする。 そして、最終的にメモリ上に展開された構造のうちで参照型の変数だけが追跡対象となるわけ。
666 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:52:21.19 ID:mzFwuoQr0.net] >>664 newしてても?
667 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:54:44.02 ID:zZNJQBYc0.net] 値型のintでも実際はSystem.Int32構造体のインスタンスではなかったっけ? MaxValue、MinValueなどのプロパティやToString()などのメソッドが使えたはず 値型の変数でもGCが追跡しているのでは?
668 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:57:00.84 ID:OgJKt7GdM.net] >>666 構造体のnewは、スタック又はそれを保持する参照型オブジェクト上に事前に確保された領域に対し、コンストラクタをインプレースで実行する 新たなインスタンスを生成している訳ではない
669 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 10:00:33.74 ID:OgJKt7GdM.net] >>667 値型に対してObjectクラス又はValueTypeクラスのメソッドを呼び出そうとすると、その時点でボックス化が発生し、ヒープ上に新たなインスタンスが生成される
670 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 10:06:01.01 ID:sZiKsnj+0.net] ポインタがオマケでつくかつかないかだけなのか
671 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 11:39:39.10 ID:8lzCZdko0.net] なんか久し振りにここでためになる話を聞けた気がする。 横からだけど、ありがとう。
672 名前:デフォルトの名無しさん [2022/11/06(日) 12:23:04.83 ID:eRXytuty0.net] >>662 のしったか具合がやばい
673 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 12:28:55.33 ID:46oDEsAIa.net] このスレは前からそんなもんだろ 素人が知ったかして嘘ばかり教えるスレ
674 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 13:25:57.55 ID:zZNJQBYc0.net] intの構造体はC/C++で言うところの自己参照構造体を強引に組み込み型として実現してるっぽい https://qiita.com/cocoabreak/items/e93a3bd6d1640b622c42
675 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 13:54:54.11 ID:FxP86aLpM.net] >>674 この記事では、そもそもなぜ再帰的な定義になっていて、それがどのように機能するかの説明にはなっていないような C#のintやInt32型の変数は、実際にはどちらもILのプリミティブ型であるint32型にコンパイルされるんだよ つまりInt32をint32型のフィールド一つだけを持つ構造体として定義してやれば、Int32とint32のメモリ上のレイアウトが同一になる あとはコンパイラの型チェックを細工して、それらを区別しないようにしてやればよいというわけ
676 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 14:38:11.76 ID:mupUNnkwa.net] >>664 680です!有難う、スッキリしました!
677 名前:デフォルトの名無しさん [2022/11/10(木) 02:43:44.58 ID:nQDHqGzi0.net] TwitterのAPIからツイートを取得し、それを保存する方法について知恵を貸してください 現状テキストファイルに以下のように保存しています ツイートID||kugiri||ユーザID||kugiri||日付||kugiri||本文||kugiri||未読フラグ||kugiri||保護フラグ これをString.Splitで配列にしています 問題は||kugiri||とツイートされるとデータが壊れます 実際は||kugiri||ではなくもうちょっと長い記号の羅列ですがどうしても万が一という不安が残ります こういうデータはXMLで保存するものなのでしょうか その際「<Honbun>本文</Honbun>」のように保存されると思いますが 「07214545</Honbun>hoge」などXMLのコードが含まれるツイートをされても壊れないものですか? 保存時に本文だけBase64等にするか全てバイナリで保存も考えましたが、ファイルを直接開いて検索したりできないのも不便です あとは本文をデータの末尾にしてString.Splitを使わずに1つずつ配列に戻すか データ量は20,000件程度です、他によい方法がありましたらアドバイスおねがいします
678 名前:デフォルトの名無しさん [2022/11/10(木) 03:37:46.97 ID:+sVvBbXs0.net] >>677 その程度のことで人に聞くならプログラムなんかするな と言いたいところだが タブで区切れ
679 名前:デフォルトの名無しさん [2022/11/10(木) 05:44:42.33 ID:nQDHqGzi0.net] >>678 ツイッターとか5chとか不特定多数のユーザが書き込みをできるシステムで タブは絶対にユーザーが埋め込むことができない文字ということですか?
680 名前:デフォルトの名無しさん [2022/11/10(木) 07:09:23.51 ID:m98zu82a0.net] 適当なで区切る データにその記号があればエスケープしておく
681 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 07:45:50.73 ID:nQDHqGzi0.net] >>680 例えば|chinko|という区切り文字を使っている場合にユーザーが|chinko|と書き込んだ場合 APIから取得時に|ちんこ|と置き換えておくと言う事ですね、表示するときには|chinko|に戻すと 現状改行コードを置き換えて保存しているので、そこにまとめて組み込めば楽そうです
682 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 08:16:38.34 ID:XxWk5gSzr.net] 文字列の改変で(削除でもなく)、エスケープとかサニタイズを独自に実装するのは苦労すると思うよ
683 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 08:34:01.14 ID:9mQBoBy40.net] >>677 もしよろしけば下記について教えてほしい その上で「JSON形式ではダメな理由」があるなら、それも教えて 1. 「保存」の目的(保存したデータの利用目的) 2. 現状の保存形式を選択した理由
684 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 09:11:14.02 ID:O+ugNNB7M.net] xmlもjsonもエスケープ方法は規格として決められている オレオレエスケープなんか考えなくても偉い人が作ったものを黙って使えば良い
685 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 09:13:17.40 ID:TJ0qCovBd.net] ファイルに保存する際の定石をよく分かってないだけでしょ JSONやXMLでもいいけど、この場合普通に一つのツリーとして書き出すと追記できなくて不便そうだから、JSON Linesがお勧めだな Excelなどで表として扱いたいならCSVでもいいがJSON Linesよりはフォーマットにバリエーションがあるから考慮すべきことは多くなる
686 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 09:42:00.83 ID:hu9oTdXa0.net] 目視もしたいなら尚更そのままjsonでええやん
687 名前:デフォルトの名無しさん [2022/11/10(木) 10:19:10.77 ID:24bGZvg4a.net] 最近学びはじめてC♯ではメインメソッドを省略できるということで楽だなーと思っていたら関数のオーバーロードのところでエラーが出てしまいました 従来通りクラス名とメインメソッドを書くやり方だと普通に出来たのでローカル関数(オーバーロードできない?)として認識されているためエラーが出てるという認識で合っていますか? メインメソッドを省略した場合どうやってもオーバーロードできないのでしょうか?
688 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 10:33:00.98 ID:vuUWLQnn0.net] >>687 トップレベルに書かれたメソッドはローカル関数になります cf) //ufcpp.net/study/csharp/misc/miscentrypoint/#top-level-statements
689 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 11:17:10.46 ID:eH71UEsUa.net] >>681 違う、それだと |ちんこ| と書き込んだら |chinko| になっちゃうだろ |chinko| と書き込まれてたら |エスケープ||chinko| にして、表示する時に |エスケープ||chinko| を |chinko| に戻す ただこれだと |エスケープ||chinko| って入力されたら |エスケープ| が無くなっちゃうから |エスケープ| 自身もエスケープして |エスケープ| が来たら |エスケープ||エスケープ| にして、表示時に |エスケープ||エスケープ| を |エスケープ| に戻す ※ |エスケープ||chinko| の保存データは |エスケープ||エスケープ||エスケープ||chinko| になる まあ>>684 の言う通りオレオレエスケープは知識としては知っておくべきだけど自前で実装するよりライブラリ等に頼った方がいいと思うよ
690 名前:デフォルトの名無しさん [2022/11/10(木) 12:01:29.52 ID:24bGZvg4a.net] >>688 ということはオーバーロードを使いたい場合トップステートメントのあとにクラスやら定義してから関数作るか別のファイルで作って呼び出すしかないという認識でいいですか?
691 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 12:31:50.00 ID:vuUWLQnn0.net] >>690 それでいいと思います ただ、そこまで色々するのならトップレベルに書かず普通に書いた方が分かりやすいんじゃないかなという気もしますが
692 名前:デフォルトの名無しさん [2022/11/10(木) 12:55:47.41 ID:24bGZvg4a.net] >>691 なんかどうなのかな?ってもやもや気になってしまって 教えてくれてありがとうございましたスッキリしました!
693 名前:デフォルトの名無しさん [2022/11/10(木) 15:17:52.70 ID:F9S+K/27M.net] CSVのreader/writerは標準では無いんだね
694 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 18:43:48.03 ID:NDp6c9mu0.net] >>693 readerというかParserはあるよ TextFieldParserクラス https://dobon.net/vb/dotnet/file/readcsvfile.html#section7 同じところに載っている独自解析のサンプルや自分でParser作った方が動作は若干早くなるだろうけど
695 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 18:44:43.64 ID:QLIhXLlU0.net] ツイートって文字数決まってなかったっけ? このパターンなら昔は固定長とかも候補になっただろうに 最近の文字コード事情考えると固定長は厳しいよなぁ
696 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 19:17:24.93 ID:BjQppGzz0.net] 拡張性とか無くなるけど 本文の位置をラストにしてcountを渡せば Split一発で配列に出来るかも
697 名前:デフォルトの名無しさん [2022/11/10(木) 20:27:59.70 ID:m98zu82a0.net] 5chのDATのようにHTMLエンコードして改行を<br>で置き換えたものを<>で連結するフォーマットは何気に簡単でいいね
698 名前:デフォルトの名無しさん (オイコラミネオ MM91-o+MF) mailto:sage [2022/11/11(金) 11:48:16.03 ID:V/N8drZJM.net] ここで出てる案だと普通はタブ区切りがいい 汎用性がある excelやpythonのpandasでシンプルに読める VSCodeでアドインもある
699 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 12:23:50.12 ID:z+UtuJ+k0.net] >>698 >>679 の回答によると思うが
700 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 12:29:30.36 ID:8WOXnYS7M.net] システムとして必要がないので抹殺するのみ
701 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 13:24:51.05 ID:zPVyBVcV0.net] 馬鹿みたいにHTML解析してデータ取得してるならまだしも普通にapi投げてるならjson一択やろ
702 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 13:33:07.32 ID:OBpw9JhUa.net] ふつーYAML
703 名前:デフォルトの名無しさん (ワッチョイ a2bd-+nMC) mailto:sage [2022/11/11(金) 16:29:42.18 ID:WVb8D07I0.net] 初めまして。 .NetCoreでコマンドラインみたいな改行させながらのログ表示をさせようと思ったのですが、どんなコントロール使えば良いのでしょう? 出来れば履歴遡れるようにスクロールバー付きで。 ラベルもテキストボックスもうまく表示してくれない・・・shownイベント以下に書いたからかな。
704 名前:デフォルトの名無しさん (ワッチョイ f533-rIwK) mailto:sage [2022/11/11(金) 16:42:33.46 ID:GYEdeJz40.net] >>703 画面への表示は何を使ってるの? WinForms? WPF? それともそれ以外の何か?
705 名前:デフォルトの名無しさん (アウアウウー Sacd-Aj/S) mailto:sage [2022/11/11(金) 16:50:47.79 ID:YvvI/C4ma.net] 同じところで普通に文字列渡したら表示されるなら読み込みに失敗してるのでコントロールのせいではない
706 名前:デフォルトの名無しさん [2022/11/11(金) 18:11:52.32 ID:FjpNhKohp.net] ただのテキストボックスとかラベルだと そのとき持ってるテキストしか表示しないから アペンドしてくしか無いんじゃね?
707 名前:722 mailto:sage [2022/11/11(金) 18:23:04.48 ID:WVb8D07I0.net] 反応ありがとうございます。 >>704 WinForm使っています。 ・・・と、プロジェクト作成時に指定したと思ったのですが、プロジェクのプロパティを確認したら少し違っていました。 Windowsフォームなのは間違いないですが、.NetCoreではなく.Net6.0でした。 .NetとかCoreとかframewaorkとか、まだよく分かっていません。取り敢えず.Netにしとけって感じみたいですが。 WPFはまだ私には早いらしいから避けて通ろうと思います。 >>705 Form.Textは望んだ通りに表示されたのですけどねw 当初 public Form1()の InitializeComponent();以下に記述していたのですが、処理が全部終わってからForm作画に入るのでShownイベントに移動したのですが・・・念を入れて配置した中断ボタンも作画されず穴開き状態で、ShownはFormの配置が終わった直後であって総ての配置が終わった跡ではないって事ですかね。 私が書いたのは読んだファイルを加工して別ファイルに書き出している程度のモノなのですが、普通の処理はどこに置けば良いんでしょうね。 要勉強なり。 #よく分からないまま入門しているから、一つの質問の不明部分を細く要件定義していくと目も当てられない長さになりますね・・・。
708 名前:722 mailto:sage [2022/11/11(金) 18:24:05.80 ID:WVb8D07I0.net] >>706 なるほど・・・試してみます。
709 名前:デフォルトの名無しさん [2022/11/11(金) 18:38:29.81 ID:k1VRcWZVa.net] キモイインデント
710 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 19:16:48.66 ID:7I/0fxGc0.net] >>707 GUIなので実行ボタンでも押した時に処理すればいいんじゃないですかね? ボタンの配置は気合を入れなくてもツールボックスからマウスでポトペタすると完成ですよ
711 名前:722 mailto:sage [2022/11/12(土) 06:25:09.95 ID:gXw8amZq0.net] >>710 ボタンスタートと言う方法なら今の実力でも綺麗に収まると思うのですが、D&Dかダブルクリックで起動したら後はノンストップで処理してひっそり終了してもらいたいので、ボタンでワンストップは仕様として煩わしい。 と言う美学的な理由でやろうとしないのでした(^^; >>706 改めまして。 実装してみました。 TextBox.Text += newword;的な記述をして痛い目を見ました。 TextBox.AppendText(newword);としないといけないんですね。 ついでに初期設定で TextBox.ScrollBars = ScrollBars.Both;でスクロールバーも付けました。 buttonは機能しないのに、TextBoxは問題なく機能していますね。何故だろう。 早くshownからどっかに移動しないとですね。
712 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 09:45:26.79 ID:zAtFaE7C0.net] スタンドアローンなアプリで、アプリの起動をパスワード保護したいのですが、ILSpy等で丸見えにならない程度の強度を持つにはどのような方法がありますか?
713 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 09:59:48.08 ID:tbSOUgpp0.net] C#以外でdllにしとけば?
714 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 10:23:23.19 ID:B4kjFmw80.net] >>712 パスワードチェックロジックを難読化ツールでぐちゃぐちゃにすると追う気無くなる
715 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 10:29:06.28 ID:ZNG2TRSk0.net] >>712 適当なアルゴリズムのハッシュ値を比較すれば?
716 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 12:11:02.84 ID:Ra6ElU+i0.net] t
717 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 12:12:52.85 ID:bRljaFHR0.net] >>712 んなもんローカルに全てのデータがある時点で何しても無駄 ILだけ対策すればいいならネイティブコンパイルすればいい そうすりゃ他のネイティブアプリと同じく機械語になるから
718 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 12:13:15.16 ID:Ra6ElU+i0.net] k
719 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 12:17:11.67 ID:Ra6ElU+i0.net] n
720 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 13:44:40.40 ID:4XgMUuW5M.net] >>712 アプリの本体をパスワード付きzipかなんかで圧縮しといて動的にロードする
721 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 13:48:14.08 ID:YXyqvQzKa.net] >>720 ダサすぎるし解凍したところでコピーできんじゃん
722 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 13:55:42.98 ID:guv9Rfqm0.net] パスワードのみのテキストファイルを そのパスワードでzip圧縮 解凍成功と中身の照合で実行継続か
723 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 13:57:46.17 ID:YXyqvQzKa.net] >>722 実行ファイルをバイナリエディタで開いて照合する箇所を飛ばす命令を書き込めば照合しなくなるぞ
724 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 14:51:41.26 ID:f1IcSnyo0.net] >>722 それでいいなら主要なコードを暗号化しといて解凍したコードを動的ロードして実行すれば>>723 みたいな攻撃にも耐えられるな
725 名前:デフォルトの名無しさん [2022/11/12(土) 15:00:47.68 ID:Y/i2pfZ30.net] >>715 で良くね?
726 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:00:48.57 ID:ajB/boEg0.net] ディスクに平文ファイルを書き出したところを盗まれる。 オンメモリでやりたいけどそっちはデータ実行で引っかかるんだよな。
727 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:02:24.87 ID:YXyqvQzKa.net] >>724 暗号化する部分とキーが平文だからだめだな
728 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:11:29.38 ID:c/ILT9OL0.net] まあ>>717 の言う通りで 結局現行の高価な商用アプリはほぼシングルユーザーライセンスに移行してるし 今時ネットに繋いでないなんてありえないからKMSみたいに一定期間で認証させるとかだな 実行したらメモリに全部展開されるしそこ覗かれるようならローカルのファイルをいくら細工しても無駄だよ
729 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:12:12.94 ID:LpiKZFMR0.net] なんか変に面倒な方向にしようとする人たちがいるな >>712 パスワードを知られたくないだけなら>>715 で十分。MD5でもSHA-512でもお好きなもので パスワード起動部分を突破されたくないなら>>717
730 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:16:20.60 ID:c/ILT9OL0.net] >>711 まずWindowsのGUIの基礎を確認した方がいいよ メッセージループの仕組みやformの作成から表示までにどのイベントがどういう順序で呼ばれるかとか shownのタイミングで設定が必要な場合もあるけど質問の内容はloadの段階で片がつくんじゃないかね
731 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:27:16.04 ID:2L2Z04CZ0.net] ライセンス認証前提でレスしてる人が多いけど本当にそういう用途なのか? 今どきそんなことするかな?
732 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:54:02.21 ID:ncy2h0/Ld.net] そのパスワード認証必要?
733 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:56:41.52 ID:ncy2h0/Ld.net] 毎回入力させるのか 次回以降のためにキャッシュでファイルローカルに持たせた場合、どう保存するのか
734 名前:デフォルトの名無しさん [2022/11/12(土) 16:04:56.79 ID:Y/i2pfZ30.net] どうって普通にパスワード置くだけじゃね
735 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 16:21:43.32 ID:ncy2h0/Ld.net] 普通に置くパスワードって必要?
736 名前:デフォルトの名無しさん [2022/11/12(土) 16:29:23.68 ID:Y/i2pfZ30.net] ?
737 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 16:39:07.13 ID:ZNG2TRSk0.net] こんな感じで良いんじゃない? ・パスワードが保存されてるか確認 ・パスワード入力 ・ハッシュ値を比較 ・(OK)ログイン/平文パスワードを適当に保存 ・(NG)リトライ 次回以降 ・保存されたパスワードとハッシュ値を比較 ・(OK)ログイン ・(NG)パスワードファイルを消してリトライ ハッシュ値の生成はレインボーなやつとか総当りとかまでは対策しときたいかなぁ パスワード検証用によく使われるアルゴリズム使用して、saltでゲタ履かせてストレッチングで処理時間の確保ぐらいはしときたい バイナリいじるやつまで考えると全然対策にならんけどねぇw
738 名前:デフォルトの名無しさん [2022/11/12(土) 16:44:03.53 ID:Y/i2pfZ30.net] Linuxはどうしてるんだろう
739 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 16:51:30.20 ID:ajB/boEg0.net] osのログインとアプリの起動を同列には考えられんが、linuxも ディスクを抜き取って /etc/passwd を書き換えられたらアウト。
740 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:27:01.84 ID:vKl12ZSx0.net] みんな俺のために働け
741 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:29:44.19 ID:ZNG2TRSk0.net] 今どき /etc/passwd にパスワードおいてるディストリビューションってあるの?
742 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:48:17.21 ID:ajB/boEg0.net] そこは本質的な話じゃないから適宜shadowにでも読み替えて。
743 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:52:51.14 ID:2L2Z04CZ0.net] >>737 ハッシュ化するのは平文パスワードを保存しないためなんだが・・・
744 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:59:12.62 ID:1r3Bwkn20.net] >>737 今時平文パスワードを保存って発想が出て来るのは不味いぞ
745 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 18:17:21.03 ID:ZNG2TRSk0.net] >>743 ハッシュ値にこだわるなら、ストレッチングの回数を適当に減らしたハッシュ値を保存→次回以降は減らした回数ストレッチングして検証。でも良いと思うけど、すでにユーザの手元にパスワードがある前提のスタンドアロンアプリだからねぇ 適当なトークンの作成ロジックが隠せない以上平文で良いと思う 平文が嫌なら、毎回パスワードを聞く感じかなぁ