C#, C♯, C#相談室 Part96

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7633-kUv4)
垢版 |
2021/12/20(月) 11:03:25.88ID:sdn/+VfW0
!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が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/11/04(金) 08:33:40.10ID:xdVLdIYL0
Ruby on Rails はShopify, Airbnb など、米国で時価総額1兆円以上の企業も多い

Github は、Go へ移行するとか?
一方、Gitlab はRailsを使い続ける宣言をしている

ガーシーのサロンなどで使っている、Mastodon はRails 6。
作者のドイツのオイゲン・ロホコは、PHP からRailsへ変えた。
Rubyの方が可読性が高いから
522.NET MAUI HighScool (ワッチョイ c101-cPfV)
垢版 |
2022/11/04(金) 09:15:18.29ID:EO0r5qqJ0
>>521
現実見なさい
https://www.similartech.com/compare/asp-net-vs-ruby-on-rails
2022/11/04(金) 11:23:50.82ID:xdVLdIYL0
asp.net は、Windows じゃないの?

今のシステムのほとんどがDocker で、
DockerはLinuxだけの技術だから、プロはLinuxしか使わない。
Windowsを使う香具師は、まずいない

それに、WindowsのOSの本も、ほぼ無い。
Linuxの本ばっかり

Docker Desktop には、Kubernetes も入っているけど、
AWS, Docker, Kubernetes がほとんど

Kubernetesが無ければ、オーケストレーションできないし、
Windowsではシステム構築運用できないでしょ

Windowsは数十年前の技術じゃないの?
それか、プロじゃなくて、単に会社内のシステム運用部門が使っているだけじゃないの?
アマチュア
2022/11/04(金) 11:46:10.41ID:mssOzhy6M
ASP.NET Coreでしょ
525.NET MAUI HighScool (ワッチョイ fb01-cPfV)
垢版 |
2022/11/04(金) 11:50:41.09ID:RgZTpa+F0
スタックオーバーフローはASP.NET
2022/11/04(金) 11:52:55.47ID:NvjwOVKTd
基地外の援護をするつもりはないが>>522のASP.NETのシェアの内訳は大半がClassicかMVCだろう
絶賛急降下中のオワコンルビ糞よりは遥かにマシだが、今後10年でどれだけシェアを落とさずにCore系へ移行できるかが勝負だね
2022/11/04(金) 11:53:28.49ID:ids8wmGma
ZennはRuby on Railsを使って後悔したらしい
2022/11/04(金) 12:02:24.77ID:xdVLdIYL0
例えば、典型的なウェブ開発ベンチャーの求人情報は、

マザーズのSKIYAKI は、Rails, AWSを用いたWebサービス開発。
食べチョクのビビッドガーデンは、Rails, AWS/GCP

Wantedly などに一杯ある
2022/11/04(金) 12:10:44.73ID:XJ3DCJVsM
>>522
信頼と実績のMicrosoftよな
開発者フレンドリーだし最高
2022/11/04(金) 12:11:38.37ID:XJ3DCJVsM
>>523
一人の人が見える景色は意外と狭い
景色ではなく、数字を見よう
2022/11/04(金) 12:14:53.23ID:525E7fetM
よく知られてる大手企業でも内製システムは普通にWindowsだらけ
社内SEがLinux知らんとかVB6あがりとかが多いし、そういった人達は社内対応に追われて新しめの技術に触れるのが難しい
2022/11/04(金) 12:16:47.30ID:xdVLdIYL0
Linux コマンド、bash, シェルスクリプトの本は一杯あるけど、
Windows のコマンド・シェルの本など、ほとんどない

まず、サーバーが管理できないし、OSS のライブラリも無いでしょ。
プロじゃなくて、アマチュアがやってる社内システムだけでしょ

Windowsのシステム構築運用を勉強しても、転職できない。
まず、勉強環境がないので、勉強できないし

バックエンドエンジニアがLinuxじゃなくて、
なぜWindowsを勉強したのですか? と聞かれても、返答に困る

