スレ立てるまでもない質問はここで 163匹目

■ このスレッドは過去ログ倉庫に格納されています
2022/12/08(木) 12:29:27.06ID:Nq8u2KPWd
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

次スレは>>980が立てること

【前スレ】
スレ立てるまでもない質問はここで 162匹目
https://mevius.5ch.net/test/read.cgi/tech/1666337882/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/02/16(木) 18:47:26.34ID:6Z/Sw6Okd
何が原因で「コンパイル出来ない」と考えてるんだろうか?
2023/02/16(木) 19:46:05.39ID:LB1U3BvE0
コンパイラやOSはスゲー神聖なソフトで素人にはビルドできるわけがない!
って思ってる人は一定数いる
2023/02/16(木) 20:13:32.58ID:1LGfLHFu0
>>621
わざわざ場合分けせんでもいいと思うよ
#if MODE == JIKKEN
#define MODE_STRING "jikken"
#elif MODE == HONBAN
#define MODE_STRING "honban"
#else
#error
#endif

printf("MODE = %s.\n", MODE_STRING);
2023/02/16(木) 22:42:58.34ID:EFBiKmEC0
ベアメタル組み込みの開発環境をCからC++に移行する際に注意すべきことって何かあります?

例外、実行時型情報、new/deleteは使用しない
仮想関数はコードサイズと呼び出しのオーバーヘッドに注意
というのはよく言われますが
言語機能とSTLで使ってはいけないもの(というか使って問題のないもの)ってなんでしょうか?

ちなみにターゲットはROM100k/RAM10kみたいなプアな石です
2023/02/16(木) 22:54:45.07ID:8Y4Kmok50
処理系がそのターゲット用なら設定がありそうだけど
心配ならアロケータを自作してスタック他を潰さないようにするとか
2023/02/16(木) 23:09:47.05ID:Tpu7Mxzn0
C++機能のほとんどが使えないから移行する意味ないよ
RAM10kて16384Byteとかかだろ
arduinoみたいにstaticなクラスインスタンス作っておけるぐらいしかない
自己満足の世界だな
2023/02/16(木) 23:48:49.34ID:LB1U3BvE0
> ちなみにターゲットはROM100k/RAM10k
これでプアなのか...
644デフォルトの名無しさん (ワッチョイ 2b46-t1ev)
垢版 |
2023/02/17(金) 16:40:19.05ID:m5TXxyVw0
ユーザーが課金することで投稿上限が10から50に増えるようなWebサービスなんですが
この10とか50とかいう数字をフロント側で持つのは問題でしょうか?
調べてみるとdevツールで変数は書き換え可能らしく、気になってしまいました。
2023/02/17(金) 16:42:59.74ID:SMzkkCfo0
そもそも投稿時にサーバー側にその投稿によって合計いくらになるかを調べて
超えているようならエラーにするとかの処理を入れるのが当然だろうし
最大投稿数もAPIで取得した時点では10や50だろうけど、その数値はサーバー側で管理すべき数値であり
クライアントで10で来たのを50に変えたところで、投稿で弾かれるし
何を悩んでいるのか分からないw
2023/02/17(金) 17:30:30.40ID:S6THGHux0
フロント側で持つことが問題かどうかを聞きたいのではなく、サーバー側で持たないことが問題かどうかを聞きたいのだろうか
647デフォルトの名無しさん (ワッチョイ 2b46-t1ev)
垢版 |
2023/02/17(金) 17:42:39.59ID:m5TXxyVw0
ありがとうございます
サーバー側で頑張って処理します!
2023/02/17(金) 20:17:25.78ID:O/H37gNs0
むしろフロントは何も考えずboolなりエラーコードなりで処理するほうが簡単やろに
2023/02/18(土) 12:35:43.95ID:om/XupNP0
このスレでほしい回答が得られなさそうだったので、
OpenGLの新スレを立てさせて頂きました。
↓スレに質問を書き込んだので、
回答して頂ける方がいたら宜しくお願いします。

