ふらっと C#,C♯,C#(初心者用) Part158at TECH
ふらっと C#,C♯,C#(初心者用) Part158 - 暇つぶし2ch358:デフォルトの名無しさん (ワッチョイ 1701-E+2s)
23/05/03 11:02:59.86 Fpkn6yKr0.net
ルールってーと、フリーウェア作るときみんなライセンスとかどうしてるの?
いろいろ種類あって何採用していいのかよくわからない
ソース付きで、改変/配布/商用利用好きにしてって場合とかさ
MIT?

359:デフォルトの名無しさん (ワッチョイ ff7b-vJGv)
23/05/03 11:04:19.17 g2t1b8zF0.net
>>358
【License】ライセンス総合【利用許諾】
スレリンク(tech板)

360:デフォルトの名無しさん (ワッチョイ 77e4-ydUa)
23/05/03 11:36:28.25 bhz/zA6o0.net
>>343
これかっこいい
使わせてもらお

361:デフォルトの名無しさん (ワッチョイ 7f79-Wy6e)
23/05/03 12:06:52.63 0fnUMlbu0.net
>>360
実績が伴わないとしょっぱい空気になりそう

でもお前の給料20万じゃん・・・?
的なw

362:デフォルトの名無しさん (ワッチョイ 1701-ef8y)
23/05/03 12:17:42.17 GN2zt4Uy0.net
上で出てる動けばいいじゃん精神よりは億倍マシかと

363:デフォルトの名無しさん (ワッチョイ 9f7f-ExZu)
23/05/03 12:24:06.51 XvXH8q6A0.net
easyかつsimpleがいいならpythonやっとけ

364:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 12:27:13.86 iydNsBEo0.net
動けば良いじゃん精神の方が金は稼げるよ

だってIT技術者でも無い会社経営層は技術持ってても評価しないもん
技術持ってる持ってない関係なしに稼げるシステム作った奴を評価する

つうかこの板使っておいて元の2ちゃんねる作った億稼いだひろゆき自体が動けば良いじゃん精神だぞ
自身の配信でもそう言ってるじゃん
こういう技術どうこう言う技術者は無能ってさw

365:デフォルトの名無しさん (ワッチョイ 375f-Hgfr)
23/05/03 12:31:50.95 6d/7YSFK0.net
そそ、使いもしない単体モジュールの境界テストとか負荷テストとか無駄
トータルできちんと動いてくれればそれで良い

366:デフォルトの名無しさん (スッップ Sdbf-fitb)
23/05/03 12:48:43.53 foxDzL7Ed.net
test

367:デフォルトの名無しさん (ワッチョイ 57ad-0AmK)
23/05/03 13:19:12.96 PpDaqr1l0.net
そんであるとき負荷が掛かったりちょっと改修したときに爆発する

368:デフォルトの名無しさん (ササクッテロリ Sp8b-Hgfr)
23/05/03 13:25:11.18 ll4FWYPGp.net
>>367
改修したらトータルできちんとテストしたら良いだけだろ

369:デフォルトの名無しさん (ササクッテロリ Sp8b-Hgfr)
23/05/03 13:25:47.69 ll4FWYPGp.net
むしろ改修した箇所だけのテストとかあり得ないよな

370:デフォルトの名無しさん (ブーイモ MMbf-SYdp)
23/05/03 13:27:55.56 t3wVQNi7M.net
使いもしない単体モジュールがそもそもなぜあるの?
テストするまでもなく削除すればいいのに

371:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 13:28:01.67 RLCA5WWQ0.net
その「トータルできちんとテスト」ってなんだ?

372:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 13:31:19.49 iydNsBEo0.net
結合テストとかの事やろ

373:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 13:35:10.87 RLCA5WWQ0.net
結合テストすることを「トータルできちんとテスト」って呼ぶ層があるんだ
俺の知らん世界だな…

374:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 13:35:53.83 iydNsBEo0.net
>>370
普通にあるやろ

使うと思ってとか今後の拡張性の為にとかオーバーロード関数用意したけど使われてないとか

特に多いのが今後の拡張性云々とかカスタマイズ用とかってやつ
実際に拡張とかカスタマイズする時に使い物にならなくて設計からやり直す
つまり全くの無駄

375:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 13:39:34.40 iydNsBEo0.net
>>373
結合テストは俺が勝手に言っただけや
でもリリース前ってそれだけじゃ無いじゃん
しかもそれって会社とかでも違うやん
だからどれとは言えないもんやで

俺の会社だと結合テスト以外だと外部にセキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

376:デフォルトの名無しさん (ワッチョイ 975f-VSqy)
23/05/03 13:41:01.73 eaeSSGs50.net
使われないモジュールを書いてしまうおじさんや、非機能要件を無視する(あるいは認識できない)おじさんも淘汰される

377:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 13:45:11.16 RLCA5WWQ0.net
> セキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

こんなテストや監査が想定されてる中、ユニットテストが無駄だって思ってるってこと?

378:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 13:51:12.96 RLCA5WWQ0.net
ちょっとまって!

> 外部にセキュリティテスト依頼したり社内の品管のテストとシステム監査が入る

こんなプロジェクトで「動けばいい」ってスタンスで仕事してんのか?
マジか

379:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 13:51:42.78 iydNsBEo0.net
>>377
俺が言った訳じゃ無いけどなw

まあ俺は単体テストはアリだと思うぞ
単体テストの結果でもって要は作業完了証明やろ
逆に言えば以降は俺の責任じゃ無いと言えるし仕様変更は別に金取れる

380:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 13:53:02.57 iydNsBEo0.net
>>378
そうだぞ

だって製品の検査で調べるのはその動くかどうかじゃん
中のコードがどうとか技術がどうとか関係無いやん

381:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 13:55:01.32 RLCA5WWQ0.net
すごいな。そのプロジェクト
俺の知ってる世界だと、そんなコード見せられたらレビュアーが怒り狂うわ

382:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 13:57:38.37 iydNsBEo0.net
>>381
多分お前が普段使ってる様なアプリもそんなもん

その神経質で無能なレビューアーが関係してるお前のシステムって世界でどんだけ売れてんのって話

383:デフォルトの名無しさん (ワッチョイ 1707-rvTa)
23/05/03 13:59:04.86 7KJ/CzIt0.net
動けばいいとしつこく言ってるやつはただの無職だよ
無職の妄想の中ではそうなんだろうさ
現実には動くのは当然で最低限でしかないんだけどね

384:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 14:03:35.88 iydNsBEo0.net
>>383
そうは言ってるけどじゃあそれ以上に何が必要か言えてないやん

ちなみに話の流れは
>>330
>>333
みたいなコードの内容から来てるんやで
こういうコードが糞だろうが動けば良いって話だから脱線するなよ
お前等っていつも前提間違ってるからなw

385:デフォルトの名無しさん (ワッチョイ bfbc-o+T5)
23/05/03 14:06:31.39 5+L69Iha0.net
まああんまり完璧なコードを書くと、その後の仕事がなくなるからな。

386:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 14:09:44.71 RLCA5WWQ0.net
> 777c-KiN+
ついでに聞くけど、お前の中でシステム監査ってどんなもんなの?

387:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 14:15:23.93 iydNsBEo0.net
>>386
すまん無能の質問の意味が分からん

システム監査って経済産業省とかIPAに定義あるよね
普通はそれに準拠したものが一般的だと思うんだ
つまり共通認識じゃないの?

無能の頭の中って俺俺監査があるん?

388:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 14:19:36.70 RLCA5WWQ0.net
> だって製品の検査で調べるのはその動くかどうかじゃん

こんなこと言ってるし、また俺のシラン世界があるのかと

389:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 14:26:32.08 iydNsBEo0.net
>>388
アホw

まさか動くかどうかが機能要件や非機能要件 セキュリティ要件満たしてないと思ってる?
それこそ最低限満たした上で動く事だよね

その上で中のコードが>>384で言った様な糞コードかどうか関係無いよねって話だ

ほら言った様に話の流れが分かって無い
理解してない
前提を間違ってる

無能だな

390:デフォルトの名無しさん (ワッチョイ 9f4b-gncP)
23/05/03 14:26:49.46 vL8FscsM0.net
GWだねぇ

391:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 14:30:01.23 RLCA5WWQ0.net
>>389
> まさか動くかどうかが機能要件や非機能要件 セキュリティ要件満たしてないと思ってる?

