寒いとiPadが充電されにくい理由

スマートフォンタブレットをはじめ、あらゆるモバイル機器に搭載されているリチウムイオン電池は、外部温度と密接な関係があります。
一般的に約5℃ ~ 35℃の環境では問題なく充電ができますが、約5℃を下回る寒い環境下は電池に好ましくない影響を及ぼします。

理由 その1:電池容量の減少
電池容量が減少すると、電池の連続使用可能時間が短くなります。
電池は、その使い始めには起電力としてやや高めの電圧を出力し、放電を行うにつれて電圧は徐々に降下します。やがてある電圧を境にその低下の度合いが急激なものとなり、電池を電源として動作していた機器は停止に至ります。リチウムイオン電池は、放電終止電圧を2.5Vとすることが多いです。また、外部温度によって次のような放電曲線に差が生じます。
f:id:shinji629:20190117151959p:plain

理由 その2:内部抵抗の上昇
内部抵抗が上昇すると、取り出し可能な電池電圧が低下します。抵抗とは、内部で化学反応が起こる際、その反応が遅いことを意味します。人間に例えると、寒い環境では、寝起きの際、抵抗してベットから出たくない状況と似ています。
科学的には、アレニウスの式で表現されます。
f:id:shinji629:20190117161133p:plain
反応の速度定数 k は、次の値によって変化します。
A :温度に無関係な定数(頻度因子)
Ea :活性化エネルギー(1molあたり)
R :気体定数
T:絶対温度

T(絶対温度)に着目すると、この値が小さくなるとexp内の負の絶対値が大きくなるため、反応速度定数kも小さくなります。
よって、反応が遅くなります。つまり、抵抗が上昇します。

その他の理由として、粘度なども関係すると言われています。温度が高いと粘度が低く、温度が低いと粘度が高い性質があります。
よって、温度が低いほど粘度が上がります。つまり、移動度が下がり、抵抗上昇につながります。

結論として、寒冷地でiPadを使う際には、なるべく部屋をカリフォルニアのようにあったかくして、充電/使用したほうが良さそうです。
きっとAppleの本社が、ロシアやアラスカだったら、-30℃ぐらいでも使用可能なリチウムイオン電池を搭載してくれたかもしれません。

松焼き

二拠点生活を始め、初めて信州で正月を迎えました。
お正月に行われる伝統行事「松焼き」を初めて体験しました。
はじめに、お飾りの松、枝、正月飾りなどをまとめ、火をつけます。
f:id:shinji629:20190107184505p:plain
炭が出来上がったら、お餅などを網にのせて、じっくりあぶり、ご近所のみなさんと談笑しながら、餅を食べる行事みたいです。
受験生の男の子のお婆ちゃんが合格祈願ということでお賽銭を炎の中に投げ、みんなで合格祈願もしました。受かるといいな。
なんかアットホームな気持ちになり、いい一年になりそうな気がしました。f:id:shinji629:20190107184528p:plain
いい感じに餅も焼け、とっても美味しかったです。

dockerをモニタリングする

ここでは、いくつかの無料のツールを使用して、簡単にモニタリングする方法を紹介していきます。

docker stats

docker statsは、dockerに付属するツールでデフォルトでインストールされています。コンテナリソースをLinuxのtopコマンドのようにライブストリームで表示します。使用方法は、 コンテナIDをdocker statsの後に指定するだけです。

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a5b713b0be52        ubuntu:latest       "bash"              3 minutes ago       Up 3 minutes                            keen_nash
$ sudo docker stats a5b713b0be52
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
a5b713b0be52        keen_nash           4.35%               7.172MiB / 7.48GiB   0.09%               9.49kB / 0B         17.4MB / 0B         1
docker events

docker eventsは、コンテナライフサイクルのイベントをモニタリングします。
例えば、コンテナの起動や終了イベントをモニタリングできます。

$ sudo docker events 
2019-01-06T16:28:04.617197272+09:00 container create 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:04.618719113+09:00 container attach 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:04.691576928+09:00 network connect 2c53c1158426b7c0e6dd980104832d0e9f60a14f8291a37e180e68fef4b0ba8c (container=267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca, name=bridge, type=bridge)
2019-01-06T16:28:04.988327654+09:00 container start 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:04.989355465+09:00 container resize 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (height=42, image=ubuntu:latest, name=naughty_lehmann, width=169)
2019-01-06T16:28:12.738333362+09:00 container die 267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca (exitCode=0, image=ubuntu:latest, name=naughty_lehmann)
2019-01-06T16:28:12.831735032+09:00 network disconnect 2c53c1158426b7c0e6dd980104832d0e9f60a14f8291a37e180e68fef4b0ba8c (container=267d241fc270daadea8c2a7dc6c02a2a036652ded242cae0b35dc00388f5fcca, name=bridge, type=bridge)

dieメッセージは、コンテナが実行をストップしたときに表示します。
また、--sinceで時間軸を区切ったりすることも可能です。

$ sudo docker events --since 2019-01-06T16:20:00+09:00
cAdvisor

コマンドラインでも充分モニタリング可能ですが、トレンドなど視覚的に把握したい場合、グラフで表示させるとわかりやすいです。
cAdvisorのDockerイメージをインストール/実行するには、次のコマンドを実行します。
github.com

