500 Can't connect to lowreal.net:443 (certificate verify failed) の続きで、ColorMunki Photo + Argyll CMS で環境光を測定してグラフにする (スペクトラムを表示する)

実は spotread の引数に -S を渡せばスペクトラムグラフがそのまま表示される。カンタン。

 sudo spotread -a -v -S -H

とする。

実例

色評価用蛍光灯

東芝 色評価用蛍光ランプ 直管 グロースタータ形 20W 昼白色 高演色形 演色AAA FL20S・N-EDL - 東芝(TOSHIBA)

東芝(TOSHIBA)

5.0 / 5.0

 Result is XYZ: 360.121570 374.175487 320.405309, D50 Lab: 164.087306 -0.473280 -3.889669
 Ambient = 374.2 Lux, CCT = 5150K (Delta E 3.931471)
 Suggested EV @ ISO100 for 374.2 Lux incident light = 7.2
 Closest Planckian temperature = 5052K (Delta E 3.362839)
 Closest Daylight temperature  = 5157K (Delta E 0.230902)
 Color Rendering Index (Ra) = 97.1 [ R9 = 97.4 ]
  R1  = 97.2  R2  = 96.5  R3  = 97.3  R4  = 97.3  R5  = 96.9  R6  = 95.5  R7  = 97.6
  R8  = 98.8  R9  = 97.4  R10 = 92.3  R11 = 96.6  R12 = 92.9  R13 = 96.4  R14 = 98.8
 Television Lighting Consistency Index 2012 (Qa) = 99.0

白熱電球

めっちゃ直線

  1. トップ
  2. tech
  3. ColorMunki Photo + Argyll CMS で環境光を測定してグラフ化

カメラごとのセンサーサイズとピクセル数を入力して、手ぶれを抑えこめるシャッタースピードの限界や、回折ボケが発生しはじめるF値などを求めるペライチを作った。

実は前から別の形で作ってあったんだけど、久しぶりに触ると自分でもよくわからん感じだったので説明を増やしたりした。実装も Vue.js を使ってみるように変えたりした。

例えば EOS 1D X Mark II と EOS 7D Mark II はどちらも約20Mピクセルで、センサーサイズがフルサイズとAPS-Cという差がある。

すると1ピクセルあたりの大きさに結構な差があり、APS-C では手ぶれを許容できるシャッタースピードや小絞りボケの開始F値に厳しいことがわかる。

用途

レンズの購入検討などで他人の作例を見るとき、ピクセル等倍で見たりすることも稀にあるわけですが、このとき撮影条件によっては性能が生かされておらず参考にならないことがあります。この計算結果を目安にexif情報を見ると、参考になるかどうか判断できます。

レポジトリ

このレポジトリで作業しているので、機種が足りないとか、そもそも実装とかおかしくない?みたいなのがあれば指摘していただけると幸いです。

  1. トップ
  2. tech
  3. カメラごとの最大絞り値や手ぶれを許容できるシャッタースピード

8K とか、あるいはその周辺で VR ってのは福祉なわけ。映像はまだまだ発展途上なの。歳をとって寝たきりになっても旅行を体験したいでしょう。ただ生きているだけでは辛い。

今の会社は2012年1月1日入社ってことになってるので、今年で6年目になる模様。結構続いてる。

年末の、ちょうどかかりつけの小児科が休みになった翌日から子どもが高熱(一時的に39℃超、その後38℃超)を出し、おさまらないので休日夜間急患診療所に(妻が)連れていったところインフルエンザと診断されてタミフルが処方された。

子どもは2日ぐらいには解熱してやたら元気になったが外出するわけもいかず、急患診療所は3日分しか薬を処方できないのにタミフルは5日間飲み続ける必要があるという制約があったり (年末年始のような長期休暇時には急患診療所に再度行かないといけない)、それが終わっても保育園登園のためにはかかりつけ医に登園許可証を書いてもらう必要がありかなり面倒くさい。

ということで実家に帰ったりする予定をキャンセルし、年末年始は完全にひきこもっておりコンビニぐらいでしか外にでなかった。プラレールの技術力が上がってきた。

とりあえずは大人が発症しなかったのと痙攣が起きなかったのは不幸中の幸い。


タミフルといえば異常行動が有名だけど、うちの子供も若干様子がおかしかった。プラレール組みたてながら悪寒?っぽい動きをしたかと思えば「オバケがいた」と言い出したり、一時的にハイテンションになったりしていた。実際にこれが副作用かどうかは微妙だけど「これがタミフルのチカラか〜」と思った。あとたぶん副作用で下痢をしていた。