システム監査ってそういうことじゃないぞ
お前の中のシステム監査ってどんなもんなん?

392:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 14:37:49.92 iydNsBEo0.net
>>391
繰り返すアホ

393:デフォルトの名無しさん (スッップ Sdbf-oJ27)
23/05/03 14:42:38.57 s1pMNzuQd.net
>>391
お前が間違ってるんじゃ?
経済産業省のシステム監査基準だとセキュリティガイドライン等に準拠してるか云々って書いてあるしそういう事を監査するもんじゃないの?

394:デフォルトの名無しさん (ワッチョイ ffbb-zzYQ)
23/05/03 14:48:38.92 RLCA5WWQ0.net
俺の知ってる世界だと、システム監査ってのは雑に言うとシステムを体制として担保する方法ができてるかを確認するもの

で、「機能要件や非機能要件 セキュリティ要件」に関連した箇所でいうと、それらの要件が正しく永続的に保証できる証跡が残せるか?って観点で監査される

つまり、

> だって製品の検査で調べるのはその動くかどうかじゃん

ってことにはならんのよ
だから、コーダーが「動けばいい」ってスタンスで仕事してたら、レビュアーが体制としてブチ切れるんだわ

で、お前の中のシステム監査ってどんなもんなん?

395:デフォルトの名無しさん (ワッチョイ 9f2f-g9Ql)
23/05/03 15:09:07.11 fD0yPqm80.net
動けばいいってのは
なぜそう書かないほうが良いのか、ちゃんと理解して説明できないやつの言い訳
まあそう書くなって言ってる奴もちゃんと説明できてないんだがな

396:デフォルトの名無しさん (ワッチョイ ff10-By2c)
23/05/03 15:19:09.40 YldI9T9X0.net
>>390
GW終わって2ヵ月ちょい経つと今度は夏だねぇってなるんだよな

397:デフォルトの名無しさん (ワッチョイ 1f3d-VWCj)
23/05/03 15:26:23.95 49Yy066J0.net
ぼんやりとした質問ですが、

Form1にWebView2が合ったとして、Form2でお気に入りを作って、Form2からForm1の
WebView2にナビゲートしたいんです。

やってみたんですが、Form1にあるはずのWebViewがForm2から出てこないんです。

調べてみたらキャスト?とかいうのが必要らしくて、キャストはちんぷんかんぷんです。

コード書いておくので誰かお助けを~

後Form1のWebview2にアクセスしようとしたら保護がかかってしまいました。
ランタイムを噛ませたりとかよく分かりません。

こんな超初心者の俺ですが、助けてください。

