2020年9月28日(月)
兵庫県神戸水上警察署から電話有り #警察・交通 今日11:27に078-306-0110からスマホに電話が入りました。兵庫県警捜査一課T氏より、ガレコレのサイトにある『秒数時計』についてお伺いしたいとのことでした。
--
秒数時計(修正済み)
http://neconote.jp/tool/sec.html--
普通にJavaScriptで動作するもので、2015年3月7日にサーバーに登録したものでした。ファイルが悪用されたのか、ガレコレを語った犯罪と思ったのですが、そうでは無いということで、ホッとしました。捜査一課ですが、殺人事件でも無いとのことでした。
話をしながら、電話番号をパソコンで調べると、兵庫県神戸水上(すいじょう)警察署と一致するので、尋ねられるままに、お答えしました。インターネットのことは、かなり詳しいので、捜査協力が必要であれば、ご協力します。
http://www.police.pref.hyogo.lg.jp/ps/09suijyou/index.htm プログラミングの時刻はデバイス(パソコン、タブレット、スマホ)の時計から取ってきており、そのデバイスの時計は『NTPサーバ』で校正されています。通信速度も加味されるので、デバイスの時計はかなり正確なはずです。しかし、実際は、自前のWindows10パソコンとiPhoneで、なんと0.5秒ほど差がありました。これにはビックリ。
さて、改めてこのプログラミングを見てみると、まあ、おそまつな内容で、最大1秒近く遅れる可能性があります。その程度のものですが、結構「利用しています」とのお礼の声をいただき、今日までそのままにしておきました。
まずは、初期設定で、0ミリ秒からスタートするものに置き換えました。自前の非力なWindows10パソコンでは、ほぼ正確な値を表示しますが、自前のiPhoneXsMax(iOS13.7)Safariでは、1秒ごとに1ミリ秒ほど増えていきます。setInterval(関数,999)にすると、増加をかなり抑えられることも分かりました。昨年買ったMacでは、iPhoneほどではありませんが、誤差が増加していきます。
setInterval()では、これが限界ということです。
setTimeout()で、誤差を加味して関数を再呼び出しする方法に切り替えました。いい感じで、デバイスの時計との誤差が数ミリ秒以内に収まっています。
--
<script>
window.onload
=
_main;
function
_main(){
/*
時刻表示をここに記述(1ミリ秒程度)
*/
setTimeout(_main,1000-Date.now()%1000);
}
</script>
--
P.S.
インターネット接続していれば、ブラウザからNTP[Network
Time
Protocol]サーバに直接アクセスする方法もありますが、そこまでは不必要でしょう。デバイスの時計とずれることも考えられて、使い方によっては支障も出るでしょう。
P.S.2
デバイスの時刻が自動設定になっているか確認しましょう。
Windows10:設定>時刻と言語>日付と時刻
iPhone:設定>一般>日付と時刻