pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


Macbook pro 2016を出先のプロジェクター等につなぐためのVGA/HDMI変換ケーブルを探す

Macbook pro 2016で困ることの一つは出先でのプロジェクター接続。

以前のモデルならHDMIを標準装備していたから、あとはminiDisplayport→VGAな変換ケーブルだけを持参していればよかった。

でも 2015 以降の Macbook と 2016 以降の Macbook pro は USB-C だけなので、出先のプロジェクターの使用を考えるとUSB-C→HDMIとUSB-C→HDMIの2種類の接続を準備しておくことが必要です。

1つで全て済ませるか、それとも2つ買うか?

できれば1つのアダプタがHDMIVGAの両方の出力に対応しているとありがたいです。持ち運ぶ機器が減ります。

しかし all in one なアダプタはディスプレイ出力以外の機能(電源アダプタ接続用のUSB-C、周辺機器接続用のUSB-A、LANアダプタなど)も含まれていることが多いので割と大きめの周辺機器になってしまいます。

さらに all in one なアダプタは選択肢が少なく、しかも高価です。このためケーブルの断線等が起きると非常にイタいですね。

ならば単機能のアダプタを2つ持ち歩くほうがよいかもしれません。

Macbook pro 2016 に使えそうなマルチアダプタでVGAが出せる製品は?

ざっと探してみると、手頃な価格で入手できそうなのは下記2製品ですね。ほかにもいくつかありそうなのですが、Macbook Pro 2016 への対応状況を調べるのが面倒くさいのです。。。

デル製アダプタ - USB-C - HDMI / VGA / イーサネット / USB 3.0 (DA200)

Amazon のユーザーレビューを見ていると Macbook pro 2016 で使えたという話が出ていました。マルチアダプタにしてはコンパクトなので持ち運びには良さげです。

ただし本体に直付けのUSB-Cが断線しやすいというレビューもあるので、取り扱いには要注意かも。頻繁に抜き差しする場合には向かない感じです。


USB-C to HDMI / VGA / Ethernet / USB Multiport 4K UHD Adapter (Thunderbolt 3 Port Compatible)

こちらも Amazon のレビューなどを見ていると Macbook pro 2016 で使えたという話がでています。価格は手頃だけどモノは大きめ。持ち歩き用には若干憚られるサイズかも。

またHDMIは30Hzということなので、画面の書き換えが煩雑な処理には向かないですが、通常のオフィスワークなら問題なさげ。

LANアダプタ機能はドライバのインストールが必要だそうです。


単機能のアダプタにはどんなものがあるか?

単機能のアダプタはたくさんありますので、あえてリストアップしなくても良さげです。いずれも2000円前後で買えるようです。

mitmproxy をBASIC認証付きで利用する

mitmproxyはブラウザとウェブサーバの通信内容を調査するときにとても便利なツールですよね。手元の環境で自由に上げ下ろしできるので、とても助かります。

さて、とあるHTTPクライアントアプリ(ネイティブアプリ)を試験するときに認証付きのHTTPプロキシとの組み合わせを検証する必要が出てきました。こういう試験のために squid とかをまじめにセットアップするのは工数が見合わないので、もっと楽にやりたい。というわけで、これを mitmproxy でやってみることにします。

準備するもの

mitmproxy

mitmproxy はこのページの release のリンク先からダウンロードできます。macOSLinux 向けの場合は python が必要ですけど、Windows の場合はリンク先から installer や zip をダウンロードするだけでOKです。installer と zip の違いはファイルを自動で配置してくれるかどうか、だけです。だから通常は zip で良いのではと思います。私の場合はこの手の類のポータブルなバイナリは Google Drive に放り込んでおき、どの作業環境からでもすぐに使えるようにしてます。
mitmproxy - home

htpasswd ファイル

一応真面目に検証したいので、htpasswd ファイルを作ります。原則的には apache の htpasswd コマンドで作るのですけど、ウェブサービスで htpasswd が作れるものがあるようですから、そういうのを使ってもよいとは思います。ただしウェブサービスを使う場合は、普段使いのパスワードとは違う文字列を用いることは必須ですね。

なお、パスワードファイルを作らなくても良い方法もあるにはあります。認証は要求されるけれど、何を入れても通る認証、というモードです。ただしこれは私の目的には合わないのでスルーします。

実行方法

Windows の方は mitmweb.exe --htpasswd パスワードファイル と指定すればOKです。これで mitmproxy が認証付きで動作します。

Internet Information Server を完全停止させる手順

自分用のメモ

停止

net stop WAS

開始

net start W3SVC

停止と開始が違う理由

IIS は WAS の上に W3SVC が乗っているので、停止のときは WAS を止めれば全部止まる。

開始のときは W3SVC を実行すれば WAS 含めて起動する。


開始または停止の Web サーバー (IIS 8)

OpenWRTの代わりにLEDEのRasPi3向けパッケージを入れてみた

けど結論から言えば自分の要件には合わんなコレ。

まず、そもそもの話からいうと、LEDEはOpenWRTから fork したプロジェクトらしいです。
LEDE Project: Welcome to the LEDE Project