private async Task InitializeAsync()
{
await webView21.EnsureCoreWebView2Async(null);
}
private async void Form1_Load(object sender, EventArgs e)
{
await InitializeAsync();

webView21.CoreWebView2.Navigate("URLリンク(web.biz-prog.net));
}

398:デフォルトの名無しさん (ワッチョイ 1f3d-VWCj)
23/05/03 15:26:47.58 49Yy066J0.net
private void button1_Click_1(object sender, EventArgs e)
{
Form2 f2 = new Form2(this); // 自フォームへの参照を渡す
f2.Show(); // サブ・フォームを表示
}

ここからForm2

public partial class Form2 : Form
{
Form1 f1;
private object webView21;

public Form2(Form1 f)
{
f1 = f;
InitializeComponent();


試して見たんですが、オートコンプリートに((Form1)).webview2が出てきません

399:デフォルトの名無しさん (ワッチョイ ff10-By2c)
23/05/03 16:36:13.15 YldI9T9X0.net
Form1に配置してるWebView2がprivateで宣言されてるからじゃないかね
VS使ってるならデザイナーで選択してプロパティウィンドウのModifiersを確認して
PrivateになってるならInternalかPublicにしたらいいよ

400:デフォルトの名無しさん (ササクッテロリ Sp8b-Hgfr)
23/05/03 16:48:57.57 rOyAnSv/p.net
プライベートのままアクセサ作れば良くね?

401:デフォルトの名無しさん (ワッチョイ bf42-fitb)
23/05/03 17:56:30.72 DnrzKFHb0.net
そもそも素人コーディングをやるやつがマトモなアプリ書けるとは思えん
アプリの作り方を勉強した人ならマシなコード書くからな

402:デフォルトの名無しさん (ワッチョイ 1f3d-VWCj)
23/05/03 19:51:19.18 49Yy066J0.net
>>399-401
解決しました。ありがとうございます。

403:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 21:30:59.09 iydNsBEo0.net
>>394
あのさちゃんと読んだ?

お前は前提を勘違いしてるんだよ
動けば良いってそういう事じゃ無いんよ

404:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 21:35:17.93 iydNsBEo0.net
>>394
もっと分かりやすい例を出そう

例えば同じ処理を100箇所コピペ出実装したとする
普通なら関数化してってやるわな

こんな100箇所コピペした糞コードでもシステム監査や他のテストでは一切問題にならない
動けば良いんだよ

405:デフォルトの名無しさん (ワッチョイ 1707-rvTa)
23/05/03 21:36:12.63 7KJ/CzIt0.net
アスペしつこいな

406:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 21:40:43.87 iydNsBEo0.net
>>405
お前みたいな無能が多くて困ってる

407:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 21:42:02.40 iydNsBEo0.net
もっというと例えばMV系フレームでこの処理はモデルに書くべきだとかどうとか
こういうのもどうでもいい

モデルで書くべきだろうが書くべきで無かろうが

動けば良いんだよ

408:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 21:43:26.02 iydNsBEo0.net
オブジェクト指向もそう
クラス設計がどうだの継承がどうだのどうでもいい

動けば良いんだよ

409:デフォルトの名無しさん (ワッチョイ 777c-KiN+)
23/05/03 21:46:03.28 iydNsBEo0.net
このクラスでカプセル化されてないから云々
どうでも良い

動けば良いんだよ

410:デフォルトの名無しさん (ワッチョイ 3702-ITaW)
23/05/03 21:55:41.82 XU1+7Xhm0.net
触らぬキチに祟りなし

411:デフォルトの名無しさん (オッペケ Sr8b-0AmK)
23/05/03 22:10:57.21 7dxnHkZLr.net
まあ中小規模だと“動けばいい”でやってるのも事実だからなぁ
エクセルにチェックつけてペタペタしてソースは見ないなんてのもザラ
なんならちょっとしたものなら本人が動いてる!で終わりとかね

412:デフォルトの名無しさん (ワッチョイ 7f79-YtWG)
23/05/03 22:36:48.59 0fnUMlbu0.net
>>411
動けばいいよりちょっと良くなると
何が良くなるの?
資料も書かないくせに余計な拡張要素入れたがるやつってぶっ殺したくなるんだけど?
お前もその類?

413:デフォルトの名無しさん (スップ Sdbf-orLb)
23/05/04 01:49:28.43 s0gu/juAd.net
可読性がよくなる
バグが入り辛くなる
後釜がコード読んで罵倒せずにすむ
自分がクソコードに遭遇する可能性が減る

414:デフォルトの名無しさん (アウアウアー Sa4f-ef8y)
23/05/04 03:35:15.40 FCXcO5KQa.net
資料を書く・書かないとコードを改善する・しないは別問題なのになんかキレ散らかしてるの怖・・・

415:デフォルトの名無しさん (ワッチョイ ff10-By2c)
23/05/04 06:46:14.26 gb1C7wFP0.net
なんぞ嫌なことでもあったんだろうw

416:デフォルトの名無しさん (アウアウウー Sa1b-rvTa)
23/05/04 07:31:56.06 iNiPzsH8a.net
糞コード納品してリテイク食らって動けばいいといくら主張しても却下されてここで八つ当たりしてんじゃね

417:デフォルトの名無しさん (ブーイモ MMbf-SYdp)
23/05/04 08:16:56.65 2P3iGn2SM.net
寿命の短いゲームの開発とかには動けばいいだろのメンタリティでコード書いてるやつが多い結構いる
実際クソコードだからバグ修正のアプデでまたバグるのも日常茶飯事

418:デフォルトの名無しさん
23/05/04 10:57:14.77 KzOav63c0.net
オマエらって普段からそんな立派なコード書いてるの?
皮肉でも何でもなく、大手さんの寄越したコードでもネットのサンプルをそのままコピペとか普通にあったんだけど。
アマゾンの AWS 用のサンプルコードとかでも整理なにそれなコードも普通にあるし。
ああいうレベルのものでも水準を満たしていたりするんだろうか。
まあ自分も普段は納品する側の中小だけど。

419:デフォルトの名無しさん
23/05/04 11:02:54.68 vtPK3lgJ0.net
>>1読め

420:デフォルトの名無しさん
23/05/04 12:11:12.80 7U0ATqEaM.net
>>413
ドキュメントでも書いてよ

421:デフォルトの名無しさん
23/05/04 13:12:46.06 nZfQ3MKS0.net
>>418
PSNの個人情報流出思い出した
dobon(だったはず)丸パクリの暗号化だった。"saltは8バイト以上"っていう文字列で復号化できた
オレが作った社内システムも同じことしてた。
社内システムだからセキュリティは気にしてないが。

422:デフォルトの名無しさん
23/05/04 13:16:44.41 mx5edemad.net
>>420
クソコードをドキュメントに起こすときのモチベーション低下もあるな
規則性がないからな
あの頃の俺はなんでこんな変な処理を……

423:デフォルトの名無しさん
23/05/04 15:58:14.71 /htkaizY0.net
>>422
言い訳はいいから書いて

424:デフォルトの名無しさん
23/05/04 16:21:40.44 FCTf23V0d.net
?意味わからん
まさか今から書いて上げろって言ってる?

425:デフォルトの名無しさん (ワッチョイ 9354-ouLR)
23/05/06 20:43:47.65 8uPWyiyX0.net
非同期ファイルコピーのサンプルを探していたら、FileStream を使う方法と File.Copy を使う方法があるようなのですが、どっちがいいのでしょうか?
それぞれのメリット・デメリットが知りたいです。

//方法 1 (FileStream)
private static async Task CopyFileAsync(string sourceFilePath, string destinationFilePath)
{
 using (var sourceStream = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, true))
 using (var destinationStream = new FileStream(destinationFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.None, bufferSize: 4096, true))
 {
  await sourceStream.CopyToAsync(destinationStream);
 }
}
//方法 2 (File.Copy)
private static async Task<bool> CopyFileAsync(string srcFileName, string destFileName)
{
 await Task.Run(() => File.Copy(srcFileName, destFileName));
 return true;
}

426:デフォルトの名無しさん (ワッチョイ cb10-W4Ad)
23/05/06 22:50:57.94 v1IlMQax0.net
とりあえず機能させたいならFileCopyで十分
中断とか進捗状況確認とか融通が利くのがFileStream

427:デフォルトの名無しさん (ワッチョイ c2bd-O5MS)
23/05/06 23:28:08.83 TzwbEMRu0.net
File.Copyだと同期処理がスレッドを専有しそう。
FileStream.CopyToAsyncだとそうならないように実装されているのかな?

428:425 (ワッチョイ 9354-ouLR)
23/05/07 00:12:10.49 /tWxMywy0.net
>>426-427
ありがとうございます。
FileStream を使うことにしました。

429:デフォルトの名無しさん (ワッチョイ 9354-ouLR)
23/05/07 00:41:03.38 /tWxMywy0.net
>>425 の方法でファイルコピー後、コピー先ファイルのタイムスタンプを変更しようとしたら、例外が発生します。
頻度は10回に1回あるかないか程度です。
何が原因でしょうか?

static async Task Main(string[] args)
{
await CopyFileAsync("コピー元ファイル名.txt","コピー先ファイル名.txt");
}

static async Task CopyFileAsync(string srcFileName, string destFileName)
{
using (var srcStream = new FileStream(srcFileName, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, true))
using (var destStream = new FileStream(destFileName, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 4096, true))
{
await srcStream.CopyToAsync(destStream);
//試しにFlush・Close・Dispose 入れてみたけどダメでした。
srcStream.Flush();
destStream.Close();
srcStream.Close();
destStream.Dispose();
srcStream.Dispose();
}
var lastWriteTime = File.GetLastWriteTime(srcFileName);
File.SetLastWriteTime(destFileName, lastWriteTime); //ここで、: '別のプロセスで使用されているため、プロセスはファイル 'コピー先ファイル名.txt' にアクセスできません。'

430:425 (ワッチョイ 9354-ouLR)
23/05/07 00:57:48.70 /tWxMywy0.net
方法 2 (File.Copy) の方法でも発生しました。
まったく原因の見当がつきません・・・

431:デフォルトの名無しさん (ワッチョイ 5eda-xrk/)
23/05/07 00:58:07.18 AUxqabWy0.net
ef coreでDBからレコードを大量に取得する場合、
(A)
foreach( var row in await query.ToListAsync() )
で取得する場合と
(B)
foreach( var row in query )
で取得する場合、どちらがアプリサーバで消費するメモリが多いでしょうか?
queryはIQueryable<T>型です。
DBサーバとアプリサーバは分かれています

(A)だとDBサーバから結果が全部返るまで待ってからループ開始、
(B)ならストリーミングで読み出せたところからループ処理
って勝手に想像してたんですが、ef coreで使用するDBMSのミドルウェアに依存でしょうか

具体的にはDBMSはpostgresqlです。
このあたりのドキュメントあったらURL教えてください

432:デフォルトの名無しさん (ラクッペペ MMde-yLVR)
23/05/07 01:21:55.84 m4wk6w14M.net
onedriveとかgoogledriveとかdefenderとかnortonとか

433:425 (ワッチョイ 9354-ouLR)
23/05/07 01:29:00.89 /tWxMywy0.net
とりあえず原因不明なので、最大10回を上限に、例外発生したらリトライするようにしました・・・

int j = 0;
bool b = false;

while (!b || j < 10)
{
 try
 {
  //コピー処理
  b = true;
 }
 catch
 {
  continue;
 }
 j++;
}

434:デフォルトの名無しさん (ワッチョイ 9354-ouLR)
23/05/07 01:37:17.63 /tWxMywy0.net
>>432
Windows Defender 無効にしたら例外が発生しなくなりました!
天才さんありがとうございます!(>▽<)

435:デフォルトの名無しさん (オッペケ Src7-KeI6)
23/05/07 08:06:15.51 ZcKb5BN5r.net
>>431
DB絡んでないけど一般論としては
URLリンク(atmarkit.itmedia.co.jp)
もっともODBCドライバとかDBプロパイダの作りがザルだとクエリ実行結果を一気に全件取り出して
アプリサーバ上のメモリ上に保持してる可能性もゼロではないけど、postgresならそんなことはないだろう

実体化したくないけど非同期でレコードを取り出したいってことなら
await foreach( var row in query.AsAsyncEnumerable() )

436:デフォルトの名無しさん (ワッチョイ 5eda-xrk/)
23/05/07 11:06:44.59 AUxqabWy0.net
>>435
ありがとうございます。
ToList()やToListAsync()はすべての結果が利用可能になるまで何も返されない、つまり
大量レコード処理には向かない

(B)の場合でもAsNoTracking()をつけて変更検知をOFFにしないと
Linq to DBがキャッシュしてしまいメモリ使用量が大きくなる

(B)でさらにI/Oをブロックしたくない場合、非同期ストリームを利用する

ということで大量レコードをチビチビ処理する場合は
async foreach( var row in query.AsNoTracking() )
という書き方に落ち着きました

他の参考URL
URLリンク(stackoverflow.com)
URLリンク(stackoverflow.com)

437:デフォルトの名無しさん (ワッチョイ 5eda-xrk/)
23/05/07 11:09:18.20 AUxqabWy0.net
ミス
最終的に
async foreach( var row in query.AsNoTracking().AsAsyncEnumerable() )
という書き方に落ち着きました

438:デフォルトの名無しさん (ワッチョイ 4679-U4yn)
23/05/07 11:24:15.43 4ZIcGn3M0.net
終わるまでにめっちゃメモリ使って死ぬ感じある

439:デフォルトの名無しさん (ワッチョイ 1279-y4C+)
23/05/07 14:06:12.41 O0op5Uvp0.net
Defenderやらが邪魔するのはそうなんだろうけど
C/C++でACLや属性変更でリトライなんてしてた覚えないからC#のDisposeでファイルがちゃんとクローズできてないだけな気もする

440:デフォルトの名無しさん (ササクッテロリ Spc7-Z7Ea)
23/05/08 10:05:23.91 3mw2N0vvp.net
Disposeでクローズなんかしないだろ?
つかそんな実装頼みの使い方してたら痛い目に遭うぞ

441:デフォルトの名無しさん (ワッチョイ b7e5-tcUg)
23/05/08 13:04:12.03 h5IiweHd0.net
using制御しかしてないわ

442:デフォルトの名無しさん (スプッッ Sd52-8wHc)
23/05/08 13:11:33.93 x7lJRSufd.net
>>439-441
>>429はWidows Defenderのせいにして終わってるから
納得できる形で解決してみせてよ

443:デフォルトの名無しさん (ササクッテロリ Spc7-Z7Ea)
23/05/08 13:27:23.81 Rh3bbmbap.net
>>442
非同期なら当たり前に発生するなw

444:デフォルトの名無しさん (ラクッペペ MMde-yLVR)
23/05/08 13:29:30.54 QcInbmeDM.net
ファイルを閉じるから横取りされるんだぞ

445:デフォルトの名無しさん (スッップ Sd32-KeI6)
23/05/08 13:38:05.76 TxJAG0JMd.net
今回みたいなケースでファイルクローズ直後にファイルいじろうとすると使用中の様な警告出ることあるから
基本的にリトライするようなコード入れてるけどそんなことないのかね

446:デフォルトの名無しさん (ササクッテロリ Spc7-Z7Ea)
23/05/08 13:53:31.24 xSxPowKip.net
OS側の処理も非同期なんだと予想

447:デフォルトの名無しさん (スプッッ Sd52-8wHc)
23/05/08 15:24:20.83 NYRttg47d.net
いちいちリトライなんか仕込んてたらハゲそう
イラネーヨって言ってくれ

448:デフォルトの名無しさん (ワッチョイ c2bd-O5MS)
23/05/08 23:17:00.86 n3psyKuA0.net
>>440
IDisposableを継承しているのにクローズしなかったら使い物にならないだろ。

例えばFileStreamクラスのDispose()には、
Stream によって使用されているすべてのリソースを解放します。
とあるので、当然Closeもする。

449:デフォルトの名無しさん (ワッチョイ c2bd-O5MS)
23/05/08 23:18:14.32 n3psyKuA0.net
あ、継承じゃなくて実装だ。

450:デフォルトの名無しさん (ワッチョイ cb7c-DUGT)
23/05/09 04:40:15.34 fisd8t0i0.net
Disposeの処理の中でClose普通に呼んでたはず
ソース見りゃ分かるやろ

451:448 (ワッチョイ c2bd-O5MS)
23/05/09 04:54:39.15 b+hc+8Ui0.net
>>450
>>440が「そんな実装頼みの」って言ったので、あえてソースを見ずにドキュメントの内容で答えた。

452:デフォルトの名無しさん (アウグロ MMb3-G648)
23/05/09 07:21:46.18 2h4Q3q9eM.net
asyncawaitに対応してない何かがあるのかもな

453:デフォルトの名無しさん
23/05/09 08:53:33.61 F+qDabIr0.net
自作じゃない.NET純正で、Taskを返す〇〇Asyncメソッドがasyncawait対応してないは無いでしょ

454:デフォルトの名無しさん
23/05/09 10:25:27.81 wTiHbcrZp.net
だから、OSだって非同期にファイル処理してるんだろ?
で、完了通知なんて受けて無いw

455:デフォルトの名無しさん
23/05/09 11:26:49.94 TDrxScizd.net
C#のファイル操作が遅いからファイルコピーと属性変更との間にWindowsDefebderが割り込んでスキャンされて妨害されるのかもしれない
知らんけど

456:デフォルトの名無しさん
23/05/09 11:28:32.40 LwvaBWbia.net
>>455
win32apiを使ってるのでさすがにそれなはい
削除してもすぐにファイルが消えないのはあるあるだからリトライするのが定番

457:デフォルトの名無しさん
23/05/09 11:46:04.35 vAJE1vUCr.net
とはいえ
頻度は10回に1回あるかないか程度
Windows Defender 無効にしたら例外が発生しなく
なら妥当かもしれない

458:デフォルトの名無しさん
23/05/09 16:21:49.31 GXFqLAgP0.net
>>429
これ閉じる前にFileStream.SafeHandle使ってSetLastWriteTime(SafeFileHandle, DateTime)のオーバーロード使うのはどうなの?

459:デフォルトの名無しさん
23/05/09 20:43:33.82 ZCATFg/N0.net
質問なんですが
formのbutton1.textをテキストボックスから取得したいのですが、
テキストが長い場合、ボタンのテキストが改行されてしまいます
表示が後半隠れてしまうのは別に構わないのですが、
改行がおこるとテキストがボタンの上側に移動してしまいます
button1.textを改行しないようにできないでしょうか?

460:デフォルトの名無しさん
23/05/09 22:36:11.30 ZhePtJGs0.net
ボタンのPaintイベントで自前描画すればOK

461:デフォルトの名無しさん (ワッチョイ 1279-y4C+)
23/05/09 22:41:53.48 U2HEifZi0.net
button1.AutoEllipsis = true;

462:デフォルトの名無しさん (ブーイモ MMdb-mskx)
23/05/10 10:41:28.62 B1N+exWkM.net
どなたか教えてくださいC#です
public class Person
{
public Name Name { get; set; }
}
public class Name
{
public string NameText { get; set; }
}
こういうクラスがあったとして、

var p = new Person
{
Name = {},
};
Console.WriteLine(p.Name);
これはnullが出力されるんですが、構文解析時のName={}の右辺はどういう評価をされてるんでしょうか?
また
var p = new Person
{
Name = {NameText=""},
};
これもコンパイルは通りますが実行時にObject reference not set to an instance of an object.で落ちます
Name = {NameText=""},
の{NameText=""}は構文解析時にどういうモノとして扱われてるんでしょうか?
本来はName= new Name{NamText=...}とするところで、new {クラス名}を書き忘れたらビルドが通っていたのでなんだろうと思った所存です

463:デフォルトの名無しさん (ワッチョイ b74f-hGOv)
23/05/10 11:20:13.56 iQXLAALm0.net
オブジェクト初期化子
1つ目のケースは初期化するプロパティがないので何もしない
2つ目のケースはこれと同じ意味になる
var p = new Person();
p.Name.NameText = "";

URLリンク(ufcpp.net)

464:デフォルトの名無しさん (ワッチョイ 52de-KeI6)
23/05/10 11:21:23.96 tkTpg3dz0.net
>>460
レスありがとう、Paintイベント追加で自力でやるのはけっこう大変そうですね

>>461
ありがとう、...省略はできたけど、文字は上側に寄ったままでした

button1.Padding.Topに4ぐらいいれたら解決しました

465:デフォルトの名無しさん (ブーイモ MMdb-mskx)
23/05/10 11:27:39.61 NYVeTygZM.net
>>463
なるほど!ありがとうございます!
いやーこれはコンパイル時に落としてほしい…

466:デフォルトの名無しさん (ワッチョイ ff2d-vOwS)
23/05/10 11:28:45.20 qs6QvCEc0.net
Formsで独自描画はバッドノウハウに近いと思う 
スケーリング考慮してないのばっかり

467:デフォルトの名無しさん (ワッチョイ b74f-hGOv)
23/05/10 13:49:34.03 iQXLAALm0.net
>>465
AのコンストラクタでNameがnewされてたら問題ないわけだし使い分けでしかないね
nullableを有効化しとけばこのケースだとAのNameがnull許容でもnull非許容でも警告出してくれるよ

468:デフォルトの名無しさん (ワッチョイ c23d-Lyct)
23/05/10 14:23:44.58 6sAnxqBz0.net
C#でASP.NETでHTMLコード書くにはどこいじればいいの?

469:429 (ワッチョイ 9354-ouLR)
23/05/10 17:05:27.60 QPN4FwhI0.net
私にとっての解決後も議論があったようですが、
Windows Defender を無効化 ( Windows Defender の [除外] に、コピー先フォルダを登録する ) してから、1回も発生していません。
for(int i = 0; i < 100; i++){}
での 100回ループテストを何度か行っても発生していないので、自分の中では解決済みになっています。

470:デフォルトの名無しさん (ササクッテロル Spc7-Z7Ea)
23/05/10 18:11:17.94 rAs2Y7NDp.net
ファイル内容変更したからウイルスチェックが走ってんじゃん
ってオチかよw

471:デフォルトの名無しさん (ワッチョイ 1610-tcUg)
23/05/10 18:54:24.51 6aE3wdSe0.net
オチかよも何も、最初からそういう話だったのに
DisposeがちゃんとやってないんだろとかOSの遅延がうんたらとか頭でっかちが騒いでるだけやで

472:デフォルトの名無しさん (ワッチョイ 4679-jUDw)
23/05/10 18:59:46.60 KHK6MiQv0.net
asyncawaitってスレッドセーフのメソッドじゃなくても使っていんだっけ?

473:デフォルトの名無しさん (アウアウウー Sac3-16n5)
23/05/10 19:16:24.65 PlKEk/pSa.net
>>456で結論書いてやったのにまだやってたのか

474:デフォルトの名無しさん (ササクッテロル Spc7-Z7Ea)
23/05/10 19:57:37.80 n33wvc2tp.net
>>473
全く結論になって無いよあれ
単なる対症療法なだけだろw

475:デフォルトの名無しさん (アウアウウー Sac3-16n5)
23/05/10 20:01:05.91 PlKEk/pSa.net
その対症療法が唯一の治療法なんだがまだそれもわからないのかよw

476:デフォルトの名無しさん (アウアウウー Sac3-16n5)
23/05/10 20:03:31.18 PlKEk/pSa.net
リソースを占有できるのがそのスレッドだけではない場合
つまり今回と同様の場合だな
原因がセキュリティソフトかバックアップソフトか何かは全く関係ない
時間を置いて何度かリトライしてそれでもだめなら例外を投げる
基本中の基本だぞ?

477:429 (ワッチョイ 9354-ouLR)
23/05/10 20:19:03.60 QPN4FwhI0.net
議論再燃させて申しわけありません。
消えます。

478:デフォルトの名無しさん (ワッチョイ 4679-jUDw)
23/05/10 21:49:28.98 KHK6MiQv0.net
みんな参加できるし
いい内容だと思う

479:デフォルトの名無しさん (ワッチョイ 1610-tcUg)
23/05/10 22:26:34.42 6aE3wdSe0.net
>>1
> 議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。

480:デフォルトの名無しさん (ワッチョイ ff2d-vOwS)
23/05/10 23:13:27.93 qs6QvCEc0.net
>>475,476
今回の場合(>>429)は、ファイルを一旦解放するのが問題なんだから、>>458の方法で上手く行くでしょ

481:デフォルトの名無しさん (ワッチョイ ff2d-vOwS)
23/05/10 23:27:09.51 qs6QvCEc0.net
ファイル削除のことならリトライは必要だけど、今回のと関係ないね

482:デフォルトの名無しさん (ワッチョイ 335f-Z7Ea)
23/05/10 23:39:29.79 +U2L2taI0.net
てか、ファイル操作するのに、排他しなきゃだよな?
一度手放したら他のプロセスに横取りされちゃうだろ

483:デフォルトの名無しさん (ワッチョイ 335f-LLT0)
23/05/10 23:54:07.74 of34847N0.net
もう一度再現させた上でロックしているプロセスが本当にWindows Defenderだったのか確認しない限り不毛な議論では?

484:デフォルトの名無しさん (ワッチョイ 4679-U4yn)
23/05/11 02:59:54.64 YOUU3VFS0.net
っていうかどうしたいんだろ
コピー後のファイルを
誰かがつかんだままにすれば
似たようなエラーはいつでも
起こせるし起きちゃうじゃん

それがこのアプリにとってレアケースでないなら他アプリがつかんだママのときの動作を仕様で定義するべきだと思う

485:デフォルトの名無しさん (ワッチョイ ff2d-vOwS)
23/05/11 03:21:28.69 rPH4vL1P0.net
>>484
>>429のソースを見るに、ファイルの最終書き込み時刻を保ったままコピーしたいんでしょうよ

コピー先のファイル作成とタイムスタンプ操作を1回の排他モードオープン~クローズの間にまとめてやれば
他のプロセスに割り込まれようが無いし、その後につかまれてもやること終わってるから問題無い

486:デフォルトの名無しさん
23/05/11 08:30:37.64 deoSAjL+a.net
>>481
今回のセキュリティーソフトわ切るやり方こそ対症療法だろw

487:デフォルトの名無しさん
23/05/11 10:12:30.60 NldGOlLod.net
>>458
これ知らなかったんだけど、実際に存在する?
コード書いてもでてこないんだけど
ちなみにGetLastWriteTime はあるようだ

488:デフォルトの名無しさん
23/05/11 10:37:35.73 rPH4vL1P0.net
>>487
.NET7で追加された
.NET6以前はP/InvokeでWin32API使えば同等のことは出来るけど時刻の扱いが面倒臭いね

489:デフォルトの名無しさん
23/05/11 10:44:53.88 ihHVpLbGp.net
そもそもファイルのタイムスタンプを合わせる仕様が本当に必要なのか小一時間

490:デフォルトの名無しさん
23/05/11 10:54:15.13 NldGOlLod.net
>>488
thx
>>489
他人の仕様にケチ付けちゃだめ

491:デフォルトの名無しさん
23/05/11 11:24:35.10 ihHVpLbGp.net
タイムスタンプなんて危ういものを何に使おうってんだ?
生成時刻が重要ならファイル名に組み合わせしまうとか
他の方法の方がよっぽど確実だぞ

492:デフォルトの名無しさん
23/05/11 12:16:13.48 RpUziWGf0.net
DateTime.ToFileTimeみたいな関数あったはずだからWin32利用したら案外簡単

493:デフォルトの名無しさん
23/05/11 12:31:50.44 NldGOlLod.net
コードも提供せずにこういうことやりたいと言ってるわけでもないし、
今回問題となっている部分についてだけで話すればいいんじゃないの
質問者が他のやり方ないですかみたいな質問ならまだしも
回答者が勝手に仕様かえて変な回答しないほうがいいと思うなぁ

494:デフォルトの名無しさん
23/05/11 12:45:05.52 OsVl9AaP0.net
俺は基本更新時刻の新しい順で並べるからファイルやフォルダのコピーごときでファイルスタンプは変わって欲しくないな

495:デフォルトの名無しさん
23/05/11 12:56:38.62 CPAv1ED5M.net
コピー元のタイムスタンプを維持したいユースケースなんていくらでもあると思うんだけどな
cp -pのように最初からそういうオプションが用意されてないのが不思議なくらい

496:デフォルトの名無しさん
23/05/11 13:00:19.05 8tWYoMH60.net
>>491
お前の考えなど知らん
コピー先のファイル名はそのままである必要があるんだよ

497:デフォルトの名無しさん
23/05/11 13:03:05.25 azf3P6SKM.net
あれ、File.Copy()でコピーすればファイルの更新時刻とかはコピー元ファイルのままだと思ってたんだけど、違うの?
わざわざLastWriteTimeを転記する処理なんか不要じゃないかな

498:デフォルトの名無しさん
23/05/11 13:20:41.79 YOUU3VFS0.net
結局なんで死んでんだっけ?
スレッドセーフじゃないメソッド呼んでたから?

499:デフォルトの名無しさん
23/05/11 13:22:58.00 Kl8HQqiW0.net
FileStreamを開放したところでDefenderに掴まれてるから

500:デフォルトの名無しさん
23/05/11 13:26:07.70 IsUfqIsW0.net
>>470
ノートン先生が毎回俺がコンパイルしたexe没収しやがるのな

501:デフォルトの名無しさん
23/05/11 13:28:13.33 /kketneYM.net
gdriveの横槍でvsのビルド失敗しやがるからな

502:デフォルトの名無しさん
23/05/11 14:04:15.95 /lX/zRJGp.net
>>496
だからファイル作成時刻が重要ならタイムスタンプに頼る様な仕様は事故のもとだから仕様から考え直さないと後で泣くのはおまえさんとこだって話だw

503:デフォルトの名無しさん
23/05/11 14:06:17.73 IsUfqIsW0.net
ファイルの作成時刻が大事で、ファイル名も変えたくないなら
実データの内に時刻もっておいて逐次参照するしかないか

504:デフォルトの名無しさん
23/05/11 14:15:18.91 5HC1/c5B0.net
タイムスタンプをバージョン番号にするのが一時流行ったな

505:デフォルトの名無しさん
23/05/11 14:18:46.36 NldGOlLod.net
>>497
コード提供部分にはない仕様でコピー中の進捗管理もしたいからブロックコピーみたいな事したいんじゃないのと思ってるけどね

506:デフォルトの名無しさん
23/05/11 16:32:36.54 Kl8HQqiW0.net
ファイルコピーツールでタイムスタンプ類もそのままって普通のことでは?

507:デフォルトの名無しさん
23/05/11 16:59:27.45 OsVl9AaP0.net
そうだよ
その当然のことがC#だとなぜか上手くいかないねってマヌケな話を続けてるのよ

508:デフォルトの名無しさん (ワッチョイ b7e5-tcUg)
23/05/11 17:30:13.71 Kl8HQqiW0.net
違うよ、Defenderに割り込まれて失敗してただけなのに、C#が悪いとか実装だよりがうんたらとか明後日の話してるだけ
あとなぜかタイムスタンプ同期を敵視するおかしな輩

509:デフォルトの名無しさん (ササクッテロル Spc7-Z7Ea)
23/05/11 17:43:23.58 rQf2HOBdp.net
タイムスタンプって言えば、マイナンバーの他人データ事件

510:デフォルトの名無しさん (アウアウエー Saaa-tcUg)
23/05/11 20:37:45.66 WmrOv4hCa.net
asp.net 7.0/razorでTest.razorファイルを作って中身を
@page "/test/{text}"
<h1>Hello, world!</h1>
とすると、URLリンク(localhost)は期待通りTest.razorにアクセスするんだけど
URLリンク(localhost) にアクセスしようとするとエラーページ(app.razorの<NotFound>)に飛んでしまいます
エラーページに飛ばずにTest.razorに導くにはどうしたらいいのでし

511:デフォルトの名無しさん (アウアウエー Saaa-tcUg)
23/05/11 20:50:19.55 WmrOv4hCa.net
自決。重複指定できるんだね
@page "/test/{text}"
@page "/test/"

512:デフォルトの名無しさん (ワッチョイ 4679-jUDw)
23/05/12 05:08:25.71 wvdezX0Z0.net
ループしつつ例外来たらリトライぐらいしかないんだな
ファイルアクセスって

513:デフォルトの名無しさん (ワッチョイ 1610-tcUg)
23/05/12 06:06:11.81 knxa7qRm0.net
絶対に他のプロセスがアクセスすることが無いファイルでもなきゃそうだろうね

514:デフォルトの名無しさん
23/05/12 10:06:17.76 6p7rgQrNp.net
一度握ったら離さない様にすれば良いだけ
まあ、握るまで待つ事はあるだろうけどさ

515:デフォルトの名無しさん
23/05/12 10:09:45.59 6p7rgQrNp.net
ファイルロックくらいしろって事でFA

516:デフォルトの名無しさん (ワッチョイ 5eda-xrk/)
23/05/12 20:52:48.39 QyvjIFa10.net
タイムリーな話題

Microsoft Defender がファイルコピー速度を大幅に低下させるというテスト結果
URLリンク(security.srad.jp)

517:デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
23/05/13 11:11:48.89 tW4K4KGI0.net
当たり前の話じゃないの?
アンチウイルスって実行ファイルの中身チェックするのが仕事なんだし

518:デフォルトの名無しさん (ワッチョイ cfbb-ScEU)
23/05/13 12:02:01.86 7xfulSMu0.net
>>517
コピーされるファイルも実行ファイルの中皆の?

519:デフォルトの名無しさん (ワッチョイ 137c-Zn+e)
23/05/13 12:58:27.54 WLwqntQA0.net
別にチェックするのは実行ファイルだけじゃ無い
基本的には全部

拡張子変えて実際は実行ファイルって場合も有る

特殊な方法で画像や音声ファイルに別ファイルを入れる事も出来る
普通に開いても画像や音が流れるけどやけにファイルサイズ大きい

520:デフォルトの名無しさん (ワッチョイ 03e5-Phjm)
23/05/13 14:46:09.37 mZrGEceU0.net
除外指定されてないもの全部検査対象だよな

521:デフォルトの名無しさん (ワッチョイ ffde-ZkZz)
23/05/13 15:08:50.76 xlpBDV6S0.net
んでウィルスでもないものも消していってくれるし

522:427 (ワッチョイ bfbd-Np+b)
23/05/14 08:52:03.33 kc3awa8x0.net
>>428
非同期I/Oについて以前別件で調べていたページをブラウザで開いたまま放置してて、
そこを読んだら、
・FileStreamは~Async()メソッドを呼ぶだけだと、同期メソッドをTask.Runしているイメージと同じ
・非同期IOにするには、FileStreamのコンストラクターでuseAsyncをtrueにする
とあった。

523:デフォルトの名無しさん (ワッチョイ 8f79-PTT8)
23/05/14 11:04:56.63 8prSF4JO0.net
そもそもIOって物理的に非同期にできんのかな?
って疑問はある
ファイル名(パス)を変更するとして
それが既存と被らないことをチェックするためには
HDD全部が排他対象になっちゃうと思うんだけど・・・?

世の中には頭のいい人がいるからな
Windowsもうまいことなってるのかもしれん

524:デフォルトの名無しさん (ワッチョイ 137c-Zn+e)
23/05/14 11:24:11.66 C7+mn9jn0.net
アホすぎる
基本情報技術者試験からやり直せ

525:デフォルトの名無しさん (アウグロ MMdf-PTT8)
23/05/14 11:25:33.88 YHEEjM6QM.net
>>524
マジで?載ってる?

526:デフォルトの名無しさん (ドコグロ MMe7-GJof)
23/05/14 11:30:50.36 cZZGCVt9M.net
FileStreamの~Async()メソッドの話をしているのに
ファイル名を変更する話をし始める人

527:デフォルトの名無しさん (ワッチョイ 8f79-LM5x)
23/05/14 13:29:51.43 8prSF4JO0.net
>>526
あ、そっか
やっぱりそこは
どうにもならねえんだよな

528:デフォルトの名無しさん (ワッチョイ 8f79-LM5x)
23/05/14 13:35:41.81 8prSF4JO0.net
まずIOいじるときは
プロセスセーフである必要があって
それをサポートするAPIはないと
次にスレッドセーフである必要も
あってそこはAPIがあるのと
プロセスセーフの仕組みに載せてしまってもよい
みたいな?

529:デフォルトの名無しさん (スップ Sd1f-ZkZz)
23/05/14 15:32:18.00 cBUUr2ypd.net
別に考えるのは悪いことじゃないけどここで書くような事か?
チラシにでもかけよ

530:デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
23/05/14 16:46:00.64 AbKJzFQD0.net
>>523
出来るも何もむしろ必須レベル
正常なディスクであればファイルIOは即終わるが壊れかけとかだとめちゃくちゃ時間かかる事もある
要するに完了時間は不定だから多数に公開しようとしたらファイルIOはWin32のオーバーラップを利用した非同期化は必須
C#であれば手軽に使えるasync版もあったはずだが

531:デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
23/05/14 18:25:49.02 8prSF4JO0.net
>>530
なんかごちゃごちゃうっせーけど
OSとAPIに任せて勝手にやってくれるわけではないよね?

532:デフォルトの名無しさん (ワッチョイ 1310-TD+p)
23/05/14 19:42:00.49 LqBBoBzl0.net
やってくれてなかったらOSもプロセスもディスクアクセスのたびに死んでるわ

533:デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
23/05/14 21:25:59.89 8prSF4JO0.net
>>532
だから死んでるじゃん
エラー出して
ハンドリングはしてないよね?

534:デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
23/05/14 21:34:27.06 pb1Dbmn7M.net
スレ伸びてるなと思ったら荒れてたのか
スルーしたほうがいいのかな?答えたほうがいいのかな?

535:デフォルトの名無しさん (ワッチョイ 1310-TD+p)
23/05/14 23:37:37.55 LqBBoBzl0.net
ハンドリングしてるからエラー出せるんだろうに

536:デフォルトの名無しさん (ワッチョイ a32d-QNcS)
23/05/14 23:52:11.86 TlAvKTIL0.net
デバイスとファイルシステムの区別が付いてないし基本的な知識が欠けてる
相手にするだけ無駄かと
スレチだし

537:デフォルトの名無しさん (ワッチョイ ff2f-o00x)
23/05/15 01:10:46.89 LL0MvYiW0.net
まあふらっとだしC#にかかわる範囲で答えてやれば良いとは思うが

そもそも>>523は非同期IOってどんなもんだと思ってるんだ

538:デフォルトの名無しさん (ワッチョイ 8f79-PTT8)
23/05/15 03:01:17.91 MbkFonvu0.net
>>535
プロセスセーフにはならないってことだよね

539:デフォルトの名無しさん (ワッチョイ 8f79-PTT8)
23/05/15 03:14:56.69 MbkFonvu0.net
streamreaderwriterで死ぬってことはOSの機能じゃなくて
あくまでアプリ側がそう組んだからそう動くってことでおk?

540:デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
23/05/15 10:50:41.17 pV2Ms8mh0.net
>>531
勝手にやってくれない?
お前はDeviceIOControlでも利用して一々マニュアルでハードウェア制御してるのかよ
普通に全部勝手にやってくれるよ

541:デフォルトの名無しさん (ワッチョイ ff80-wac6)
23/05/15 15:46:46.09 rEJ0AvWA0.net
ReactiveExtensionsって現場では結構使われてるんですかね?

542:デフォルトの名無しさん (ワッチョイ bfbd-Np+b)
23/05/15 23:44:43.69 7dwhbD/A0.net
>>530
Win32APIで最近非同期のコードを書いているけど、
ReadFile()/WriteFile()が途中までで返ってくることも踏まえてループ処理にするとして、

1) ReadFile()/WriteFile()で同期(OVERLAPPED構造体なし)
→同期
2) ReadFile()/WriteFile()で非同期(OVERLAPPED構造体あり)、WaitFor~、GetOverlappedResult()
→スレッドを明示的に手放す?
3) 1)をCreateThreadpoolWork()
→スレッドプールのスレッド内で同期処理
4) 2)をCreateThreadpoolWork()
→スレッドプールのスレッドで動作するが、途中でスレッドを明示的に手放す?
IOCPならその間に他のスレッドが動きそうだが、スレッドプールAPIでもそうなるか知らない。
5) CreateThreadpoolIo()、ReadFile()/WriteFile()で非同期(OVERLAPPED構造体あり)、
IoCompletionCallbackで続きのReadFile()/WriteFile()を行う
→これが一番効率的だと思う。

