2016年08月24日

通信料+スマホ 2年縛り、やっぱり高いわーなんとかしてー

もし携帯料金の2年間の総額表示が義務付けられたら - ピコシムのブログ

毎月1万。2年で24万円のお買いもの。

posted by NN Masteroo at 21:41 | Comment(0) | TrackBack(0) | 雑感&戯言

2016年08月21日

2週間おきくらいに温度測定ログを見るのが楽しい。8月8日は昼間の室温で36度に到達していた。

2016-08-21_214419.png

現在室温は32度、湿度66%まだ今年の夏はエアコンなしでいける!!
(一度風通しのいい部屋に逃げて寝たが、それはノーカウントとする)。
posted by NN Masteroo at 21:47 | Comment(0) | TrackBack(0) | 夏〜思うこと (Jun, Jul, Aug)

2016年08月18日

[.net] DateTime.Now の 精度はミリ秒がぎりぎり、マイクロ秒の精度はいい加減すぎる。そこからの精度の高いDateTimeの作り方。

C# time in microseconds - Stack Overflow

DateTime(Date)オブジェクトは long 型の Ticks の数によって一意に決まりますが、この DateTime.Ticks が 実際の時間の経過に対して マイクロ秒のオーダーで 追従していないことが発覚しました。

DateTimeオブジェクトを HH:mm:ss.fff の初期式で表示すると 最後のミリ秒の数値が以下
11:15:59.121
11:15:59.123
11:15:59.123
11:15:59.123
11:15:59.123
11:15:59.126
のように
123ミリ秒の表示が続くことが結構あったのですが、マイクロ秒の精度が十分にあるStopWatchオブジェクトで経過秒数を見ると DateTime.Now はミリ秒のオーダーからして精度不足という事実が分かりました。

しかしこれ DateTime の精度が悪いのではなく、Now で生成するときのロジックがミリ秒近辺の精度を無視して適当に時刻を生成しているようです。

そこで以下のようなプログラムを書いて検証してみました。

Module Module1
Sub Main()
Dim sw As New System.Diagnostics.Stopwatch()
Dim fw As New System.IO.StreamWriter(Format(DateTime.Now, "yyyyMMdd_HHmmss.fff") & ".txt", False)
Dim sb As New System.Text.StringBuilder(50 * 3000)
Const LC As Integer = 30000

sw.Restart()
For i As Integer = 1 To LC
sb.Append(Format(DateTime.Now, "HH:mm:ss.ffffff, "))
Next
sw.Stop()
Dim msg As String = String.Format("{0}ticks,{1}msで{2}個のDateTimeを生成", sw.ElapsedTicks, sw.Elapsed.TotalMilliseconds, LC)
fw.WriteLine(msg)
fw.WriteLine(sb.ToString)
sb.Length = 0
fw.Flush()
fw.Close()
fw.Dispose()
Console.WriteLine(msg)
Console.In.ReadLine()
End Sub
End Module


上記のプログラム実行にて生成された3万個の時刻を重複を省いたところ以下のように取得できました。(25個の異なる時刻でした)
マイクロ秒の位置の数値がかなり適当であることはよくわかるでしょう。(ほぼ1ミリ秒の間は常に同じ時刻となっている)
83649ticks,23.8003msで30000個のDateTimeを生成
22:00:37.188515
22:00:37.189517
22:00:37.190517
22:00:37.191519
22:00:37.192520
22:00:37.193521
22:00:37.194523
22:00:37.195524
22:00:37.196526
22:00:37.197526
22:00:37.198528
22:00:37.199529
22:00:37.200530
22:00:37.201532
22:00:37.202533
22:00:37.203534
22:00:37.204535
22:00:37.205536
22:00:37.206537
22:00:37.207539
22:00:37.208540
22:00:37.209541
22:00:37.210543
22:00:37.211545
22:00:37.212545


これを以下のように、時刻の初期値は DateTime.Now であるものの、
そこから先は 正確なタイマーを使って 時差を .AddTicks していくことでマイクロ秒オーダーの正確さを
実現できました。オブジェクトはDateTime のまま、精度向上です。
赤字が修正箇所。TimeSpanのTicksは一般化されたものであり、マシン個別のStopwatch.GetTimestampの Ticks の数値は互換性がないのでそれをアジャストするロジックが入ります。

Module Module1
Sub Main()
Dim sw As New System.Diagnostics.Stopwatch()
Dim fw As New System.IO.StreamWriter(Format(DateTime.Now, "yyyyMMdd_HHmmss.fff") & ".txt", False)
Dim sb As New System.Text.StringBuilder(50 * 3000)
Const LC As Integer = 30000
Dim startDt As DateTime = DateTime.Now
Dim startTick As Long = System.Diagnostics.Stopwatch.GetTimestamp

