4Kモニタを買った

買ったのはコレ

Acer CB281HKbmjdprx www.acer.com

XPS15に接続して使っている。
HDMI接続だと規格が1.2だからか4K出力で30fpsになっちゃうのでしょうがないからDisplayportで接続するしかない。
ただXPS15にはDisplayportは無いので、代わりにUSB-C端子から下記のUSB-C→Displayport変換アダプタを噛ませて接続している。
ちゃんと60fps出力されているもよう(マウスがカクカクしない)

www2.elecom.co.jp

SFTPサーバーをさくっと立ち上げる

開発用にSFTPサーバーが必要になり、とりあえずの接続確認程度が出来れば良かったのでDockerでサクッと構築した。以下その時のメモ

Docker image

これを利用させてもらう。

https://hub.docker.com/r/atmoz/sftp/

以下コマンドで実行

  • SSH鍵を使わずにユーザーIDとパスワードのみの認証(ユーザーID:test_user, パスワード:test_pass)
  • ホスト側のポート122にポートフォワード
docker run --name sftpserver -p 122:22 -d atmoz/sftp test_user:test_pass:::upload

WinSCPで接続確認

  • Host name: localhost
  • Port number: 122
  • User name: test_user
  • Password: test_user

f:id:hkou:20170205105421p:plain

Login押下したら、先程作成したuploadディレクトリにアクセスすることが出来た

f:id:hkou:20170205105631p:plain

Rust1.14でWebAssemblyを出力する(Windows10)

つい先日、Rust 1.14がリリースされた。
1.14の大きな変更点としてWebAssemblyのコンパイルが出来るようになった。
「experimental support for WebAssembly」とのことなのでまだまだ実験段階みたいな感じらしいがとりあえず試してみた。

blog.rust-lang.org

Rust 1.14にアップデートする

rustup経由でのインストールが推奨されている。
細かな手順については、以前書いた以下の記事を参照(rustupでのインストールを追記した)。

hkou.hatenablog.com

1.14にVersionUpされていることを確認する。

>rustc --version
rustc 1.14.0 (e8a012324 2016-12-16)

Visual Studio 2013のインストール

Emscriptenコンパイルをするために必要。
注意点:VS2013(2015とか2017ではない)
自分の環境ではVS2015が既に入ってたので、それで代用しようとしたけど上手くいかなかった。

Microsoft Visual Studio Express 2013 for Windows Desktop Update 5

Download Microsoft Visual Studio Express 2013 for Windows Desktop Update 5 from Official Microsoft Download Center

Visual C++ ツールセットを有効にする

以下のコマンドを実行する。

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64

cmakeのインストール

以下のリンクから、「cmake-3.7.1-win64-x64.msi」をダウンロードしてインストールした。

Download | CMake

インストールされたことを確認

>cmake -version
cmake version 3.7.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Emscriptenのインストール

RustからWebAssemblyを実行するにはversion1.37が必要だが、インストーラとして提供されているのは現時点で1.35なのでインストールしたあとにversion upしてやる必要がある。
とりあえず以下のページからインストーラー「emsdk-1.35.0-web-64bit.exe」をダウンロードしてインストールする。

Download and install — Emscripten 1.36.14 documentation

1.37にupdate

以下のコマンドを実行。コンパイルがはじまるので終わるまで気長に待つ(40分ぐらいかかった)

emsdk update
emsdk install sdk-incoming-64bit

コンパイルが終わったら以下のコマンドを実行して有効にする。

emsdk activate sdk-incoming-64bit

1.37になったことを確認する。

>emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 1.37.1

Rustコードコンパイル

WebAssemblyのtargetを追加

以下のコマンドを実行してtargetを追加

rustup target add wasm32-unknown-emscripten

Rustコード

とりあえずRust BlogのSampleどおりにHelloWorldのコードを書いて保存。(hello.rs)

fn main() {
    println!("hello world");
}

WebAssemblyにコンパイルする

RustBlogのコマンドそのままだと上手く動かなかった。Windowsの場合、linkerを明示的に指定してやる必要がある。(-C linker=emcc.bat の部分)

rustc --target=wasm32-unknown-emscripten -C linker=emcc.bat hello.rs -o hello.html

コンパイルが成功すると以下のファイルが生成される。

f:id:hkou:20170107101002p:plain

WebAssemblyの実行

Chrome Canaryのインストール

現行のChromeだとWebAssemblyに対応していないようなのでChrome Canaryをインストールする。
以下のリンクからインストーラをダウンロードしてインストールする。