最近5)で書いてる。めんどくさい。うまく動かなかった時に調査のために同期処理にしてみることができない。
C#のasync/awaitは神。
.NET Framework/.NETのライブラリがどこまでやっているのかまだソースをほとんど調べていない。

543:デフォルトの名無しさん
23/05/16 15:21:40.99 x5Idn1prM.net
>>542
ReadFileEx()/WriteFileEx()に対して何かアドバンテージあるの?

544:542
23/05/16 23:17:52.90 ArIN9ivM0.net
>>543
ReadFileEx()/WriteFileEx()のlpCompletionRoutineを使ったことはないけど、
LPOVERLAPPED_COMPLETION_ROUTINEのページに、
システムが完了ルーチンを呼び出すたびに、アプリケーションのスタックの一部が使用されます。 完了ルーチンが追加の非同期 I/O とアラート可能な待機を行うと、スタックが大きくなる可能性があります。
とあるから、完了ルーチンでさらに非同期I/Oを繰り返すと、スタックがあふれる恐れがあるんじゃないかなあ?

545:デフォルトの名無しさん
23/05/17 00:05:39.06 UJN2K8xqM.net
>>544
なるほど
.NETのFileStreamもReadFile()やWriteFile()を使ってるのはそれが理由かも

546:デフォルトの名無しさん (ワッチョイ 835f-keH4)
23/05/17 02:11:11.09 BW67Dsb50.net
ファイルIO飽きたぁ

547:デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
23/05/17 09:38:13.97 J+vPZ/2W0.net
>>545
いや完了ルーチン内で更に完了ルーチン呼び出しするなんて実装メリット無さ過ぎて普通しないからそれが理由ではない
単純に最も効率的な非同期IOはスレッドプールを利用した完了ポートだからだよ
C#のasync awaitも完了ポートベース、nodejsもWindows版では完了ポートベース

548:デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
23/05/17 09:41:37.77 x4D/IoKq0.net
>>546
どうした?
実はこれまで組んだファイル周りの実装がまずいことに気が付いたのか?

プロセスセーフまで保証しろって言われたら正直俺もやってねえ
っていうかもっかいやってくれればええやんってポリシー

だったけどこのスレ見たやつが指摘してきた(笑)
面倒くせえw

549:デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
23/05/17 09:47:10.85 J+vPZ/2W0.net
プロセスセーフってなんだ?
一つのファイルを複数プロセスで扱う場合においても別に難しい事はないけどな
排他モード指定したら良いだけなんだから

550:デフォルトの名無しさん (ササクッテロ Sp87-eWQc)
23/05/17 09:52:57.56 BC9U1gYmp.net
>>549
一度に完了しないでチマチマ複数回アクセスする類いだろ

551:デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
23/05/17 09:56:54.00 x4D/IoKq0.net
>>549
いや、他のやつにアクセスされてると死ぬねん
その時いつまで待てばええのか仕様がないねん
タイムアウト付けるとじゃあその時できんかった処理をいつやるのか仕様を考えろって言われて辛いねん
さらにそれが終わる前に他の処理が進んでしまってもまずいときあんねん
こんなレアケース相手にしとうなかったねん

