アカウント名:
パスワード:
(#1815773でも言ってるけど)5分に一回、0.01秒を挿入する、…というのを100回繰り返すとかのほうがよくね?上位のNTPサーバが対応すれば、一般の機器はNTPによる修正を受け入れればいいだけになるじゃん。
# この方法だとどういう所で困るんだろ
同感。そもそも、そういう細かい時間に依存してるシステムって、普段から実時間との誤差をどうやって修正してるんですかね?どうやっても絶対に誤差は出るはずだと思うんですけど。NTPか何かで修正してるなら、うるう秒のずれもそれと同じ仕組みで修正すればいいだけだと思うんだけど…。
運用上の話に限定せず、定義から変えてしまえば前者でいいんじゃないか?1秒の長さを変えて調節した時刻を定義して、全てのコンピュータはそれを使うことにする。全てのコンピュータがそれを使っていれば、調整前の時間を知りたくなることはまず無いのでは?調整の期間を十分長く取れば、もともとコンピュータが持ってる時計の誤差よりも小さい調整にすることもできる。正確な時計を内部に持ってるコンピュータは多くないだろうから、対応は上位のNTPだけで済みそうだし。
1秒の間隔自体が問題になることよりも、1分が1秒増えることの方が遥かに問題になるケースが多いと思う。調整前の時刻や、調整前の1秒の間隔が重要な場合には、それを使うためのAPIを用意しておけば必要な人はそれを使えばいいだけだし、そういう特殊なAPIを使うのは、それが必要な一部の分野だけになるから、そうでない分野の人は何も考える必要がない。
この方式だと、UTCからUTに回帰じゃねぇの? とも思ったけど、Wikipediaの協定世界時の項 [wikipedia.org]によると、
閏秒によってずれを補正するようになったのは1972年からである。それまでは地球の自転の変動にあわせて原子時計の周波数を一定値オフセットして世界時の進行に近似させ、必要に応じて0.1秒のステップ調整を行うことで世界時とのずれが常に0.1秒以内になるようにしていた。しかし周波数のオフセット値を毎年調整する必要があり、これは困難なものであった。そのため、1972年から1秒の閏秒による現在の方式に変更された。
ということらしいので、やるとしたら、UTCをさらに調整することになるのかな?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
1.01秒とかにすればいいんじゃね? (スコア:1)
(#1815773でも言ってるけど)5分に一回、0.01秒を挿入する、…というのを100回繰り返すとかのほうがよくね?
上位のNTPサーバが対応すれば、一般の機器はNTPによる修正を受け入れればいいだけになるじゃん。
# この方法だとどういう所で困るんだろ
# mishimaは本田透先生を熱烈に応援しています
Re:1.01秒とかにすればいいんじゃね? (スコア:0)
同感。
そもそも、そういう細かい時間に依存してるシステムって、普段から実時間との誤差をどうやって修正してるんですかね?どうやっても絶対に誤差は出るはずだと思うんですけど。
NTPか何かで修正してるなら、うるう秒のずれもそれと同じ仕組みで修正すればいいだけだと思うんだけど…。
Re: (スコア:0)
定義と実装と運用と (スコア:2, 参考になる)
ntpdは128ms以内であれば1/2000で操作します。閏秒も例外的にそうすればよいですが、その代わり2000秒間は定義上の時刻とずれることになります。後々定義上の時刻を知りたいときに、計算が面倒かもしれません。それでも1秒くらいずれていても気にしないという場合は、面倒な計算をしないということも含め、運用上はありです。ただ、実装としてそれしかないと困るかもしれません。kernel, date, ntpdなどが同じ方式で正しく実装していないと、正確な時刻が知りたい人は困ることになります。
逆に、59秒が2回になっても気にしない。その1秒以外は定義上の時刻とあっている、59秒を2回繰り返す方法をとる、という手もありです。計算も面倒じゃない。すべてに於いてなかったことにすれば計算は楽(考慮しなくてよい)です。ただ、その1秒間の事は記録に残せません。また、時間が過去に戻ります。それが許容できないプログラム(終了時間-開始時間がアンダーフローとか)に気を付けなければなりません。
なんにしても正確な時刻が必要な人(観測系の人とか金融系の人?)は正しく61秒が扱える環境が欲しいわけですが、kernelが対応してもそれを扱えないソフトがあるとバグることに変わりはありません。外部からの入力に関してもそうです。ログに23:59:60.123とかあっても(閏秒の時だけは)エラーにならないとかいろいろあるでしょう。
そして、定義上はどの1秒も1秒としたいでしょう。
といっためんどくさい事から逃れられるのが、UTCはUTに追随しない。差が大きくなったら考える、というもの。
実際UT必要なのは天文系くらいでしょうから(必要ならUTとのオフセット調べればOKだし)それでよいのでは?
Re:定義と実装と運用と (スコア:1, 興味深い)
運用上の話に限定せず、定義から変えてしまえば前者でいいんじゃないか?
1秒の長さを変えて調節した時刻を定義して、全てのコンピュータはそれを使うことにする。
全てのコンピュータがそれを使っていれば、調整前の時間を知りたくなることはまず無いのでは?
調整の期間を十分長く取れば、もともとコンピュータが持ってる時計の誤差よりも小さい調整にすることもできる。
正確な時計を内部に持ってるコンピュータは多くないだろうから、対応は上位のNTPだけで済みそうだし。
1秒の間隔自体が問題になることよりも、1分が1秒増えることの方が遥かに問題になるケースが多いと思う。
調整前の時刻や、調整前の1秒の間隔が重要な場合には、それを使うためのAPIを用意しておけば必要な人はそれを使えばいいだけだし、
そういう特殊なAPIを使うのは、それが必要な一部の分野だけになるから、そうでない分野の人は何も考える必要がない。
この方式だと、UTCからUTに回帰じゃねぇの? とも思ったけど、
Wikipediaの協定世界時の項 [wikipedia.org]によると、
ということらしいので、やるとしたら、UTCをさらに調整することになるのかな?
Re: (スコア:0)
UTの定義(惑星の運行による生活に使用する1秒)は、相容れないもの。
それを無理やり、TAI(UTC)からUTを求めようとするから、うるう秒が必要になる。
ぶっちゃけ、別々に2つの時刻を流してくれたほうが、クライアントは楽。
GPSはTAI(GPS)時刻を使えばよいし、PC時計はUT使えばよい。
ただ、サーバ側で、観測結果を元にUTの時刻生成用のTAIの定義周波数を
変えてしまえばよい気がするが、どのタイミング、どの時点で変更するかは技術+手間の
問題がありそう。
Re: (スコア:0)
Re: (スコア:0)