www.google.co.jp

WebAssemblyの有効化

Chrome Canaryのアドレスバーに「chrome://flags/#enable-webassembly」を入力してエンター
プルダウンメニューを有効にしてChrome Canaryを再起動する。

f:id:hkou:20170107101432p:plain

Server立てる

htmlとかwasmが生成されたディレクトリで以下のコマンドを実行する。

python -m SimpleHTTPServer

hello.htmlへアクセス

Chrome Canaryで「http://localhost:8000/hello.html」にアクセスする。
hello worldが表示された。

f:id:hkou:20170107101924p:plain

参考にしたページ

Announcing Rust 1.14 - The Rust Programming Language Blog

rustc fails to compile to asmjs on Windows · Issue #38489 · rust-lang/rust · GitHub

RustからWebAssemblyにコンパイルしてみる - fine, later feeling

島根鳥取温泉巡り

らいんの湯

温泉巡りに行く前に入ったスーパー銭湯。もうすぐ閉店してしまうそうです。 f:id:hkou:20161230213837j:plain

木部谷温泉松乃湯

f:id:hkou:20161231144244j:plain

建物のすぐ横を源泉が流れている。温泉成分が地面に付着して鉄色になっている。 f:id:hkou:20161231144338j:plain

源泉。触ってみたけど冷たかった。冷泉らしい。 f:id:hkou:20161231144454j:plain

風呂 f:id:hkou:20161231145523j:plain

薬湯 小浜温泉 才市の湯

温泉津にある共同浴場の一つ。他の共同浴場に入る予定だったが年末なのでどこも閉まっていた。ここだけは唯一開いていた。 f:id:hkou:20161231184037j:plain f:id:hkou:20161231191512j:plain f:id:hkou:20161231193334j:plain

国民宿舎 さんべ荘

今年一番最初に入った温泉。人が居たので湯船の写真はない。色々な種類の露天風呂がありつい長居してしまった。 f:id:hkou:20170101093730j:plain f:id:hkou:20170101103500j:plain

湯原温泉郷 砂湯

川の畔にある混浴露天風呂。人通りの多い道のすぐ横にあり観光客から丸見えなので女性にはおすすめ出来ない。入浴してるのもほぼ全員男性だけだったし。

f:id:hkou:20170101165245j:plain

三朝温泉河原露天風呂

ここも砂湯と同じような混浴露天風呂。砂湯よりは規模が小さい

f:id:hkou:20170101190733j:plain f:id:hkou:20170101193445j:plain

薬師湯・湯村温泉観光交流センター

f:id:hkou:20170102121450j:plain

ゼロから作るDeepLearning買った

機械学習界隈で非常に分かりやすいと評判になっていた本を買いました。

まだ、途中までしか読んでないけど、確かに分かりやすいし説明が丁寧ですね。
この本は最小限のライブラリでDLを構築しようというのが主題なんですが、数値計算ではNumpy、グラフ表示にはMatplotlibを利用しています。
本文で例となるコードが出てくるので読むだけではなく自分で手を動かしたほうがより理解しやすいかなと思うので動作環境を構築してみます。

jupyter

jupyterを新たに構築しようかと思ったが、既にpull済みのtensorflowのimageにjupyterが含まれていたのでそれを流用する。
pandasが入っていなかったようなのでインストールする

コンテナに入る

docker start <container_id>
docker exec -it <container_id> bash

pandasをインストール

sudo pip install --upgrade pip
sudo pip install pandas

jupyterでコード書く

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
%matplotlib inline 

def sigmoid(x):
    return 1 / (1 + np.exp(-x))    

X = np.arange(-5.0, 5.0, 0.1)
Y = sigmoid(X)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)
plt.show()

グラフが表示された

f:id:hkou:20161211095106p:plain

自分に合うプロテインが見つからない

どうも自分はホエイプロテインが身体に身体に合わないようで、トレーニング後とかにプロテインパウダーを水に溶かして飲むと翌日、腸のあたりに違和感があるというか微妙にお腹が痛いような感じになってしまう。そうなると食欲が無くなりあまりたくさんの量のごはんを食べることができなくなり1日に必要なカロリーを摂取することができなくなってしまう。

そもそも何故ホエイプロテインを摂取するとお腹が痛くなるのかというと、ホエイプロテインに乳糖(ラクトース)というものが含まれており、通常はこれを小腸で乳糖分解酵素(ラクターゼ)によって分解して吸収されるのだが、この酵素がうまく機能しない・少ないことにより分解されないまま腐敗して腸を刺激することで腹痛が発生するらしい。