OpenGL/Vulkanスレ Part23
https://mevius.5ch.net/test/read.cgi/tech/1676690491/
650デフォルトの名無しさん (ワッチョイ 0d5f-bChI)
垢版 |
2023/02/18(土) 14:35:36.52ID:yoUIrNE+0
vue.jsのディレクティブを使ったコードは、(表現は正しくないかもですが)直接ブラウザが解釈しているのでしょうか?それともどこかでディレクティブなしのHTMLに変換されているのでしょうか?
SFCファイルの場合はwebpackなどを使ったビルドを通せばディレクティブなしのファイルが生成されますが、ビルドを通してないJSファイルの場合どうなっているのかが気になっています
651デフォルトの名無しさん (ワッチョイ 0d5f-bChI)
垢版 |
2023/02/18(土) 14:37:00.97ID:yoUIrNE+0
>>650
最後はJSファイルではなくHTMLファイルの打ち間違いです
2023/02/18(土) 19:42:41.58ID:I4ZjkG9+0
プログラムの書き方やテクニック?みたいな覚えておきたいことはどうしてます?
ノートに手書きはなんか違う気がする
エクセルにコピペかワードにコピペだと思うんだけど・・・どうしてます?
2023/02/18(土) 19:52:02.82ID:xCzwRyQu0
覚えておきたいってそんなに思わないし別に保存はしない
このテクいいなと思ったら一度二度使いたいとこに流用してみとけば、
また必要になったら思い出すこともあるやろなって感覚

GitHubとかのリポジトリがあるならURLをお気に入りにしとくとかでえやろ

自分でプロダクト作ってれば、ノートにコード書くなんて無駄なことするより
まずコード打ち込んで作って改良してくほうが実利となる
どうせ1つの言語で何十年も食う時代じゃもうないんだから
2023/02/18(土) 19:59:11.36ID:UjqgCKtD0
>>653
煽りとかじゃなく単純な疑問なんですが「1つの言語で何十年も食う時代」なんてあったんですかね?
どの言語でいつからいつまでぐらいのこと?
2023/02/18(土) 20:10:17.54ID:H8UbSm360
つまらん
同僚や客にもそのノリなんやろうな
2023/02/18(土) 20:25:23.92ID:c4QxGie20
>>654
組込み屋で40年くらい(要は会社にいる間)C言語で食ってた奴はいるよ
実例は知らんけどコボラーでもいただろうし数値演算メインの人ならフォートランで食ってた人もいそう
2023/02/18(土) 21:04:01.08ID:om/XupNP0
>>654
組み込み系や処理速度を求められる案件だと
C/C++が今でもメインだよ。
Pythonで書いたAIのプログラムを
処理速度を上げるためにC++に直すこともある。
いつからいつまでという話だと、
C言語は50年前から現在まで使われている。
2023/02/19(日) 01:56:44.76ID:J39SJVm70
SI業界とかだと、一つの言語で何十年も食うじゃなくて
何十年も食いたいなぁと考えている人が多い
一度覚えたことから変えたくない人
知識が何十年も前で停止していて、新しいことが何もできなくなってる
659デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/19(日) 08:05:27.02ID:xznf5Ddd0
XAMPPのインストールのところで、インストールをどんどん進めていき、
SelectComponentsというところに進むのですが、ここで、
利用したいものにチェックを入れないとダメなのですが、
ApacheとPHPにチェックが入れられません。
しかし、よく見ると、それらには薄いグレーの背景色の上にチェックが入ってます。
しかし、自分でチェックを入れた時のように青い背景色の上にチェックが入るということにはなりません。
XAMPPのバージョンは8.2.0(PHP8.2.0)で、Windows版です。
パソコンのОSは、Windows11で、システムの種類は、64bitOSです。
回答よろしくお願いします。
2023/02/19(日) 08:14:35.78ID:wunKu9cx0
ラーメンから麺とスープ抜く想定がないから
2023/02/19(日) 08:32:16.11ID:5aH3xDwk0
2000年くらいからJavaでずっと飯食ってる人ならそこそこいそう
2023/02/19(日) 09:03:13.24ID:aE8MMD5q0
>>659
それで何が困ってるのか分からん
その二つはいれるの必須なのだから触るなくなってる
663デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/19(日) 09:25:52.89ID:xznf5Ddd0
>>662
回答ありがとうございます。
>その二つはいれるの必須なのだから触るなくなってる