さくらのVPSの1GB HDDプランから、2GB SSD プランに移行してしばらく経過した。Google のサーチコンソールで見た感じだと全体的にスピードが上がって、なおかつ安定している。

  1. トップ
  2. tech
  3. VPSのSSD化の効果

接続しようとしても即座に onclose が呼ばれてしまう。しかもこのブラウザの onclose イベントには code プロパティも reason プロパティも存在してなくて原因がわからない。

  • サーバサイドでは 400 を返している
  • wss (TLS 経由) もダメ

備考

Kindle Paperwhite のブラウザはうっかり alert() を無限ループさせると端末再起動しかない。しかし再起動ダイアログが alert() のダイアログの下に出てしまう。

  1. トップ
  2. tech
  3. Kindle Paperwhite のブラウザ(体験版)のWebSocketがおかしい(未解決)

  • 健康になりたい
    • 歩く時間を増やす

ref.

失敗例

↑ つまり失敗しているということである。具体的なことなく「なりたい」では目標は達成できないという例

日記を読みかえしてみたら今年もいろいろやっていた。年末にせめて自分で自分を承認してあげたい。おおまかには

  1. 高周波関係
  2. アンテナアナライザ製作
  3. キーボード製作
  4. 3D モデリング

の順に興味がうつりかわり、同時にウェブ技術とかNC切削とか、普段通りという感じのこともやっていた。振り替えってみると思ったより密度高く生きてるが、主観的にはそうでもないというかやる気がなさすぎて困っているという実感がある。なぜだろう……

ウェブとか HTTP/2 関係

h2 対応とか、このウェブサイトの最適化を結構やっていた。ハードウェア触る気力がなくなると、ノートPCだけでぼーっと最適化するみたいな流れ…… ウェブ技術はなんというか、仕事じゃなければあんまり気を張らなくても実装できるので、とりあえずやっておくというか、良い言いかたをすれば癒し的側面がある。

サーバサイドで Mathjax するあたりとかは結構がんばったし効果が高かった。

h2 対応のために h2o を導入したので、それ関係のエントリがかなり多い。

類似エントリみたいな、ちょっとアルゴリズムよりのこともやってみた。ただ実装するというより SQLite にこだわって工夫してやってみたところは良かった。仕事で SQLite 使うことはないので役には立たない。アルゴリズムの実装がものすごく苦手なんだけど (こういうこと言うとバカにされまくる……)、ちょっと頑張った例。TF-IDF なんてクソみたいに簡単なアルゴリズムではあるが……

仕事だと分業のおかげで、こういう上から下まで一貫してチューニングするみたいなのはやる機会がない。

おうちハック的なのもやっている。

アンテナアナライザなど高周波関係

デジタルSWR計。アンテナアナライザへの布石。

アンテナアナライザ関係。いろいろ勉強になっておもしろかった。 今年前半では一番大きなプロジェクトだったように思う。数学苦手なのだけれど面白いなと思えたところが地味な収穫かもしれない。

スペアナ最高に楽しい。でも最近高周波回路やってなくてあんまり起動してない……

キーボード関係

ヤパチーからの流れで自作して、builderscon で発表させてもらった。今年後半の主なプロジェクトとなった。結果的には、カンファレンスできっかけをもらってカンファレンスのトークに還元した感じになって主観的には良かった。

その他組み込みや電子工作

ESP8266 結構触ってたなという感じ。安くなると夢が広がる。

ebay とかで買ったやつをとにかく動かすシリ〜ズみたいなのをやってた。意外と得るものが多い。そのときそのときで触ってる環境で動かしてるのでプラットフォームに一貫性がない。

ioctl を Ruby から呼ぶのを割とやってて、書いてないけどこれ以外にも SPI を Ruby でやるとかもやってたりした。Ruby は IO 処理書くのがかなり楽なのと全体的に可読性が良く、ビルトインメソッドが充実しているので「パフォーマンスはともかく理解しやすいコードを書く」みたいなときに Ruby で書くことが多い。

gem とか使わないとダメになってくると他の言語に逃げがち。gem、クオリティ低いものが大量にあって、どれを使うべきか?自分で実装すべきか?とか悩んでるうちに1日終わる。テキトーに動かしたいときはほんと時間の無駄。

消費電力可視化もいろいろやってみたが、今のところ実用に至ってない。