こういった乳糖分解酵素がうまく働かない症状のことを「乳糖不耐症」と呼び、日本人は高い割合で乳糖不耐症であるらしい、おそらくわたしもこれに該当するのだろう。

さてこの乳糖不耐症だが克服する方法は特にないので対策としては「乳糖」を含んでいないプロテインを選ぶということになる。そこで次にわたしが選んだのはWPIタイプのプロテインだ。ホエイプロテインの原料は主に牛乳で、そこからタンパク質を抽出して作られる。この抽出方法によってWPC(Whey Protein Concentrate)、WPI(Whey Protein Isolate)などのタイプがあり、主にタンパク質以外の不純物の割合が変わってくる。

一般的にWPIの方が高純度なタンパク質となっており乳糖のような不純物は入っていない。しかしその分WPCに比べてWPIの方が値段が高い。WPIの中にもCFM製法とかイオン交換法とか抽出方法があるがそれは割愛して、とりあえずバルクスポーツのWPIタイプのホエイプロテインを購入して試してみた。試してみると確かに今までの飲んでいたWPCタイプよりはお腹の調子は良いようだが、まだ微妙にお腹が痛くなる、どうも乳糖だけが原因だけではなかったようだ。そもそもホエイ自体が良くないのかもしれない。

もうこうなるとあとはカゼインプロテインソイプロテイン、エッグプロテインを試してみるしかないが、カゼインプロテインは原料が牛乳だからホエイと同じ結果になりそうだし、エッグプロテインはなかなか無いし高いし卵たくさん食べたときに気持ち悪くなったのでこれもお腹こわしそうだ、消去法でソイプロテインになるのだろうか。

Windows10にRustの開発環境を構築する

Rustのインストール

以下のサイトから「Windows (GNU ABI †) (.msi)」の64bitバージョンをダウンロードする。

https://www.rust-lang.org/en-US/downloads.htmlwww.rust-lang.org

現在のバージョン:rust-1.13.0-x86_64-pc-windows-gnu.msi

VC版は別途「VC++ build tools」のインストールが必要になるらしい。詳細は以下。 users.rust-lang.org

とりあえずHelloWorld

インストールが完了したらとりあえず動くかどうか確認してみる。
Rustのビルドシステムは「cargo」を利用するらしい。

プロジェクトの作成

以下のコマンドを実行

cargo new project_name --bin

実行するとgitignoreなどを含むプロジェクトの雛形が作成される。

プロジェクトのビルド

雛形にHelloWorldのコードが既に入っているので特に何もせず、以下のコマンドを実行してビルドする。

cargo build

target/debugフォルダ直下にEXEが作成される。

実行

exe直実行でも良いが、cargo経由でも実行できる。

cargo run

実行結果

    Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target\debug\project_name.exe`
Hello, world!

RustyCodeをインストールする

エディタはVisual Studio Codeを利用する。
プラグインはRustyCodeを利用する。

marketplace.visualstudio.com

  1. Ctrl + Shit + P でコマンドパレットを開く
  2. ext install RustyCode

Rustup版に変更した

ver 1.14がリリースされ、アップデートするのが面倒だったのでこの際だからとRustをアンインストールして、rustup経由でインストールすることにした。

VC++ Build tools

rustup版(というかmsvc版、rustupでインストールするとmsvcになる)にはVC++ Build toolsが必要になるのでDL。 しかし、既にVisualStudioをインストール済みの為、単体インストールしようとするとエラーになった。
なのでプログラムの追加と削除からVSを選んで「変更」を選択し、C++関係のモジュールを全部選択して追加インストールをした。

rustup

以下のリンクからインストーラーをダウンロードし、実行する。

www.rustup.rs

以下のディレクトリにrustc, cargoなどがインストールされる。

%USERPROFILE%\\.cargo

Rustのソースコードをダウンロードする

rustup経由でダウンロードする。以下のコマンドを実行する。

rustup component add rust-src

RustyCodeのパス設定を変更する

ユーザー設定(setting.json)を開く
以下のように設定した。

//Rust
"rust.racerPath": "C:\\Users\\<username>\\.cargo\\bin\\racer.exe",
"rust.rustfmtPath": "C:\\Users\\<username>\\.cargo\\bin\\rustfmt.exe",    
"rust.rustLangSrcPath": "C:\\Users\\<username>\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\src\\rust\\src",
"rust.cargoPath": "C:\\Users\\<username>\\.cargo\\bin\\cargo.exe"