そうだったんですか!??????
分かりました!!!!!!!
ありがとうございました!!!!!!!!
664デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/19(日) 10:42:51.05ID:xznf5Ddd0
PHPプログラミングをしようと思い、
XAMPPをインストールして、
始めての「Hello World」を表示させてみようとしたのですが、
何回やってもNotFoundと出てしまいます。
一からPHPプログラミングの仕方を教えてもらえないでしょうか?
よろしくお願いします。
2023/02/19(日) 12:37:38.92ID:GuYvQ4yB0
XAMPPとか設定ミスもありえるから
PHP本家からバイナリもってきて直起動させとけ
2023/02/19(日) 12:39:02.02ID:GuYvQ4yB0
php.exeにソースコードを渡せば実行できるはず
エディタで編集中のを渡す設定にすればエフキーとかでいけるはず
667デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/19(日) 12:39:28.33ID:xznf5Ddd0
>>665
それは一体どういうことなのでしょうか?
初心者でもできるやり方ですか?
もしそっちの方が良いのだとしたらそのやり方にしたいので、
やり方を教えてください。お願いします。
668デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/19(日) 12:40:24.46ID:xznf5Ddd0
>>666
詳しくやり方を教えてください。
お願いします。
2023/02/19(日) 13:50:11.52ID:owAZbnPUd
>>668
検索すればサイトはいくらでも出てくるだろ
しょせん馬鹿には無理ってことだ
2023/02/19(日) 14:00:24.49ID:xuUr57qAM
diff コマンドで
$ seq 10 >a
$ seq 0 9 >b
$ diff a b
とすると賢く共通部分が9行あると判定してくれますが、あえて単純に行毎に比較することってできますかね?
つまりこの場合は全行が異なると判定されてほしいです
2023/02/19(日) 14:01:30.53ID:tpbM8io3d
ファイル名、パス名が間違ってるんじゃね?
拡張子は表示されてる?
拡張子は.phpになってる?
672デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/19(日) 14:09:51.81ID:xznf5Ddd0
>>669
ググってその通りやってるのですが、なぜかできません。
どうすれば良いでしょうか?
2023/02/19(日) 14:12:43.18ID:kFholmWe0
ググって出てくる別のサイトをそのままやれ
2023/02/19(日) 14:17:37.14ID:owAZbnPUd
>>672
こういう馬鹿の特徴は、子供が漢字を飛ばして読むように自分のわからないところは読み飛ばす
だからできない
2023/02/19(日) 14:56:28.85ID:GuYvQ4yB0
windowsだとして
Binaries Releases PHP Windowsなどで検索して
zipを落として、DOSプロンプトか、バッチファイルか、エディタ+Fキーとかで実行すればいい
あとのほうは「PHPをコマンドラインで動かす」などで検索
2023/02/19(日) 19:57:45.62ID:1XgBXSJn0
>>670
最終的にやりたいことの仕様にもよるけど、一つのやり方はnlで行番号を振って比較
$ diff <(nl a) <(nl b)
2023/02/19(日) 20:02:51.32ID:62Qdm88BM
>>676
nlコマンドは知りませんでした
目視用なのでこれでバッチリです!ありがとうございました
2023/02/21(火) 02:41:32.43ID:6inUiN0e0
SwingとJavaFXどっちも勉強した人いますか?
どっちがオヌヌメですか?
679デフォルトの名無しさん (ワッチョイ b592-4mn0)
垢版 |
2023/02/21(火) 16:10:56.15ID:Yz858Hu00
とりあえず、XAMPPを削除した
もう一回XAMPPをインストールしてみた方が良いでしょうか?
2023/02/21(火) 16:18:36.69ID:CRFnbl/r0
そんなのすら判断できんならもう諦めろ
2023/02/21(火) 17:25:16.83ID:peG8giuNd
>>679
馬鹿は消えろ
2023/02/21(火) 17:53:38.27ID:n/WBIpKW0
php動かすだけならサーバー環境扶養
2023/02/21(火) 18:03:23.95ID:rKhaXs3b0
30年くらい前だともう一度インストールした方がいいでしょうかなんてところから聞くやつは無能のレッテルを貼られたけど悲しいかな今の日本の若者ではこれが普通なんだよね
どんだけ劣化するんだ
2023/02/21(火) 18:44:30.55ID:ImjLNuV6d
そもそもNot foundってエラーメッセージを無視してるのはなんでなんだ
この一文だけでソースファイルが正しい場所に無いのは明らかだろ
2023/02/21(火) 20:38:00.79ID:ayp61yNPM
まさにこれ。だから馬鹿に教えても無駄