sw.Restart()
For i As Integer = 1 To LC
Dim addTick As Long
addTick = CLng(TimeSpan.TicksPerSecond * (Stopwatch.GetTimestamp - startTick) / Stopwatch.Frequency)

sb.Append(Format(startDt.AddTicks(addTick), "HH:mm:ss.ffffff, "))
Next
sw.Stop()
Dim msg As String = String.Format("{0}ticks,{1}msで{2}個のDateTimeを生成", sw.ElapsedTicks, sw.Elapsed.TotalMilliseconds, LC)
fw.WriteLine(msg)
fw.WriteLine(sb.ToString)
sb.Length = 0
fw.Flush()
fw.Close()
fw.Dispose()
Console.WriteLine(msg)
Console.In.ReadLine()
End Sub
End Module


この結果は 「63922ticks,18.1875msで30000個のDateTimeを生成」で、3万個のうち1万5千個は異なる時刻を生成できました。( 書式を ffffff(1マイクロ秒の精度) から (0.1マイクロ秒の精度の)fffffff にすると 3万通りの時刻を生成できました)。
なお、生成速度はばらつきがあるので 「精度が高いのに速い」という事ではありません。

fffffff が.net の DateTimeに対して Format 指定可能なもっとも細かい単位 の 1Tick (=100 nano second = 0.1 マイクロ秒) となります。

posted by NN Masteroo at 21:36 | Comment(0) | TrackBack(0) | アプリケーション開発ネタ

2016年08月17日

クラシック音楽面白いのう、やっぱり

〜クラシック音楽のリスナー以外へ贈る〜 様々なポピュラー音楽をより深く理解するための基礎教養として「クラシック音楽の正体」を教えます。|小室 敬幸|note

図形的にみるのとはちょっと違うけど楽譜を見ないと弦楽器の演奏している旋律が分からないものとして私が知っているのはチャイコフスキーの悲愴、4楽章の冒頭です。
以下、どちらも音声再生にはIE&MediaPlayer有効にして下さい。
悲愴の謎
↑Midi音声で再生。楽譜あります。まずはこれを見てみる。

悲愴4楽章のトリビア?
↑おそらく個人でヴァイオリンのパート演奏をして録音しています。

図形的かはともかく個人的にはシューベルトのピアノソナタが気に入っております。
posted by NN Masteroo at 22:37 | Comment(0) | TrackBack(0) | 雑感&戯言

2016年08月16日

Windows 10 の強制アップグレード、意外とうまくいっている方々も多い?

親戚筋のお二方のパソコン、どちらもWindows7から強制アップグレードをして10になったものを使っているのですが どちらのパソコンも以前より調子がいいとのこと。

posted by NN Masteroo at 00:31 | Comment(0) | TrackBack(0) | Windows TIPS

2016年08月10日

飲む日焼け止めFernBlockが終了してどうしようと思っていたらShade Factor という後継品が出ているようですね。

http://www.iherb.com/life-extension-shade-factor-120-veggie-caps/68883?rcode=hid850

http://cosme-dy.com/iherb-life-extension-shade-factor

日焼け止めサプリに一定の効果を確認(自分に投入): NN Space BLOG-NN空間ブログ

飲む日焼け止めとか新ジャンルだなーと思ったら、世間的にはもう普通なのかしらん: NN Space BLOG-NN空間ブログ

最近 iHerb.comでよく買うサプリ: NN Space BLOG-NN空間ブログ
メラトニンは本当にすぐに眠くなるので助かります。
posted by NN Masteroo at 22:50 | Comment(0) | TrackBack(0) | 健康・衛生

2016年08月07日

夏の終わりがそろそろ近づく昨今、今日ほど暑い日は無い。

室温が夜の今現在でも32度をキープ。
2016-08-07_214947.png

ここのところここまで暑い日は無かった。 エアコン冷房はまだつかわないで済んでいる。
今年も冷房エアコン使わない夏達成間近。

それにしても熱い。 ここ二日間、お部屋の最低気温(5:30AM頃)が29.5度。こりゃ暑いわ。

そうか、これがいわゆる残暑が厳しいというヤツか!

posted by NN Masteroo at 21:54 | Comment(2) | TrackBack(0) | 夏〜思うこと (Jun, Jul, Aug)

2016年08月04日

PlexTools っていうから「アレ」だと思ったらアレじゃなかった。単なるSSDツールだった。

Plextor SSD Storage Solutions | 製品 | M7V

Plex Tools Professionalとは似て非なる製品。

posted by NN Masteroo at 21:42 | Comment(0) | TrackBack(0) | PC環境構築奮闘記
・おすすめ楽天ショップ1
   trendyimpact楽天市場店

・おすすめ楽天ショップ2
   上海問屋
Powered by さくらのブログ