552:デフォルトの名無しさん (ワッチョイ cfa7-55dJ)
23/05/17 10:04:34.84 J+vPZ/2W0.net
>>551
それファイルIOの問題ではないな
非同期プログラミング全般の問題

553:デフォルトの名無しさん (ササクッテロ Sp87-eWQc)
23/05/17 10:04:36.01 BC9U1gYmp.net
まあ、昨今のマイナンバー絡みの誤配信あるし
つまらないレアケースを突いて来る奴増えたよな

554:デフォルトの名無しさん (ワッチョイ 8f79-cPXU)
23/05/17 10:07:50.36 x4D/IoKq0.net
いい手を考えた

それってこの間作ったやつも
同じですよね?
解決しているのであれば
対策方法を教えてほしいです

って比較的暇そうな
プロジェクトも誘爆させてみる

555:デフォルトの名無しさん (ワッチョイ 13e5-zI38)
23/05/17 10:20:18.08 r4L2F7830.net
元々はファイルクローズ直後に約10%程度日付の書き換えに失敗するという質問で
原因はDefenderと結論付けて解決している
対策はリトライ、検索除外、ファイルを閉じる前に日付を書き換えるなどが上がっている

なお非同期書き込みは関係ない

556:デフォルトの名無しさん (ワッチョイ ff2f-3DBk)
23/05/17 10:26:42.10 GG5VHMy50.net
>>551
レアケースでもなんでもなくて、当然設計段階で考慮しとくべき話
コーディング以前の問題