こういう馬鹿の特徴は、子供が漢字を飛ばして読むように自分のわからないところは読み飛ばす
だからできない
2023/02/21(火) 22:05:53.34ID:gQn24LHc0
XAMPPって動作がおかしくなった時に
再インストールしてみるっていうの
ググっても出てこないんだが
2023/02/21(火) 22:53:23.74ID:ni70LPlva
ハイクオリティのGUIを作れるようになりたいのですが何をすれば良いでしょうか。
2023/02/21(火) 23:01:17.78ID:peG8giuNd
>>687
コンダラを引いてグランドを10周しろ
2023/02/21(火) 23:03:20.92ID:Md4XkWYFd
>>687
GUI部品(ボタン、ラベル、テキストボックス、コンボボックスなど)の種類を覚えるところから。
そして、UI/UXの概念(フォーカス、アクセスキー、キーボード操作、マウス操作など)の理解。
2023/02/21(火) 23:06:52.03ID:Md4XkWYFd
>>687
まずは、GUI部品(ウィンドウ、ダイアログ、ボタン、ラベル、テキストボックス、コンボボックスなど)の種類を覚える。
「GUI UI/UX アクセシビリティ」を検索。
2023/02/22(水) 08:39:25.40ID:ywGxgjQk0
外付けHDDに置いてある、とあるフォルダ内のファイルを削除しても、リロードすると削除されず元に戻っています。
ファイルを移動しようとするとIOデバイスエラーになりますが、実際にはファイルは移動先にコピーされつつ、移動元にも残っています。

※フォルダ内のファイル自体は正常に開けています。
※自動バックアップなどは設定していません。

これってどういう状態なのでしょうか?
692デフォルトの名無しさん (ワンミングク MM71-AouJ)
垢版 |
2023/02/22(水) 09:03:07.79ID:lG5gdUzhM
>>691
OSや言語や方法を書けない馬鹿
最近変なのばっかり来るのは春休だからなのか?
2023/02/22(水) 09:47:19.08ID:pMjepbUSa
いやそもそもスレチどころか板違いなんだが
2023/02/22(水) 13:57:57.73ID:2B3o8bjS0
物理的か論理的エラーでは
2023/02/22(水) 14:03:42.53ID:1hO1GvYya
>>694
もしくは幻覚または伝聞
2023/02/22(水) 14:06:45.62ID:PlAdHUMxM
フィジカルまたはマジカル
2023/02/22(水) 16:57:08.26ID:hFutZzVZM
初期誤差に敏感なカオス系のシミュレーションを計算する際、丸め誤差や桁落ちなどの
誤差の出ない計算方法があれば原理的には必ずユニークな計算結果を出すはずですよね?
そういう計算って実際に可能でしょうか?
(たとえば特殊な型を使えばメモリをめっちゃ食うけど誤差なし計算が実現可能とか)
2023/02/22(水) 17:10:16.67ID:ab40YNoOd
馬鹿ってどんな言語も使えるのかな?
Fortran使えよ
2023/02/22(水) 17:52:14.65ID:3MJ5isf30
>>697
はずもクソもそんな計算方法はないし、計算以前にコンピューターの数値表現自体がそもそも近似なんだよ
例えば無理数を正しく表現することはメモリがいくつあっても出来ないことで、円周率のように定数で保持したとして計算中は定数で扱えてもどこかで実際の値に戻すときに正確でなくなる
またそもそも全ての無理数に定数があるわけでもない
コンピュータでの数値計算は精度とセットにして考えるものなんだよ
丸め誤差だの桁落ち情報落ちだの言う前にそういう基本的な前提が頭から抜けてんならちょっとやべーよ
2023/02/22(水) 18:30:12.85ID:Q6+K3FW2d
Linuxエンジニアになりたい
701デフォルトの名無しさん (ワントンキン MM2b-AouJ)
垢版 |
2023/02/22(水) 19:03:47.23ID:x05e7dl0M
春休みヤベー
2023/02/22(水) 19:18:55.45ID:ZzyWfmcWd
区間演算と多倍長演算を使えば、誤差の範囲を査定することは可能かも知れない。
2023/02/22(水) 21:59:33.55ID:qecTLRn10
アナログ回路を組めば計算誤差は0になるよ
ただ今度は測定誤差が出るけど
2023/02/23(木) 10:11:10.51ID:MVPqL5ol0
多倍長計算でカオス系をシミュレーションしたらどう見えるかとか論文があった気が
フラクタルみたいになっているというような話だったような気もするが
記憶違いかもしれない
2023/02/23(木) 12:47:17.70ID:H6YNShWD0
>>687
ハイクオリティのGUIを作成するためには、以下のステップを実行することをお勧めします。

GUIデザインの基礎を学ぶ
まず、GUIデザインの基本を理解することが重要です。色の使い方、タイポグラフィー、スペーシング、レイアウトなど、デザインの要素を理解する必要があります。GUIデザインについて学ぶためのリソースは、書籍、オンラインのコース、ウェブサイト、YouTubeチュートリアルなど、さまざまな形式で提供されています。

ツールを学ぶ
GUIデザインを作成するためのツールとしては、Sketch、Adobe XD、Figma、InVision Studioなどがあります。これらのツールは、デザインのプロトタイプを作成したり、UIデザインを作成したりするための機能を提供しています。選択したツールについて学び、使い方を練習することが大切です。

ユーザーインターフェースの設計を考慮する
ユーザーインターフェースの設計は、GUIデザインの重要な要素の1つです。デザインの目的やターゲットユーザーを理解し、ユーザビリティやユーザーエクスペリエンスを向上させるために、適切なインターフェース設計を行う必要があります。

プロトタイプを作成する
プロトタイプを作成することで、デザインをテストし、問題を修正することができます。プロトタイプは、ユーザビリティテストを行うためにも重要です。ツールを使用してプロトタイプを作成し、テストを実施することができます。

フィードバックを受け入れる
プロトタイプを作成した後は、フィードバックを受け入れ、必要な改善を行うことが重要です。ユーザーからのフィードバックは、デザインの改善に役立ちます。
2023/02/23(木) 14:04:15.50ID:gnLhIz6D0
最低限の商用品質ならそんなところだけど
ハイクオリティってのとはちがうような
2023/02/23(木) 14:10:12.55ID:9j/ZocLNM
>ユーザーインターフェースの設計を考慮する
>ユーザーインターフェースの設計は、GUIデザインの重要な要素の1つです。

GUIデザインて(グラフィカル)ユーザーインターフェースを設計する(デザインする)ことではないの?
2023/02/23(木) 19:24:57.27ID:wI8w/+O3a
>>705
チャットGPTかな?
2023/02/23(木) 20:55:16.67ID:4nvSVdtR0
>>697
>>699
誤差の出ない計算って論理的には可能だよ。
掛け算だったら、計算するごと使用するメモリを増やす型と関数を自作すれば良い。
例えば、10進数の計算で1桁に1バイト使う型を定義する。
1.1は整数1バイトで少数1バイトだが、
1.3を掛けると
1.43で整数1バイト、少数2バイトになる関数を作ると桁が落ちなくなる。
割り算の場合は、分母と分子を別々の値を持った型を作れば良い。
2023/02/23(木) 21:30:41.07ID:4nvSVdtR0
試しに誤差の出ない計算のプログラム作ってみようと思ったら、
visual studio2008が古すぎるせいか動かなかったから、
visual studio2022をダウンロード中
2023/02/23(木) 21:42:53.24ID:6eqWydaM0
平方根とか三角関数とか計算途中の足し算とかあるじゃろ
2023/02/23(木) 21:45:40.03ID:1cQlLW/80
713デフォルトの名無しさん (ワッチョイ a38e-O7MM)
垢版 |
2023/02/23(木) 22:07:01.61ID:hO/bqHQv0
>>709
馬鹿の典型例
2023/02/23(木) 22:51:44.98ID:BgVzVA3A0
>>709
無理数って知ってる?
2023/02/23(木) 22:59:13.32ID:gnLhIz6D0
分野が違うけど近似計算追求するよりか
H.264のように整数演算でいかに構築するかって方が好き
2023/02/23(木) 23:34:23.20ID:1cQlLW/80
欲しいのはたぶん多倍長固定小数点だろ
誤差を十分吸収し得るに足る小数点の位置は
個別のケースによって違うから自分でやるしかないよ
2023/02/24(金) 00:14:25.26ID:6Vzv7gfq0
>>713
どこが間違ってるか指摘出来ないお前の方が馬鹿だろ

>>711,714
>>697がどんな計算が必要か分からないが、
数値計算の誤差は掛け算や足し算で積み重なる場合が多い。
平方根をどうしても誤差無く計算したいなら、
計算出来なかった平方根の情報を残したまま出力するプログラムにすれば良い。
三角関数は、オイラーの定理の形式にすれば実装できる。
2023/02/24(金) 00:42:32.82ID:6Vzv7gfq0
>>717はオイラーの定理の形式にすれば実装できる場合もあるってことね。
無理な例を上げていちゃもんを付けてくる人がいるから、あらかじめ言っておいた。

誤差の無い掛け算足し算のプログラムを作ろうとしたら、思ったより大変で終わらなかった。
明日仕事から帰って気力があったら続きをやるか。
2023/02/24(金) 00:50:21.53ID:wglsxPd20
BigDecimalみたいな配列ベースで実装された数値を使って有理数だけの演算をするならいけるだろうけど質問者が聞いてるのはそんな極めて限定された環境下の話じゃないだろうな
無理数の計算を計算できなかった情報として積み上げるなんて発想もそれをカオス系で使おうなんてNP困難みたいな実質不可能になる予感しかしない
2023/02/24(金) 00:51:40.40ID:Q77HdEB50
誤差無しの厳密な計算結果を求めたかったんだろうに情報残したまま出力してどうするんだ
2023/02/24(金) 02:26:19.79ID:8t4u29Gl0
任意多倍長使えば加減乗で誤差出ないの当たり前だろwとっくにライブラリある、自作すんなしw
有理数型なら除でも誤差出ないけど、それはつまり計算出来なかった情報を残してるってことなんだよね

>計算出来なかった平方根の情報を残したまま出力するプログラム
mathematicaでシミュるとか凄い遅そう
2023/02/24(金) 05:39:10.18ID:ta4Sp3FjM
>>718
数学もまともにわからない算数レベルの馬鹿
2023/02/24(金) 08:12:21.27ID:OehCc09P0
>>717
あのなw
それでマジで誤差のない演算や大小の比較ができると思ってんの?w
2023/02/24(金) 11:22:48.28ID:62b5PWzyM
お話中、失礼します。
RDBMS ほどではないにしろ簡単なデータベースを普通のファイルを使って自作する
場合、もし、ディスクに flush されるまえに OS がダウンしてしまった場合に備える
アルゴリズムはどんなものが考えられるでしょうか?
ファイルは、上書きしなければ、ストレージが壊れるまではそのまま壊れないと仮定してよいと
思うのですが、問題は追加したり、途中を部分的に変更するために、同じファイルに書き込む
時だと思うんです。
2023/02/24(金) 11:27:38.65ID:/JDec9CR0
>>724
SQLite3を使え。データベースファイルが単一のファイルだから
普通のRDMBSほどではない簡単なデータベースに使える。
その程度のアルゴリズムも思いつかないようなレベルじゃ
実装なんて到底無理だ。
2023/02/24(金) 11:28:28.20ID:62b5PWzyM
>>724
[案1]
・mkdir "X" 法で排他制御を開始する。他のcgiのインスタンスが処理中は待機する。
・今までのデータファイルAには上書きせずに、ファイルAをメモリーに全部
 読み込んでから、一部だけを修正し、新しいファイルBを作成して全部
 書き出してしてしまう。
・ファイルBをfflushして、OSのsystem call で(?) sync して、ストレージに本当に
 書き込まれるまで待つ。
・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。
・rmdir "X" として、排他制御を終える。
2023/02/24(金) 11:30:29.54ID:/JDec9CR0
> ・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。

はい、ここでアウト
ファイルAを削除した段階でOSがダウンするとデータが無くなる
また、複数のファイルに書き込む場合が考慮されていない

な?
2023/02/24(金) 11:31:14.08ID:62b5PWzyM
>>725
>その程度のアルゴリズムも思いつかないようなレベルじゃ
>実装なんて到底無理だ。
726 のようなアルゴリズムはどうですか。
効率は悪いと思いますし、一時的にディスク領域が2倍必要になりますが。
2023/02/24(金) 11:32:54.79ID:/JDec9CR0
信頼性重視なデータベースソフトが
どれもジャーナルという仕組み(アルゴリズムではない)を
採用している理由を考えろ
その程度の適当な方法じゃ実装できねぇんだよ
2023/02/24(金) 11:33:17.21ID:62b5PWzyM
>>727
>ファイルAを削除した段階でOSがダウンするとデータが無くなる
次にcgiを起動した時に、ファイルAが無くなっていて、ファイルBだけが
存在する時には、Bのファイル名をAに改名するところから再開すれば
良いのでは有りませんか。
2023/02/24(金) 11:37:53.55ID:/JDec9CR0
いくつもある穴の一つを指摘しただけだ
複数のファイルに書き込むときはどうする?
2023/02/24(金) 11:39:24.82ID:/JDec9CR0
だいたいCGIっていうのが終わってる
ファイルサイズが100GBあったら
ロック時間は100GBのファイルコピーの時間分になる
多数のアクセスでスケールしない
2023/02/24(金) 11:44:39.76ID:62b5PWzyM
>>732
ファイルのサイズは1MB程度までと考えています。

>>731
複数ファイルの場合、mkdir "X" で排他性世を行なっている間に、
同じことを繰り返せばいいと思います。
2023/02/24(金) 11:44:56.50ID:2YdGe9kz0
そんなやり方推奨せんけど
rename(2)の上書きはアトミックにできるから先に消すのは悪手
2023/02/24(金) 11:45:39.89ID:62b5PWzyM
>>731
>いくつもある穴の一つを指摘しただけだ
単一ファイルの場合で、サイズが十分小さい場合には、他に穴はないのでは
ないでしょうか。
2023/02/24(金) 11:47:55.10ID:62b5PWzyM
>>734
renameに関しては、どういう意味か分かりませんが、もし、Aを先に削除したく
ないのであれば、
・AをCに改名後、BをAに改名。
・sync(?)などで、ストレージに本当に書き込まれるまで待機。
・Cを削除。
で良いのではないでしょうか。
ただ、余り意味は無いと思われます。
2023/02/24(金) 13:37:04.58ID:igKefKVx0
>>726
解決策を考える前に要件を固めたほうがいいよ

急にcgiや排他制御が出てくるけど
同時実行を含めてどういう粒度でどういう操作をサポートする必要があるのかによって
更新方法も排他制御の方法も考え方が変わってくる

flush前のOSダウンに備えるだけなら更新内容が復元できるだけの情報を
ジャーナルとして書き出しflush完了を確認してからファイルを更新すればいい
比較的新しめのファイルシステムはそういう機能を持ってる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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