クラウドの汎用的な技術じゃないから、雇われない。
CP932 とかWindowsはパソコン用で、ウェブ系ではないから、
ウェブ開発企業を渡り歩く事はできない

ウェブ系は、Linux, UTF-8 だから
2022/11/04(金) 12:27:07.29ID:Ai9bkhGOa
PowerShellの本を見たことないのは無知なだけだろw
Rubyを使うと時代に取り残されてこんな残念な生き物になってしまうという一例
2022/11/04(金) 12:29:16.72ID:M2e+PduKM
社内ツールならクラシックASP(非.NET)が楽ちん
JavaScriptだけで済む
2022/11/04(金) 12:29:30.99ID:xdVLdIYL0
>>530
数字だけじゃなくて、その内容も見るべき。
例えば、商品の価格だけで決めたら、低品質かも知れない

asp.net は、どういう香具師が使っているのか? とか

YouTube で有名な雑食系エンジニア・KENTA が本を出している
「21世紀最強の職業 Web系エンジニアになろう」

Microsoft 自体がLinux 技術者を採用して、Linux財団に属して開発している。
Docker と同じものを、Windows で作れなかったから、
あきらめて、Linuxを使ってクラウドをやる事にした
2022/11/04(金) 12:31:17.32ID:Ai9bkhGOa
KENTAが勧めてるだけでクソとわかるのはありがたいな
2022/11/04(金) 12:34:45.68ID:7HgZbeW40
>>532
君が部下で、サーバ選定の際にこんな「youtubeの受け売り」的な比較持ってこられたら、君をクビにして反動でWindoesサーバ使いを雇っちゃいそうだわ
情報が古いor間違ってるから、一度自分で調べてみろよ
2022/11/04(金) 12:42:02.85ID:XJ3DCJVsM
>>535
よく知らんけどおれは日々実務で試行錯誤してる膨大な人数のエンジニアを信用するよ
2022/11/04(金) 13:04:09.10ID:xdVLdIYL0
でも、今の一流文化人の著者は、YouTube, Udemy ばっかり

Rails のKENTA, AWS のくろかわこうへい、
Python のキノコード、React のじゃけぇ

国会議員のガーシーも、YouTuber
2022/11/04(金) 13:10:50.31ID:gXxewZVkM
一流文化人というより上っ面だけの人気取りなだけだろ
殆ど何も得るものはないぞ
541デフォルトの名無しさん (ブーイモ MMeb-cv0M)
垢版 |
2022/11/04(金) 13:14:14.74ID:K31HmSYJM
>>534
はい?
2022/11/04(金) 16:44:36.57ID:AmCalnOD0
>>522を見るとPHP>>ASP>>その他って感じか
あとrubyが日本だけってのも面白いですね。やっぱ日本生まれってことで贔屓目になるもんなんでしょうか
色々参考になりました。ウェブの勉強始めるにあたってASPが悪くない選択肢だというのはわかりました
543デフォルトの名無しさん (ワッチョイ 698e-W6w7)
垢版 |
2022/11/04(金) 17:02:37.38ID:hiJJnZje0
突然増えてると思ったらまたRubyキチガイが暴れていたのか
終わりそうなのを感じで焦っているのだろうな

早く現実を見ようや

Rubyは終わりました
2022/11/04(金) 17:07:46.32ID:XJ3DCJVsM
PHPが多いのはたぶんWPをカウントしてるからだろう
2022/11/04(金) 23:20:53.12ID:5bZK7zlyM
普通にサイト作るならasp.netは完全に除外されるだろう
2022/11/04(金) 23:24:53.30ID:XJ3DCJVsM
バックエンドは最初に.NETを検討する
あ、もちろんLinuxコンテナね
2022/11/04(金) 23:35:37.50ID:SVCOtxJrM
Web系で在日外人の採用活動やってるけど最も得意とする言語をJavaScript/TypeScriptとしてる求職者が圧倒的に多く、第2言語としてはGoがそこそこ人気
時々ゴリゴリのエンタープライズ系の経歴でJavaとC#が得意ですというのもいるが落とす
2022/11/04(金) 23:45:05.11ID:sIk1Zc1CM
もったいねぇ〜
2022/11/05(土) 08:43:01.96ID:SeMW4Qkf0
Web系で一番頭数必要なのはフロント側だしそりゃjs出来ない奴は落とされるやろ
2022/11/05(土) 08:50:45.70ID:SeMW4Qkf0
そういえば確かデジタル庁もバックエンドエンジニアとしてC#出来る奴募集してたな
2022/11/05(土) 09:44:58.15ID:yYAK326QM
>>550
あの要件見て失敗するなと思った
asp.net三年以上経験のあるやつってそんなにいない