>>553
レアケースでも、それが発生する可能性がある以上、発生したらどうするか考えとかないとダメ
エラーで落とすとかどうもしないとかも含めてな

つかマイナンバーのやつは、レアケースというほどレアな条件が重なってるとは思えん
たんなる設計不良とテスト不足だろ

557:デフォルトの名無しさん (ササクッテロ Sp87-eWQc)
23/05/17 10:27:49.23 BC9U1gYmp.net
>>555
Defenderが変化のあったファイルを即握るから一度手放したら持って行かれるってのが原因だよ?
この場合Defenderは一例に過ぎない、他に同じ様なプロセスが走ってたら同じ事

558:デフォルトの名無しさん (ラクッペペ MM7f-zI38)
23/05/17 10:33:05.14 ayW9U2wIM.net
>>557
そう書いてるけど何か?
非同期書き込み関係ある?

559:デフォルトの名無しさん (スップ Sd1f-ZkZz)
23/05/17 10:38:32.93 JdW1FdHOd.net
>つまらないレアケースを突いて来る奴増えたよな
つまるつまらない関係なく安全なシステム構築が原則じゃねーの
こんなこと言う奴が実装してると思うと怖いな

560:デフォルトの名無しさん (ササクッテロ Sp87-eWQc)
23/05/17 10:39:10.69 vxhNqJEJp.net
>>558
だから原因はDefenderじゃ無いだろw
対策でDefender切るなw

561:デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
23/05/17 12:01:27.36 F24a8wLtM.net
主張がおかしい
少なくとも例外=死ではないわな

いくら他言語知っててwin32api知ってても例外回りというかそこら辺の理解が出来ずに対応が出来ないから初心者なんだろう
ご愁傷様

562:デフォルトの名無しさん (アウグロ MMdf-PTT8)
23/05/17 12:26:38.86 gUH2EQh+M.net
でもこれって排他で掴んじゃうテキストエディタでファイル開いたまま放置されたとかなったら回避不能だよね
新しいファイルを作っちゃうって手も残ってるけど
正しいソフトウェアのあるべき姿って言われても困るわけだが?

まあ、新しいファイルを作っちゃっていいなら作っちゃうが・・・?
読んでくるとき常に最新読むってすれば簡単だし

563:デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
23/05/17 12:39:44.91 F24a8wLtM.net
普通はメッセージを出すだろ?アプリ作ったことがないのか?

564:デフォルトの名無しさん (アウグロ MMdf-PTT8)
23/05/17 12:48:19.60 gUH2EQh+M.net
>>563
まあ、ログにも通知にも残すけど
定期処理とかだと
夜中中出しっぱだったので一切他の処理やらんかったぜもない話で

565:デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
23/05/17 12:55:33.17 F24a8wLtM.net
責務以外のことまで考慮する必要はない

書き込みしようとしたらHDDが容量不足だったは普通はそこまで考慮したソフトは書かない
一般的なリトライの範囲かせいぜいメッセージ出して人間が対応する
録画ソフトなどで事前に想定された範囲内で必要となるなら用意する

一般的なライブラリの範疇の話じゃない難癖レベル

566:デフォルトの名無しさん (ワッチョイ 03e5-Phjm)
23/05/17 12:58:10.45 HpY9MMf50.net
排他で掴んじゃうエディタで開いたままにする関係者が悪いのであってやるなというだけの話
人が排他で開いたままにしちゃうかも、まで考慮することじゃない

567:デフォルトの名無しさん (ワッチョイ ff79-Phjm)
23/05/17 13:09:21.57 0e0u0fXr0.net
オートリトライでFDDを延々とカッコンカッコン鳴らしてやるぜ

568:デフォルトの名無しさん
23/05/17 13:22:55.46 c+t3TSTMp.net
>>567
FDDだとファイル一杯になった処理は必ず必要だよな
あんな容量の小さなメディアだしな

569:デフォルトの名無しさん
23/05/17 14:21:29.85 JdW1FdHOd.net
>>562
当初の質問の流れだと①ファイル出力②タイムスタンプ変更を連続してるわけだから言ってる話(①のファイルをエディタなどの人為的操作でつかまれる)はおかしくない?
少なくともやりたかったことがどこかにあるファイルを別の場所にコピーする、ファイルのタイムスタンプは同じにするなら
①いったん別名でファイル出力
②タイムスタンプ変更 ※リトライ含む
③正しいファイル名に変更 ※リトライ含む
ぐらいがいいんじゃないかと思うけどね③まで正常終了したらOK

570:デフォルトの名無しさん
23/05/17 14:23:16.58 /6qavqYtp.net
>>569
連続してる様に見えるけど、CPUから見たら隙間だらけだからなぁw

571:デフォルトの名無しさん
23/05/17 21:24:44.21 WYa1maRz0.net
FDDってプレーンテキストくらいしか保存できないよね?

572:デフォルトの名無しさん
23/05/17 21:52:19.55 6s1sKbMg0.net
2HDのFDにDOSと一太郎とATOKは入ったぞ
ちなみに媒体をFD、ドライブ装置をFDDというのだぞ

573:デフォルトの名無しさん
23/05/17 22:00:37.91 nVMR4RZGd.net
知識としてしか知らないと>>571みたいな認識になってしまうのか

574:デフォルトの名無しさん
23/05/17 22:55:44.00 lFYANmkBM.net
Aドライブでアプリケーションソフト起動してBドライブはFEPの辞書ファイル入れて使うのが一般的だった気がする

575:デフォルトの名無しさん
23/05/18 00:09:06.95 PrSBwdky0.net
ハードディスクがCドライブから始まってるのはその名残りだよな

576:デフォルトの名無しさん
23/05/18 00:33:26.61 M0TxVFb20.net
1KB程度のデータしかない住民票を印刷するのにバカでかいPDFなんぞをワザワザこしらえてご丁寧に暗号化復号化レンダリングイメージ化などいらんことしてるから日本はダメなんだよ

577:デフォルトの名無しさん
23/05/18 00:49:20.46 +SWCVuhH0.net
>>576
そりゃコンビニのコピー機で発行できるようにそうしてるんだろ
もしかして、コピー機の方を改修したほうが良いと思ってるのかい?
どんだけ費用かけるつもりだよ

578:デフォルトの名無しさん
23/05/18 10:06:50.15 Osufe4Tap.net
画像PDFは改変対策だろ?
まあ、テキストPDFでもプロテクト掛けられるけどな

579:デフォルトの名無しさん
23/05/18 10:10:35.46 4KlPbS1ta.net
>>571
今だとその程度の使いみちしかないかもな
FDDしか無かった頃はあらゆるデータが貧弱だったが

580:デフォルトの名無しさん
23/05/18 10:11:37.45 ufQPk5+j0.net
名前などの文字部分は当然テキストよ
だけど印刷内容は文字だけじゃないだろ
役所で公的文書取ったことないんか?

581:デフォルトの名無しさん
23/05/18 10:20:46.30 4KlPbS1ta.net
>>580
枠線とか印刷とか要らんから電子署名したデータだけ寄越せと言ってるんだと思うぞ
そんなことしたら年寄りは生きていけなくなるがな

582:デフォルトの名無しさん
23/05/18 10:29:30.52 Osufe4Tap.net
全部テキストにして
電子署名はQRコードで出せば良いのでは?

583:デフォルトの名無しさん
23/05/18 11:39:25.32 ufQPk5+j0.net
>>581
で、それでどうやって今の社会システムに対して公文書行使するんだ?

584:デフォルトの名無しさん (スッップ Sd1f-ie1o)
23/05/18 13:00:51.89 gc1pBp/rd.net
QRコードはandroidTVとかのアカウント認証で使われてるね
読み取るとurlにデコードされてwebブラウザで認証するやつ
スマホやPCがある事前提

585:デフォルトの名無しさん (アウアウウー Sa67-9mXs)
23/05/18 13:18:31.14 Vg51lua1a.net
>>583
できないからダメだって話だろw
効率的に電子決済するにはしがらみが多すぎるんだよ

586:デフォルトの名無しさん
23/05/18 18:54:25.63 BvTK4XNb0.net
で、お前らいつまでスレチ続けるんだ?w

587:デフォルトの名無しさん
23/05/18 19:35:19.78 wNPIsLPx0.net
>>586
なんか聞きたいことあんの?

588:デフォルトの名無しさん
23/05/20 18:00:33.33 BNhw9lNy0.net
>>576
記入可能なPDFを端末で持っておいて
テキストだけサーバーから送れば爆速で処理終わるよね

589:デフォルトの名無しさん
23/05/20 18:23:59.40 9iccQhCKM.net
PDFを悪用する人がいても書類を受け取った人が偽造かどうかオンラインとかで確認できるようならそれでもよかったのかもね
コンビニ出力と役所出力の公文書で受け取った側の運用が変わるデメリットを受け入れられたらの話だけど

590:デフォルトの名無しさん
23/05/20 19:08:07.55 NojZsJmh0.net
>>588
リッチクライアントならそうだね。
シンクライアントなら全てサーバーで処理することになる。

591:デフォルトの名無しさん
23/05/20 20:26:37.10 H7GfaBHz0.net
>リッチクライアントならそうだね。
もしかして:ファットクライアント

592:デフォルトの名無しさん
23/05/20 21:50:52.69 o5dUfSpn0.net
>>588
PDFってそんなでかいっけ?
テキストと分離した程度で爆速なんてでないだろ

593:デフォルトの名無しさん (ワッチョイ def2-cUXk)
23/05/21 17:54:47.82 aSGZarsp0.net
>>592
無圧縮の画像があると重いかもね

594:デフォルトの名無しさん (ワッチョイ 677c-bsHd)
23/05/24 06:48:02.27 dEtAkKea0.net
夜中からBUILD眠い


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch