[過去ログ] スレ立てるまでもない質問はここで 163匹目 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
714(1): (ワッチョイ 5507-ebfy) 2023/02/23(木)22:51 ID:BgVzVA3A0(1) AAS
>>709
無理数って知ってる?
715: (ワッチョイ e310-mLMb) 2023/02/23(木)22:59 ID:gnLhIz6D0(2/2) AAS
分野が違うけど近似計算追求するよりか
H.264のように整数演算でいかに構築するかって方が好き
716: (ワッチョイ 6d68-/+FQ) 2023/02/23(木)23:34 ID:1cQlLW/80(2/2) AAS
欲しいのはたぶん多倍長固定小数点だろ
誤差を十分吸収し得るに足る小数点の位置は
個別のケースによって違うから自分でやるしかないよ
717(3): 709 (ワッチョイ fd10-R6F1) 2023/02/24(金)00:14 ID:6Vzv7gfq0(1/2) AAS
>>713
どこが間違ってるか指摘出来ないお前の方が馬鹿だろ
>>711,714
>>697がどんな計算が必要か分からないが、
数値計算の誤差は掛け算や足し算で積み重なる場合が多い。
平方根をどうしても誤差無く計算したいなら、
計算出来なかった平方根の情報を残したまま出力するプログラムにすれば良い。
三角関数は、オイラーの定理の形式にすれば実装できる。
718(1): 709 (ワッチョイ fd10-R6F1) 2023/02/24(金)00:42 ID:6Vzv7gfq0(2/2) AAS
>>717はオイラーの定理の形式にすれば実装できる場合もあるってことね。
無理な例を上げていちゃもんを付けてくる人がいるから、あらかじめ言っておいた。
誤差の無い掛け算足し算のプログラムを作ろうとしたら、思ったより大変で終わらなかった。
明日仕事から帰って気力があったら続きをやるか。
719: (ワッチョイ cbbb-N4lW) 2023/02/24(金)00:50 ID:wglsxPd20(1) AAS
BigDecimalみたいな配列ベースで実装された数値を使って有理数だけの演算をするならいけるだろうけど質問者が聞いてるのはそんな極めて限定された環境下の話じゃないだろうな
無理数の計算を計算できなかった情報として積み上げるなんて発想もそれをカオス系で使おうなんてNP困難みたいな実質不可能になる予感しかしない
720: (ワッチョイ fd10-j6dJ) 2023/02/24(金)00:51 ID:Q77HdEB50(1/2) AAS
誤差無しの厳密な計算結果を求めたかったんだろうに情報残したまま出力してどうするんだ
721: (ワッチョイ c569-/+FQ) 2023/02/24(金)02:26 ID:8t4u29Gl0(1) AAS
任意多倍長使えば加減乗で誤差出ないの当たり前だろwとっくにライブラリある、自作すんなしw
有理数型なら除でも誤差出ないけど、それはつまり計算出来なかった情報を残してるってことなんだよね
>計算出来なかった平方根の情報を残したまま出力するプログラム
mathematicaでシミュるとか凄い遅そう
722: (ワンミングク MM71-IvAx) 2023/02/24(金)05:39 ID:ta4Sp3FjM(1) AAS
>>718
数学もまともにわからない算数レベルの馬鹿
723: (ワッチョイ 5507-ebfy) 2023/02/24(金)08:12 ID:OehCc09P0(1) AAS
>>717
あのなw
それでマジで誤差のない演算や大小の比較ができると思ってんの?w
724(2): (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:22 ID:62b5PWzyM(1/7) AAS
お話中、失礼します。
RDBMS ほどではないにしろ簡単なデータベースを普通のファイルを使って自作する
場合、もし、ディスクに flush されるまえに OS がダウンしてしまった場合に備える
アルゴリズムはどんなものが考えられるでしょうか?
ファイルは、上書きしなければ、ストレージが壊れるまではそのまま壊れないと仮定してよいと
思うのですが、問題は追加したり、途中を部分的に変更するために、同じファイルに書き込む
時だと思うんです。
725(1): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:27 ID:/JDec9CR0(1/8) AAS
>>724
SQLite3を使え。データベースファイルが単一のファイルだから
普通のRDMBSほどではない簡単なデータベースに使える。
その程度のアルゴリズムも思いつかないようなレベルじゃ
実装なんて到底無理だ。
726(1): (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:28 ID:62b5PWzyM(2/7) AAS
>>724
[案1]
・mkdir "X" 法で排他制御を開始する。他のcgiのインスタンスが処理中は待機する。
・今までのデータファイルAには上書きせずに、ファイルAをメモリーに全部
読み込んでから、一部だけを修正し、新しいファイルBを作成して全部
書き出してしてしまう。
・ファイルBをfflushして、OSのsystem call で(?) sync して、ストレージに本当に
書き込まれるまで待つ。
・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。
・rmdir "X" として、排他制御を終える。
727(1): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:30 ID:/JDec9CR0(2/8) AAS
> ・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。
はい、ここでアウト
ファイルAを削除した段階でOSがダウンするとデータが無くなる
また、複数のファイルに書き込む場合が考慮されていない
な?
728: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:31 ID:62b5PWzyM(3/7) AAS
>>725
>その程度のアルゴリズムも思いつかないようなレベルじゃ
>実装なんて到底無理だ。
726 のようなアルゴリズムはどうですか。
効率は悪いと思いますし、一時的にディスク領域が2倍必要になりますが。
729: (ワッチョイ b5da-BTrK) 2023/02/24(金)11:32 ID:/JDec9CR0(3/8) AAS
信頼性重視なデータベースソフトが
どれもジャーナルという仕組み(アルゴリズムではない)を
採用している理由を考えろ
その程度の適当な方法じゃ実装できねぇんだよ
730: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:33 ID:62b5PWzyM(4/7) AAS
>>727
>ファイルAを削除した段階でOSがダウンするとデータが無くなる
次にcgiを起動した時に、ファイルAが無くなっていて、ファイルBだけが
存在する時には、Bのファイル名をAに改名するところから再開すれば
良いのでは有りませんか。
731(2): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:37 ID:/JDec9CR0(4/8) AAS
いくつもある穴の一つを指摘しただけだ
複数のファイルに書き込むときはどうする?
732(1): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:39 ID:/JDec9CR0(5/8) AAS
だいたいCGIっていうのが終わってる
ファイルサイズが100GBあったら
ロック時間は100GBのファイルコピーの時間分になる
多数のアクセスでスケールしない
733: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:44 ID:62b5PWzyM(5/7) AAS
>>732
ファイルのサイズは1MB程度までと考えています。
>>731
複数ファイルの場合、mkdir "X" で排他性世を行なっている間に、
同じことを繰り返せばいいと思います。
734(1): (ワッチョイ e310-mLMb) 2023/02/24(金)11:44 ID:2YdGe9kz0(1/2) AAS
そんなやり方推奨せんけど
rename(2)の上書きはアトミックにできるから先に消すのは悪手
735: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:45 ID:62b5PWzyM(6/7) AAS
>>731
>いくつもある穴の一つを指摘しただけだ
単一ファイルの場合で、サイズが十分小さい場合には、他に穴はないのでは
ないでしょうか。
736: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:47 ID:62b5PWzyM(7/7) AAS
>>734
renameに関しては、どういう意味か分かりませんが、もし、Aを先に削除したく
ないのであれば、
・AをCに改名後、BをAに改名。
・sync(?)などで、ストレージに本当に書き込まれるまで待機。
・Cを削除。
で良いのではないでしょうか。
ただ、余り意味は無いと思われます。
737(2): (ワッチョイ a301-YJ5W) 2023/02/24(金)13:37 ID:igKefKVx0(1/2) AAS
>>726
解決策を考える前に要件を固めたほうがいいよ
急にcgiや排他制御が出てくるけど
同時実行を含めてどういう粒度でどういう操作をサポートする必要があるのかによって
更新方法も排他制御の方法も考え方が変わってくる
flush前のOSダウンに備えるだけなら更新内容が復元できるだけの情報を
ジャーナルとして書き出しflush完了を確認してからファイルを更新すればいい
比較的新しめのファイルシステムはそういう機能を持ってる
738(1): (アウアウウー Sa49-ebfy) 2023/02/24(金)14:13 ID:p/kCAwBGa(1) AAS
なんでお前ら車輪を発明しようとしてんの?
あるぞそれ
739(1): (オイコラミネオ MM91-4mn0) 2023/02/24(金)14:16 ID:OSyVRWv/M(1) AAS
>>737
>flush前のOSダウンに備えるだけなら更新内容が復元できるだけの情報を
>ジャーナルとして書き出しflush完了を確認してからファイルを更新すればいい
「更新内容が復元できるだけの情報」
として、今までのデータファイルAをまるまるcopyしておいてとっておく方法が考えられます。
copyは効率が悪いので、効率を良くしたのがそれが今回提示しました rename 方です。
ファイルAが大きくなった場合サイズが大きくなる難点がありますが、
サイズが小さいならば最も単純な方法ではないかと考えております。
逆に、ファイルAが大きい場合、「復元できるだけの情報」を小さくする、ということに過ぎ
ないと思われます。
その場合、ファイルAの「部分書き換え」が安全に行なえて、書き換えなかった部分は、
今までのデータがそのまま絶対に安全に残っていることが保証できないといけないと
思われます。
その場合、ファイル単位ではなく「クラスタ単位のアクセス」が必要になるかも知れませんが、
いかが思われますか?
740: (オイコラミネオ MM91-4mn0) 2023/02/24(金)14:51 ID:iKSzXQzLM(1/5) AAS
それから、mkdir "X" 法で排他制御する場合、rmdir "X" で排他制御を終えるまでに
電源断が起きたとき、次に cgi が起動した場合にどう対処するか問題がありますね。
例えば、10分後に別インスタンスの cgi が起動した時にフォルダ "X" が残っていた
場合、恐らく直前の cgi の実行中にトラブルが発生した可能性が高くなります。
その場合、cgiのプロセスを見つけ出して存在していれば kill してから、
仕切り直すことで対処できるかも知れませんが。
741(4): (オイコラミネオ MM91-4mn0) 2023/02/24(金)15:24 ID:iKSzXQzLM(2/5) AAS
>>738
MySQLもPostgreSQLも仕組みがよく分からないので、電源断が起きたとき
どこのどういうファイルがどのような状態になっているかが分からないんです。
それと、テーブル1つに対して3つのファイルが作られると聞きました。
レンタルサーバーでは容量が100GBでも、ファイルの個数が1000個などの上限
が有る場合が多いですし、そもそも、MySQLなどのテーブル数に上限があったり
して難しいんです。
>>737
安いレンタルサーバーでは、Ruby On Railsのような常駐サーバーは使えないので、
cgiしか選択肢が無いと思います。
742: (ワッチョイ a301-YJ5W) 2023/02/24(金)15:29 ID:igKefKVx0(2/2) AAS
>>739
要件を固める前に思いつきであれこれ実装方法を考えても時間の無駄だよ
それと排他制御という言葉で思考停止してるから
どういう制御が必要なのかもう少し考えたほうがいいよ
RDBを知ってるならmkdirでの排他制御だけじゃ穴だらけなわかるよね
743: (スップ Sd03-O7MM) 2023/02/24(金)16:08 ID:CdQVBJsid(1/3) AAS
>>741
vpsにすれば?
上下前次1-新書関写板覧索設栞歴
あと 259 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.027s