あの条件はエリートじゃなく仕事が嫌になって複数回転職した人の経歴
そんな要求してくるなんて馬鹿なんじゃないかと
2022/11/05(土) 09:51:02.26ID:EyXCsWHVa
>>551
ゼロということはないし、実際特定の人を起用するための出来レースかもしれん
役所というのは面倒なところで「この人に頼みたい」と思っても勝手に頼めない仕組みになってるんだわ
2022/11/05(土) 10:27:52.01ID:KyTkSmrS0
経験なんか役にたたないんだわ

エリートの3ヶ月 >> 普通の3年

な感じ
2022/11/05(土) 10:49:59.41ID:cwSbm70XM
>>551
いやあれは結構よく考えてあるよ
開発者にはわからんかもしれんが
2022/11/05(土) 10:56:40.37ID:yYAK326QM
自社案件にasp.netを採用するメリットがない
556.NET MAUI HighScool (ワッチョイ 9201-84Ua)
垢版 |
2022/11/05(土) 11:27:09.93ID:h7cdm6j10
ASP.NET MVC作るのクソ簡単だと思ったけどそうじゃないのか?
APIコントローラー作るのクソ楽だった
2022/11/05(土) 11:44:44.93ID:cwSbm70XM
自社案件だったらむしろ最初に検討する
2022/11/05(土) 16:09:33.13ID:6F6CKmgia
System.Memory<T>について教えてください。
MemoryがSpanと相性が良いことや、ArraySegmentよりもパフォーマンスが良い理由はなんとなく分かりました。
ではこの場合、どっちの方が早くなるんでしょうか?

int[] array = new int[8]; // フィールドにint型配列を用意する

void Method(int index) {
///// Memory<int> memory = array.AsMemory(0, 8);
//// [1] array[index]を参照して操作
//// [2] memory.Span[index]から参照して操作
}

どういうケースなのかが重要だとは思うんですが、MemoryのSpanパイプ的な用途以外での使い道がなかなか見えてきません。
今回の場合はフィールドを見ていいので、Slice等を考えなければMemoryインスタンスへの参照を増やしているだけなんでしょうか?
array.AsMemory(0,2)くらいに範囲を絞ると高速になる、なんてことは無いんじゃないかなと思ってます。
ただ、これの検証をするのにも知識やスキルが足りなくて出来ていません。
ヒープを参照する場合はSpanであってもarray[int]の方が早いんでしょうか?
長文になってすみません。どうぞよろしくお願いします。
2022/11/05(土) 16:17:38.86ID:6F6CKmgia
void Methodを非同期にする場合でも、フィールド変数を参照していいなら引数にMemoryを持つ必要性は無いのかな、という疑問から質問しました。
2022/11/05(土) 17:08:45.81ID:Io5vH+250
検証するスキルが無いなら、まだそんな事を気にする段階じゃないということだ
Benchmark.NETの使い方とアセンブリコード読の読み方学習してから出直してきて
2022/11/06(日) 14:08:35.18ID:NU6siC6sa
>>500
このアドバイスが一番原因に近かったわ
単にishitなんとかってプロパティを前任者がfalseにしててイベント自体発生してなかっただけだったよ
ありがとう!
2022/11/06(日) 14:48:17.77ID:4fgqKuo90
それは最初に調べろよ
2022/11/06(日) 15:37:59.04ID:qcWJr3c00
知らなかったんだろ
偉そうにしたいなら最初に教えてあげたら良いのに
2022/11/06(日) 15:48:02.41ID:QKOlU7ORa
>>563
こういうやつがいるから教えるのが素人だけになるんだよ
2022/11/06(日) 16:11:38.61ID:+9Skr9AY0
お手軽マウンティングの1パターンだな。
解決策が見つかってから「それは最初に調べとけよ」「そんなことも知らなかったのかよ」etc.
2022/11/06(日) 16:39:57.78ID:4fgqKuo90
そりゃ素人が教えるスレになるわな
567デフォルトの名無しさん (アウアウウー Sacd-J0Bj)
垢版 |
2022/11/06(日) 19:03:46.24ID:EN445uW1a
>>551
ASP.NETを使っているところは、なぜかC#の経験ばかりチェックするDQNプロジェクトばかり。

ASPのタグの編集経験を問うべきなのにw
2022/11/10(木) 13:11:20.65ID:hu9oTdXa0
.NET7の新標準APIまとめてくれると助かる
2022/11/10(木) 21:28:03.05ID:KkTOa1Su0
飯田失兵の法則
570デフォルトの名無しさん (ワッチョイ a2bd-E1si)
垢版 |
2022/11/11(金) 22:46:09.97ID:2RvqW7n80
ロード中とかに使いそうなグルグルするアニメーション画像をピクチャーボックスに入れて、処理開始から終わりまで表示してグルグルさせたいんですけど、最後の完了のメッセージボックス出るまで映る事なく終わります。
メッセージボックス表示中でOKクリックするまではぐるぐるしてるんですがどうしたら出来ますか?

コードの流れはフォームからenter keyでスタートして別クラス行って処理して、戻ってきてメッセージボックス表示の流れなんですが。
2022/11/11(金) 23:26:01.33ID:Zbp1C+xk0
なんか状況が判りにくいけど、メッセージボックスはモーダルダイアログだから
表示する事で処理が止まってたりしないかね
メッセージボックスじゃなくて、適当なフォームをShowした場合どうなる?
2022/11/12(土) 04:50:51.20ID:XZf6dU9z0
ウィンドウメッセージとUIスレッドの関係でそうなってる

対処法は、マルチスレッドにしろ
ただし難易度は結構高い

まあ、あれだ、とりあえずDoEventsとか入れてもいいんだがな
DoEventsいれてちゃんと動くプログラムはそれはそれで結構難しい
2022/11/12(土) 12:13:58.10ID:1r3Bwkn20
変な癖が付きそうだし、今更DoEventsに手を出すべきではないと思う
2022/11/12(土) 14:01:22.72ID:p4jHMEGd0
土居ベンツさん劇おこ
2022/11/12(土) 15:22:41.58ID:LpiKZFMR0
>>570
ProgressBarのMarqueeならMessageBox.Showしても止まらない
グルグルをどうしても動かしたいのなら>>571が理由だろうからメッセージボックスを自分で作ってモードレスフォームで表示するか、グルグルの方を別フォームで表示したら
2022/11/12(土) 16:47:51.01ID:3AkpswdK0
別スレッドからlistbox.selectedindexとかのプロパティを取得するのわからん。
設定とかはデリゲート、インボークとかググったらなんぼでも出てくるけど取得は
出てこない。。
2022/11/12(土) 17:14:37.07ID:lzvWNBzY0
Invokeまで探せてるなら公式を読めよ
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control.invoke?view=windowsdesktop-7.0#system-windows-forms-control-invoke-1(system-func((-0)))
578デフォルトの名無しさん (ワッチョイ 03bd-T0y7)
垢版 |
2022/11/12(土) 22:09:30.68ID:QO08gHTj0
色々とありがとうございます。
簡単そうに見えて難しいんですね。
2022/11/13(日) 00:21:50.43ID:4MPzkrV00
androidだとrunOnUiThreadなんてものもあるけど理屈は一緒だな
この辺意味が分からないなら多分やりたい事は出来ないw
2022/11/14(月) 13:34:48.21ID:67shDJhG0
スパゲティの元だけども、
runOnUiThreadの方が関数の中に書けるから好き
581デフォルトの名無しさん (スプッッ Sd03-B69F)
垢版 |
2022/11/14(月) 13:44:26.33ID:mrCA5Qrfd
外部アプリ(java)をC#から起動し、途中でprocess.killで強制終了することがあるのですが、問題はありますでしょうか。外部アプリがファイル操作中だったら開きっぱなしになるとか。問題があるとしたら、他に方法はありますでしょうか。よろしくお願いいたします
2022/11/14(月) 13:49:02.49ID:hyabTMwBa
その起動されるアプリによって問題があったりなかったりするとしか
ファイル書き込み中にkillしたらまあそのファイルは壊れるだろうね
アプリやOSによってもっと穏顕な終了のさせかたがあるからそれが使えるなら使えばいんじゃね
583デフォルトの名無しさん (ワッチョイ a37c-B69F)
垢版 |
2022/11/14(月) 20:54:18.33ID:XE8fOT6n0
>>582
ありがとうございます。
外部アプリには途中終了コマンドが無いのですが、windowsには何かありますか?ググっても分かりませんでした。外部アプリはウィンドウの無いコンソールアプリです
2022/11/14(月) 22:24:42.02ID:+czhCa5R0
>>583
kernel32のGenerateConsoleCtrlEventを使う。
アプリが対応していれば、穏便な終了処理をしてくれる。
2022/11/14(月) 22:53:47.70ID:Uzyce3Xf0
Process.CloseMainWindowで大体は閉じれるんじゃね
2022/11/14(月) 22:59:16.88ID:Uzyce3Xf0
https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process.closemainwindow?view=net-7.0

日本語のドキュメントの翻訳おかしいんで、英語版のリンク
ここのRemarksを読むべき
英語苦手ならGoogle翻訳使ってくれ
587デフォルトの名無しさん (ワッチョイ a37c-B69F)
垢版 |
2022/11/15(火) 14:26:47.37ID:Lk8Tc52e0
ありがとうございます。CloseMainWindowは表面的にはHasExitedがtrueになって処理が中止されたように見えるのです、タスクマネジャーで確認すると、閉じたはずのjavaアプリのプロセスが動き続けてCPU・メモリを占拠し続けてしまっていました。

GenerateConsoleCtrlEventはググってもC#、WPFでどう使うのか分からず、途方に暮れています、、、
2022/11/15(火) 14:44:49.76ID:6OfP8eGXa
WindowsでGUIアプリを操作するなら今はUI Automation一択
2022/11/15(火) 14:51:48.92ID:wrDdZ3ZbM
Javaのアプリってのがどういうのか分からんからコメントしようがないな
外部プロセスと通信する、または入力を受け取る仕組み用意してないならKillしかないんじゃね
2022/11/15(火) 14:54:17.14ID:6OfP8eGXa
>>589
何で書かれてようがwindowがあればUI Automationで操作できる
2022/11/15(火) 16:56:39.43ID:f/52+NWlM
>>590
そういう話ではなく、終了させる方法がそもそも用意されてるのかって事
2022/11/15(火) 17:05:43.39ID:Ptkq34Vna
>>591
右上の✕印を押すとたいてい終了できるぞ
2022/11/15(火) 17:13:56.04ID:s+bzFdbT0
>外部アプリには途中終了コマンドが無い
>外部アプリはウィンドウの無いコンソールアプリ
この外部アプリを途中終了できるように改修させる方が楽なんじゃね?
2022/11/15(火) 17:30:09.04ID:tj+bY8hN0
もしかしたらSIGTERM受け付けてるかも
2022/11/15(火) 17:34:59.92ID:y5E/LJbRr
>>587
GenerateConsoleCtrlEventのC#での使い方はStackOverflowの813086とか見るといいよ
596デフォルトの名無しさん (スプッッ Sd43-B69F)
垢版 |
2022/11/16(水) 14:51:33.26ID:Nr772sxzd
ありがとうございます。再度調べてみます
2022/11/16(水) 16:31:41.33ID:L7AEwAjo0
LibraryImport来たついでに逆アセしてみたけどWin32の戻り値BOOLをC#側でboolでDllImportしちゃうだけで大量のゴミコード生成される事になってたんだな
CのBOOLの実体はintでC#やC++のboolの実体はbyteだけど単に切り捨てられるだけかと思ってた
逆に引数と戻り値を完全に型サイズ合わせればLibraryImportだろうがDllImportだろうがインライン展開されて直接Win32呼ばれるってことか
2022/11/16(水) 17:25:44.01ID:L7AEwAjo0
>>597
訂正
型サイズ合わせるじゃなくてBlittable型オンリーなら直接呼ばれるだった
型が合ってるかどうかはコンパイラ側からしたら知った事ではない話だった
2022/11/18(金) 22:33:38.46ID:eJgoDgWR0
>>570
今更だけどSystem.Timers.TimerどころかSystem.Windows.Forms.Timer使ってコントロールの表示変えながらMessageBox.Showしても表示の変更止まらんな
Marquee動く時点でもしかしてと思って試したらそんな結果。DoEventもいらない
むしろ止まってしまうグルグルをどうやって動かしているのか不思議
2022/11/18(金) 23:42:26.02ID:nTmfkfcZM
うーん
2022/11/19(土) 07:24:15.03ID:W2gsPZLCM
Windows 11の標準アーカイバーも不便だし他に良いのもないから自分で作ろうと思って久々にプライベートで開発すっかなと思ったわけですよ
そんでMSのDoc読みながらふむふむPackage.appxmanifestにwindows.fileTypeAssociationなんかで記述すればWin11のNew Context Menuにコマンド追加できるわけね
おー確かにサンプルのApp1で開くが追加されたし.zipで右クリックしたら出た、じゃああとは汎用フォルダ・ファイルの右クリックではどうやるのかな?
はい、汎用フォルダ・ファイルへのコマンド追加はExplorerのShell拡張が必要です、そしてまーた.NETあるあるのVC++でCOM作ってくださいですよ
十何年前とまったく同じことを.NET 7になっても繰り返してんだねこれじゃMS StoreもデスクトップアプリもオワコンになってWindowsでアプリなんて増えるわけないよね
そりゃWSAとAmazon App StoreでAndroidアプリエミュレートするしかなくなるわな
なんでこんなデスクトップアプリを開発する場合に誰もがやりたがることがこんなに難解で面倒なんだよ.NETでAPI用意しろよアホすぎるわMS
2022/11/19(土) 07:34:18.33ID:Mciuu6qvM
それはあなたの感想ですよね
2022/11/19(土) 10:44:26.12ID:Cy1G0XeKM
フォルダを対象にしたアプリってアホみたいに作れる
フォルダ指定してこれを○○で開くが無限に作れる
安易に出来たらアプリ100個入れたら100個縦に○○で開くが並ぶ
これ以上増えてもらっても困る


と言う感想
2022/11/19(土) 11:16:05.26ID:eQTLGh6L0
>>601みたいな奴が簡単にそういうOSに関連したコードを書けるほうが何が起こるか分からないし
OSの互換性が重要だし、その辺理解出来なくて発狂しているだけなら相当頭が悪い
で、シェルエクステンションの実装が出来ない低レベルは諦めたらいいだけw
2022/11/19(土) 11:19:32.03ID:Cy1G0XeKM
そんな酷い言い方はないと思うが…

なんだったらwin11は右クリックをカスタマイズできるツールは沢山あるからそれを使えばいいかとも思う
どうしても作りたいならOSSのツールもあるからそこからコピペするのもありかも
2022/11/19(土) 11:32:29.78ID:muFnCKvaa
>>601
C#でCOM作れるのにどうしてそういう感想になるんだw
2022/11/20(日) 01:27:17.90ID:7pjHG/e/0
クライアントでのマスターデータの管理って皆さんどうやってますか?

・使用するたびにサーバーに取りに行く
・初めて使用したときにサーバーに取りに行きクライアントのメモリに保持しておく
・クライアント起動時に全部のマスターをサーバーに取りに行きクライアントのメモリに保持しておく
2022/11/20(日) 01:29:23.84ID:f6/NLLueM
サイズとか更新頻度と相談
正解はないが鯖でやった方がメンテしやすくていいんじゃないか
2022/11/20(日) 09:35:44.93ID:AGRlHlXF0
>>607
レイヤーを下げて特定のAPIをクライアント側でキャッシュ
2022/11/20(日) 09:39:38.89ID:lRymRVs40
割と頻繁に更新され、即時性が要求されるなら都度読みにいくしかないし
通信環境が良くなくて通信回数減らすためになるべくキャッシュしたりする事もある
結局要件次第としか
2022/11/20(日) 11:29:27.36ID:7pjHG/e/0
まあ要件次第なのはそうなので、要件を絞って

サイズが大きい
更新頻度が少ない
使用頻度が少ない

この場合はキャッシュするとして、その場合のキャッシュ方法って何がおすすめですかね?
マスターを使うときの実装としてはこんな感じを考えてる

更新されたかの確認
更新された場合、クライアントにダウンロードし、ついでにファイルに保存。
更新されてない場合、クライアントにファイルがあればそれをメモリに展開。
ファイルがなければ、更新された時と同様
2022/11/20(日) 12:04:09.80ID:fuSoz9vj0
>>611
なぜキャッシュしたいの?
マスター更新後に古くなったキャッシュが利用されても問題ない?

想定してる通信環境は?
サイズが大きいとは具体的に何MB程度?
想定してる用途はモバイルゲーム?業務アプリ?
2022/11/20(日) 12:04:54.58ID:lRymRVs40
サイズが大きいってのもざっくりすぎてなぁ
富豪的にメモリ使えるなら全部メモリぶち込んでもいいし
一旦ローカルに置きたいなら、SQLiteでも使えば
2022/11/20(日) 12:27:19.46ID:7pjHG/e/0
>>612
サイズは10MBくらい
業務アプリ想定
古いマスターが使われないように使う前に更新されたか確認するつもり
なんでキャッシュしたいかは使うたびに毎回通信してたら時間の無駄かなと
2022/11/20(日) 12:42:58.25ID:lRymRVs40
頻繁に更新チェックするくらいなら、都度取っても大差ない
2022/11/20(日) 12:52:11.40ID:AxU0uBeT0
何を聞きたいのかさっぱりわからん
マスター ⇒ クライアントのファイル ⇒ メモリー の2階層キャッシュなら

マスターの更新日時を取得
if(キャッシュファイル無し && キャッシュファイル更新日時 < マスターの更新日時){
マスターダウンロードしてキャッシュファイル更新(キャッシュファイルの更新日時を更新)
}
if(展開済みメモリー無し && メモリー更新日時 < キャッシュファイルの更新日時){
キャッシュファイルをメモリーに展開
メモリーの更新日時を更新
}

ってやるだけだろ
2022/11/20(日) 13:04:27.34ID:lRymRVs40
つーか、>>611 まで考えてるなら実際に試してパフォーマンス計測してみりゃいいじゃない
それで想定通りのパフォーマンスになってるならそれでいいし
結局要件満たせてりゃいいのよ
2022/11/20(日) 13:13:14.12ID:P+FEWrnJM
>>611
それだとオンラインで普通に処理して結果だけ貰うのが正解
ローカルに置くのは速度が最優先される場合
で速度が求められるのは使用頻度が高い機能
仕様頻度が低い機能にそんな変なことせんでいい
2022/11/20(日) 13:23:28.05ID:ehdgoKhb0
>>618
せやな
2022/11/20(日) 13:38:37.27ID:Um2LrDwiM
そもそもローカルに置かなくていいように設計すべき
都度SQL投げるかサーバーサイドにAPI実装すりゃいいだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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