急に C++ と親密になって好きになった。組込みなら絶対 C++ で書きたい。

mbed 関係。結構さわったしコードも読んだ。

GPS DO を途中までつくった感じ。完成してない (必要性の無さに気付いて、やる気をうしなってしまった)

CNC / PCB Milling 関係

いろんなことで、かなり役に立っている。元はとったな〜というぐらいの気分でいる。grbl からmachinekit (beaglebone black) への移行が主なトピック。machinekit を収める筐体作りがまだ途中。

知見はかなり溜ってきた。

3D モデリング

Fusion 360 導入で可能性がとてもひろがった。全く新しい分野の技術習得という意味では今年一番価値があったかもしれない。拘束によって作図するのはとても気持ちいい。

3D プリンタがない (置く場所がない) のが悩み。欲しんだけどなあ。

その他

全く分類できないもの

cmake はプログラミング言語ってことはわかったけど結局役に立ってない。相変わらず他人の書いた CMakefile.txt は読む気がしない。

  1. トップ
  2. tech
  3. 今年やったことを自分で承認する

表題の通りでハマってしまった。

各ソフトウェアのバージョン

$  sudo rabbitmqctl status
...
{rabbit,"RabbitMQ","3.6.6"}
...
$ cat /usr/lib/erlang/releases/18/OTP_VERSION 
18.3

rabbitmq.config

{versions, ['tlsv1.2', 'tlsv1.1', tlsv1]}

接続確認

openssl s_client で接続確認してみる。

tls1.2

$ openssl s_client -connect 127.0.0.1:5671 -tls1_2 < /dev/null


これ問題なかった。

tls1 tls1.1

どっちもなぜか同じように以下のようなエラーになる。

$ openssl s_client -connect 127.0.0.1:5671 -tls1_1 < /dev/null 
CONNECTED(00000003)
139728874526360:error:1409442F:SSL routines:ssl3_read_bytes:tlsv1 alert insufficient security:s3_pkt.c:1472:SSL alert number 71
139728874526360:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:656:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1483074781
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

解決方法

結局これは Erlang の ssl ライブラリの問題らしく、基本的には Erlang のバージョンをあげる必要があるっぽい。しかしRabbitMQ 3.6.1 / Erlang 18.3 TLS insufficient security failures からリンクがある通り以下のようにするとうまくいった。

                  {versions, ['tlsv1.2', 'tlsv1.1', tlsv1]},
                  {ciphers, ["ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384",
                             "ECDHE-ECDSA-AES256-SHA384","ECDHE-RSA-AES256-SHA384", "ECDHE-ECDSA-DES-CBC3-SHA",
                             "ECDH-ECDSA-AES256-GCM-SHA384","ECDH-RSA-AES256-GCM-SHA384","ECDH-ECDSA-AES256-SHA384",
                             "ECDH-RSA-AES256-SHA384","DHE-DSS-AES256-GCM-SHA384","DHE-DSS-AES256-SHA256",
                             "AES256-GCM-SHA384","AES256-SHA256","ECDHE-ECDSA-AES128-GCM-SHA256",
                             "ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES128-SHA256","ECDHE-RSA-AES128-SHA256",
                             "ECDH-ECDSA-AES128-GCM-SHA256","ECDH-RSA-AES128-GCM-SHA256","ECDH-ECDSA-AES128-SHA256",
                             "ECDH-RSA-AES128-SHA256","DHE-DSS-AES128-GCM-SHA256","DHE-DSS-AES128-SHA256",
                             "AES128-GCM-SHA256","AES128-SHA256","ECDHE-ECDSA-AES256-SHA",
                             "ECDHE-RSA-AES256-SHA","DHE-DSS-AES256-SHA","ECDH-ECDSA-AES256-SHA",
                             "ECDH-RSA-AES256-SHA","AES256-SHA","ECDHE-ECDSA-AES128-SHA",
                             "ECDHE-RSA-AES128-SHA","DHE-DSS-AES128-SHA","ECDH-ECDSA-AES128-SHA",
                             "ECDH-RSA-AES128-SHA","AES128-SHA"]},
                  {honor_cipher_order, true},
https://gist.github.com/ae6rt/2fdcc46119821cf490c8f3c444bd11d4#file-rabbitmq-config-L58

ref

  1. トップ
  2. tech
  3. RabbitMQ に TLSv1.1 で接続しようとしても tlsv1 alert insufficient security と言われる