新潟開港150周年記念「南極観測船・砕氷艦しらせ」一般公開を実施します! 新潟市
新潟開港150周年を記念して、南極観測船・砕氷艦「しらせ」が新潟東港に来港し、艦内の一般公開を行います。「しらせ」は、南極地域観測協力を行う日本唯一の砕氷艦で、平成21年に就役した2代目「しらせ」としては新潟初入港となります。
北海道で災害支援をしてきた後だそう。キャンセルせずに来てくれたのは素直に嬉しい。
新潟開港150周年記念「南極観測船・砕氷艦しらせ」一般公開を実施します! 新潟市
新潟開港150周年を記念して、南極観測船・砕氷艦「しらせ」が新潟東港に来港し、艦内の一般公開を行います。「しらせ」は、南極地域観測協力を行う日本唯一の砕氷艦で、平成21年に就役した2代目「しらせ」としては新潟初入港となります。
北海道で災害支援をしてきた後だそう。キャンセルせずに来てくれたのは素直に嬉しい。
愛車Crestちゃんのタイヤを交換するので、その他自転車用品をまとめて購入。週末の連休も雨っぽいし、着荷間に合ったら屋根の下でメンテにいそしむことにしよう。
生誕40周年だそーです。ファン...というほどではないけど好きな漫画&アニメ。折角なので行って参りました。
ささやかながら本日の戦利品。
なんか新潟ってオタク成分の多いイベント多くね?(笑)
自宅は築20年の中古で、全面リフォーム済みとはいえ追加で手を入れたい箇所もまだまだある。とにかく持ち家なので自由にできるのが楽しいが、こういうのが楽しくない人は新築を買うのが良いだろう。自分でやれば部品代程度で済むが、手に負えない場合は相応のコストがかかる。
という訳で、キッチンの流しの混合水栓を交換してみた。前にも言ったけど、上水道はDIY初心者向けといえる。
↑元の水栓はシンプルなグレード。見た目は奇麗だが年季モノだろう。冷水の出が悪いのが不便なのである(元栓を交換してみたが変わらず、水栓の問題で確定)。
【最安値挑戦中!最大23倍】水栓金具 INAX SF-HE452SX キッチン用 ワンホールタイプ ノルマーレ 逆止弁 ハンドシャワー付 一般地 [□] |
↑ホームセンターで上記の寒冷地用を購入。前宅にあったシャワー切り替えとホースの引き出し機能は欲しいよね!ということで。もっとお高いのだと、浄水器一体型みたいなのもある。
↑流しの下には温水と冷水の元栓。よほど古い建物でなければ、この辺の構造は大抵こんな感じであろう。
↑元栓を閉める。水栓を全開にする。ナットを回してホースを外す。ホースから水が出るのでタオル敷きましょう。
↑縦長の銅色のナットを回して水栓本体を外す。周りのコルク板は水滴が垂れるのを防ぐため?水を吸いすぎて腐っているようだが...(>_<)
↑外した水栓。パッキンの状態から、やはり相当な年季モノと判明。短期間だがお世話になった。ご苦労さん。
↑水栓を取り外した後の流し台。うっへっへっへ。ぽっかり口を開いてやがるゼ(ぉい)
↑真下からの図。腐ったコルク板は頑張って剥がしたけど、狭くて作業が困難を極め半分ほど残ってしまった。支障はあるまい。
↑新品の水栓一式。機能が多いので部品も多い感じ。
↑台座の金具を取り付ける。増し締めについて取説でもシールでもしつこく指示されている。指示通り締め付ける。
↑水栓本体を差し込む。施工しやすい工夫が随所に施されていて感心することしきり。業者に好まれる事も重要なのかもね。
↑水栓本体を台座にネジ止めして、、
↑クルリとカバーを回転させるとLIXILのロゴ。スマートな構造である。次に外すときに「あれ~?ネジがないよぅ!」って騒ぎそうだが(笑)
↑元栓との接続。ワンタッチ栓を取り付けたら後は差し込む。親切な説明書に従うだけ。簡単。
↑上でお湯と水を混合して一旦下に戻して可動式ホースに送る仕組み。寒冷地用なので水抜き栓になっている。
↑華奢な樹脂パーツが多くて少~し不安になったが、、これで必要十分なんだろうなぁ。
↑ホースが引き出され過ぎないようストッパーを装着。
↑元栓を開いて、お湯と水が期待通り出る事、水漏れない事を確認。最後に蛇口の先を分解して掃除して完了!便利になった。
高速走ってたら轟音と共にドアミラー砕け散った。なんか飛んできたぞ。(。´Д⊂) pic.twitter.com/jqYUgLGi8s
— YamaGw (@yamagw) July 17, 2018
上記の通り、高速走行中のバードストライクによって左ドアミラーが粉砕。鏡面だけでなく角度を調整するアクチュエーターも逝ってしまったので、急ぎ乗れる状態にするためヤフオクで中古のパーツを購入。
こちらが到着ホヤホヤのパーツ君。オーロラモーブ色のは見つからなかったので、ホワイトパール色で我慢。でも美品だった。素晴らしい。塗装部分のパネルを取り外すために鏡面を外してみたところ。
まずは塗装部分のパネルを交換。パネルもツメが折れてる上に傷だらけなので、本当は全部交換したかったんだけど。マイナー色は難儀する。左右ともホワイトパール色にするカスタムはありかなぁ。右側も粉砕した時考えよう(ぉい)
取り外し。ドア部分の小さなパネルを外すだけで、ミラーを固定しているナットにアクセス可能なんだけど、、、
コネクタがドア内張の中にあるので内張も外す必要がある。マンドクサ。マンドクサ。暑いし~。
位置的に内張を完全に外さなくても手が届いたので助かった。ただし猛暑のためブチルゴムがドロドロ。防音材入れる作業とかは夏場は向かないのね。自分が暑いってだけでなく。
古いの取り外して、新しいの取り付け。ケーブルを固定するピンは取り外し時に割れてしまい(構造的に使い捨て設計?)、両面テープのフックで固定。テープの劣化が不安だけど、外れてもブラーンてなるだけだからいいや(^^;
鏡面を取り付けて完成。角度調整もOK。これで(合法的に)走れるようになった。やれやれ。なお、実用上困らないけど電動開閉の速度が左右で違ってしまった。ロットによって速度が違うのかな?
塗装部分のパネルもコンパウンドで磨いて、見た目はなんとか奇麗になった。ツメが折れてる部分は若干パコパコするけど、落下するようなことはないでしょう。
後からドアパネルにも被害が及んでいたことが判明。鏡面の破片が激しく当たったのか塗装が剥げまくってた。写真では判らないけど、深い傷はスチールまで到達してて放っておくと錆びちゃう。塗装薄くね?この車。
仕方ないので深い傷についてタッチペンで応急処置。この応急処置が恒久的になる可能性も否定できず。ここだけ板金塗装してもな~って位、前も後ろも傷だらけだったりするので(苦笑)
では、死んでしまったであろう鳩に黙祷を。。。
PHPとはいってもネイティブの浮動小数点数型をそのまま使ってるのは間違いないのでC言語で同じ事やってみた。C言語らしくバイト列のHEXダンプを追加した、以下のようなコードを実行致します。
#include <vcl.h> #pragma hdrstop #include <tchar.h> #include <stdio.h> #include <stdlib.h> void test(double v) { unsigned long long *p = (unsigned long long *)&v; printf("%f\r\n", v); printf("%llx\r\n", *p); printf("%d\r\n", (int)v); } int _tmain(int argc, _TCHAR* argv[]) { puts("----"); test(0.201 * 1000); puts("----"); test(2.01 * 100); puts("----"); test(20.1 * 10); puts("----"); test(201); getchar(); return 0; }
以下のような結果になるわけです。
---- 201.000000 4069200000000000 201 ---- 201.000000 40691fffffffffff 200 ---- 201.000000 4069200000000000 201 ---- 201.000000 4069200000000000 201
やはり「0.201 * 1000」と「2.01 * 100」の結果は、内部的には異なる値になってるようだ。怖いねぇ。怖いから俺寝る。。。では何の解決にもならんので追試してみた。ついでにfloatの場合も試してみることにする。
#include <vcl.h> #pragma hdrstop #include <tchar.h> #include <stdio.h> #include <stdlib.h> int _tmain(int argc, _TCHAR* argv[]) { puts("----"); double x = 0.201 * 1000; double y = 2.01 * 100; unsigned long long *xp = (unsigned long long *)&x; unsigned long long *yp = (unsigned long long *)&y; printf("x=%f\r\n", x); printf("x=%llx\r\n", *xp); printf("y=%f\r\n", y); printf("y=%llx\r\n", *yp); if(x == y) { puts("x == y"); } else { puts("x != y"); } puts("----"); float x2 = 0.201 * 1000; float y2 = 2.01 * 100; unsigned long *xp2 = (unsigned long *)&x2; unsigned long *yp2 = (unsigned long *)&y2; printf("x2=%f\r\n", x2); printf("x2=%x\r\n", *xp2); printf("y2=%f\r\n", y2); printf("y2=%x\r\n", *yp2); if(x2 == y2) { puts("x2 == y2"); } else { puts("x2 != y2"); } getchar(); return 0; }
---- x=201.000000 x=4069200000000000 y=201.000000 y=40691fffffffffff x != y ---- x2=201.000000 x2=43490000 y2=201.000000 y2=43490000 x2 == y2
やはり「0.201 * 1000 != 2.01 * 100」なのだった。10進でデバッグプリントしてる限り何が悪いのか気づけないのである。浮動小数点数怖い!!なおfloatの場合は人間的な動作となったが、もちろん数値によってはdoubleの201と同じことが起こると考えられる。
浮動小数点数演算で誤差が出るのは当たり前だが、演算結果が「見た感じ同じである」という点で、ちょっとしたワナだよなー思った次第。これが、良くあるパターンで200.999999とかになっててくれれば話は早いのだが。やっぱ寝るか(ぉい
以下のようなコードを実行致します。
<?php function test($v) { var_dump($v); var_dump(intval($v)); } echo("----\n"); test(0.201 * 1000); echo("----\n"); test(2.01 * 100); echo("----\n"); test(20.1 * 10); echo("----\n"); test((float)201); ?>
以下のような結果になるわけです。
>php a.php ---- float(201) int(201) ---- float(201) int(200) ---- float(201) int(201) ---- float(201) int(201) >
どれも「intval()」に「floatな201」を渡してるにも関わらず、2番目だけ戻りが「intの200」になっちゃう。
var_dump()する限り「floatな201」で違いが判らんのだが、そこまでの演算によって内部的には違ってるんだろうか。
PHPって変数の中身をバイト列でダンプとかできんのか?だれかおせーて(>_<)