で、OpenWRT では RasPi3 向けのインストールイメージが出てこないのですが、LEDEでは RasPi3向けのイメージが出ておる。
https://lede-project.org/toh/views/toh_fwdownload

こりゃええなあと思って入れてみたのですが、WPA-EAP関連のパッケージが全く見当たらんので自分の要件に合わなすぎ。

PebbleのBluetooth接続が不安定になったのでファクトリーリセットをかけてみた→安定したかも

Pebble TimeのBluetooth接続が頻繁に切れてしまい、通知が受けられないことが出ました。そこでファクトリーリセットをかけたら安定したような気がするので、手順をメモとして残す。

ファクトリーリセットの方法

Pebbleのファクトリーリセットの方法は2種類ある。

  • メニューから選んでリセットする方法
  • 左ボタン、右上ボタン、右中ボタンを同時に長押しする方法

どんなときにファクトリーリセットが必要か

  • Pebbleをクリーンな状態にしたいとき
  • Pebbleをだれかに譲るとき

ファクトリーリセット後にすべきことは?

iOSの場合は Bluetooth 設定から Pebble Time を削除する必要があります。Android も多分同じだと思うけど手元に Android 4.x 以降のデバイスがないからよく分からない。

実際に行った方法は?

私が行って効果が出ているように思えるのは、「左ボタン、右上ボタン、右中ボタンの同時長押し」です。メニューからのファクトリーリセット実行だけではBluetooth接続の不安定さが回復しませんでした。


基本的な話は
help.getpebble.com

さまざまな元素の同位体がどのように崩壊するかを調べてみた

サイエンス系のネタは本当は大好きなのですけどブログではほとんど書いてませんでした。

さて、ちょいと理由があって、どんな元素がどのように崩壊するかの資料を探してみたくなりました。

そもそも元素というの原子核に陽子と中性子があるわけですが、中性子の数によって安定性が違う、というのは高校生の理科でも学ぶ範囲ですよね。安定性が悪い原子核はその安定度に応じて一定の確率で壊れていくわけです。壊れる時にはα粒子(ヘリウム4の原子核)やβ線(電子や陽電子)などを放出するということです。

そして安定的なものを安定同位体、不安定なものは放射性同位体と言われます。

さて、放射性同位体がどのように崩壊するか、という一覧の情報は Wikipedia には見当たらないのですが、いろいろ探してみると実はIAEAのサイトにこんな図表がありました。

f:id:pslabo:20170115161145p:plain
Livechart - Table of Nuclides - Nuclear structure and decay data

この図表は縦向きが原子番号順、横向きには中性子数の違いによる同位体が配置されています。スクリーンショットウラン235を選択した状態です。そしてその元素で起こりやすい崩壊の種類によって色分けされています。これをみると安定同位体より質量が重い場合はβ-崩壊になり、質量が軽い場合はβ+崩壊またはα崩壊が起こりやすいように見えます。

こういう可視化が見たかったので、私のニーズにはこれがピッタリ合っていました。

C++Builderの浮動小数点のバイト数と精度を調べてみる

自分用の覚書。

浮動小数点の有効桁数が気になったので調べて表にしてみた。
Subject は C++Builder と書いているけど、Delphi も基本的に同じ。

なお、比較のために Linux gcc の内容も記入している。

結果はこちらの表の通り。
有効桁数は log10(2^2進数桁数) で算出した。

バイト数 ビット数 指数 仮数 2進数桁数 10進数有効桁数
float 4 32 8 23 24 7
double 8 64 11 52 53 15
long double (Windows 64bit, iOS 32bit, 64bit) 8 64 11 52 53 15
long double (Windows 32bit) 10 80 15 64 64 19
long double (Linux 32bit gcc) 12 80 15 64 64 19
long double (Linux 64bit gcc, macOS) 16 128 15 113 113 34

long double について、Windows 32bit だけは拡張倍精度であり、その他は基本的に倍精度です。ただし macOS だけは4倍精度です。

このように、プラットフォームごとに long double のデータサイズが大きく異なることに注意が必要です、。
Win32 の long double のバイト数が大きいのは浮動小数点処理に FPU を使うことにあるようです。
これに対して Win64 は SSE を使っていることで FPU 利用時よりもバイト数が小さくなっているそうです。
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/浮動小数点演算について

Linux の long double が32bitで 12バイトなのは……イマイチよくわからないけど、sizeof(long doble)すると12が返ってくるので、12というのはおそらく事実。ただし指数、仮数に関する一次ソースが見当たらなかったので、この情報は Win32 と Linux64bit の比較から推測しています。 いろいろ調べてみると、データサイズとしては12バイトだけど実際には10バイトしか使っていないらしい。10バイトで処理すると遅くなるからでは、と推測している方がいらっしゃる。

浮動小数点演算ではまった話 - bkブログ
melancholic afternoon



自分が描くコードではこの違いが影響するほどの精度で数値を扱うことをしないので平気だけど、状況によっては問題が出ることもあるだろうから、実数を扱うコードを書くときは気をつけたい点かも。