$ sudo docker run \
>   --volume=/:/rootfs:ro \
>   --volume=/var/run:/var/run:rw \
>   --volume=/sys:/sys:ro \
>   --volume=/var/lib/docker/:/var/lib/docker:ro \
>   --volume=/cgroup:/cgroup:ro \
>   --publish=8080:8080 \
>   --detach=true \
>   --name=cadvisor \
>   --privileged=true \
> google/cadvisor:latest
Unable to find image 'google/cadvisor:latest' locally
latest: Pulling from google/cadvisor
ab7e51e37a18: Pull complete [f:id:shinji629:20190107181924p:plain]
a2dc2f1bce51: Pull complete 
3b017de60d4f: Pull complete 
Digest: sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a
Status: Downloaded newer image for google/cadvisor:latest
bcbd00167aa44dd75dfd948e6dac24907baae81398917e0bf3e38988663c9ad2

http://localhost:8080にアクセスするとこのようなグラフが表示されます。
f:id:shinji629:20190107181924p:plain

雪の結晶

今年もちょっとした発見やメモを投稿したいと思います。
最初の投稿は、雪の結晶です。
朝の最低気温が、マイナス14℃と冷え込んだので、雪の結晶が沢山できていました。
次の3パターンの結晶を見つけることができました。
不思議なのは、半径2メートルぐらいの距離でも結晶の形がマチマチということ。f:id:shinji629:20190105181852p:plain
f:id:shinji629:20190105182140p:plain
f:id:shinji629:20190105182200p:plain
雪の結晶のような偶然の発見を今年も大事にしたいと思います。

Operaがエラーで起動しない時の対処法

普段Firefoxを利用してウェブを閲覧しています。しかし、複数のgoogleアカウントに対して同時にチェックする際には、別のブラウザも利用したほうが都合がいいので、Operaを利用することがあります。

Operaを起動しようとしたら、こんなエラーが表示されました。

$ opera 
[13152:13152:1228/170918.486947:ERROR:process_singleton_posix.cc(321)] このプロファイルは別のコンピュータ (4C-34-88-3D-XX-XX) 上の他の Opera プロセス (8296) により使用されているため、データの破損を防ぐために Opera によりロックされています。このプロファイルが他のプロセスにより使用されていないことが確実な場合、プロファイルのロックを解除して Opera を再起動することができます。

ググっても類似の事例がないので、straceしてみました。するとSingletonLockというファイルが原因であることがわかりました。

$ strace -o opera-strace.log opera
...
readlink("/tmp/.org.chromium.Chromium.f3LQsA/SingletonCookie", 0x7ffdb5f7ec60, 4096) = -1 ENOENT (No such file or directory)
readlink("/home/xx/.config/opera/SingletonLock", "4C-34-88-3D-xx-xx-8296", 4096) = 22
uname({sysname="Linux", nodename="localhost.localdomain", ...}) = 0
readlink("/proc/8296/exe", 0x7ffdb5f7ecf0, 4096) = -1 ENOENT (No such file or directory)

とりあえず、このSingletonLockをどこかに移動させたら、無事Operaが起動できました。

$ mv SingletonLock /tmp

【iOS12】標準アプリ「計測」で物のサイズを測る

iOS 12から標準アプリ「計測」が追加されています。
「AR」(Augmented Reality)=「拡張現実」の機能を使ったアプリで、巻尺などなくても簡単にサイズを測ることができます。

はじめに計測アイコンをタップして、起動します。
f:id:shinji629:20181227224541p:plain
サイズを計りたい物体にカメラを向けると、四角いものの場合、自動的に輪郭を認識し、黄色い枠が表示されます。
そこで、黄色の枠をタップすると縦、横、面積が計算されて表示されます。
f:id:shinji629:20181227225149p:plain
起点を自分で設定し、カメラを移動し終点を決めることもできます。
屋外で試したことはありませんが、サイズの大きなものや離れたモノを計測するには重宝しそうなアプリです。

ある村の人口推移の予測 (Simple Linear Regression: 単回帰)

平成最後の12月も残りわずかになってきました。
人口減少という大きな問題について、小さな村のデータをもとに分析してみたいと思います。
ここに2000年を起点とした5年毎の人口データがあります。

f:id:shinji629:20181227155511p:plain

たったこれだけの情報を利用して、2020年の人口を予測してみます。

回帰分析のうち、単回帰分析というのは1つの目的変数を1つの説明変数で予測するもので、その2変量の間の関係性をY=aX+bという一次方程式の形で表します。a(傾き)とb(Y切片)がわかれば、XからYを予測することができるわけです。

95%信頼区間で計算した途中結果がこちらです。「95%信頼区間」とは、「母集団から標本を取ってきて、その平均から95%信頼区間を求める、という作業を100回やったときに、95回はその区間の中に母平均が含まれる」という意味です。

f:id:shinji629:20181227160403p:plain

グラフにするとこのような右肩下がりです。グラフ中のR^2 は決定係数といいますが、相関係数Rの2乗です。寄与率と呼ばれることもあり、説明変数が目的変数のどれくらいを説明しているかを表しています。ここでは、0.946なので相関関係が大きいと言えます。

f:id:shinji629:20181227160539p:plain

この計算結果をもとに、2020年の人口を予測してみたいと思います。

2020年のIndexを5とします。Y= -80.9*5 + 814 = 409.5

つまり、約410人と予測できます。ただし、実際にはいろいろな要素が人口の増減に関わるので、あくまで目安としてとらえた方がいいです。