Rubyのparsletを使って単位と物理定数の両方に対応した計算機 revisited

この記事で単位と物理定数の両方に対応した計算機を適当に作ったのだが、いろいろとイケてない感じだったので一新して作り直した。

今回のは割といい感じにできたのでGitHubにあげました。
見所は、

  • 数学関数対応 (sin,cos,ln,atanh等)
  • MKSA/CGS切り替え対応
  • コマンドラインから使える
  • READMEがある

詳しくはgithubのREADMEをみてください。バグ報告とか要望とかあったら是非教えてくださいな。
GitHub - yutoichinohe/PhysicsCalculator

どこでもMy Macを使ってssh接続

どこでもMy Mac (Back To My Mac)は便利である。リモートの画面共有が簡単な上に、自宅サーバなんかがなくても自宅のマシンに入ったりできる。ただ問題は、画面共有とマウントしかできなさそうなところで、ターミナルだけでできるようなこともわざわざ画面共有してターミナルを開いたりしないとならないというところである。

こういうコマンドをうてば、動的IPアドレスだろうとなんだろうとBackToMyMacがちゃんとフルホスト名を見つけてくれて、うまいこと接続できる。

ssh -2 -6 [user]@[machine name].$(echo show Setup:/Network/BackToMyMac | scutil | sed -n 's/.* : *\(.*\).$/\1/p')

参考にした。
One Thing Well | Remote SSH using Back To My Mac

Macの画面共有、特に踏み台サーバがあるときのvncポートフォワーディング

vncで画面共有ができる。同じネットワーク内なら、MacならFinder/Go/Connect to Server (⌘+K)で出てくるウィンドウでvnc://[host]とかやればつながる。

問題はネットワークが違うとき。例えば、研究所のネットワーク内にあるマシン(machine)にはインターネットにつながってるサーバ(server)を経由しなければならないようなとき。こういうときは上のようにやっても当然ながら(machine)を見つけられなくて失敗する。

(machine)のvncで使っているポート(5900とか)を、(server)を通したsshトンネルで、ローカルマシン(local)のとあるポート(5901)に転送に転送してやればよい。(local)のlocalhost:5901につなぐことで、暗号化されているsshトンネルを通して(machine)とvnc接続ができる。
1. まず(server)、(machine)ともに公開鍵認証でsshログインできるようにしておく。
ここにやり方を書いてある。
SSHの公開鍵認証設定 - yutoichinoheの日記
2. ~/.ssh/configをつくる

~/.ssh/config

Host [machine name]
  User [user]
  ProxyCommand ssh [server name] nc -w 10 [machine host] 22
  LocalForward 5901 [machine host]:5900

Host [server name]
  Hostname [server host]
  Port 22
  User [user]
  Identityfile ~/.ssh/id_dsa

3. つなぐ

$ ssh [machine name]

としておいて、vnc://localhost:5901につなぐ。


参考にした。
ssh で踏み台サーバを経由して画面共有(VNC)する - Qiita
ProxyCommandによるsshの多段接続について -- ぺけみさお
http://mattintosh.blog.so-net.ne.jp/2012-03-03_macosx_vncoverssh

SSHの公開鍵認証設定

普通にsshでログインしようとするとパスワードを聞かれる。パスワードを入力するのは面倒なので、公開鍵認証を使うことにした。秘密鍵さえ盗まれなければ安全でもある。
1. クライアント側で
1.1 鍵を作る

$ ssh-keygen -t dsa
> なんか出てくるからそのままEnterをおす
> パスワードを入力
> 同じパスワードを入力

1.2 秘密鍵パーミッションを変える

$ chmod 600 ~/.ssh/id_dsa

1.3 ログインしたいサーバに公開鍵をコピー

$ scp ~/.ssh/id_dsa.pub [user]@[host]:[tmpdir]

2. サーバ側で
2.1 設定

$ touch ~/.ssh/authorized_keys
$ cat [tmpdir]/id_dsa.pub >> ~/.ssh/authorized_keys
$ rm [tmpdir]/id_dsa.pub

3. クライアント側でつなぐ

$ ssh [user]@[host]
> パスワードを入力

参考にした。
http://e-days.info/2011/05/ssh-keygen/

python環境構築 (OSX 10.10 Yosemite)

デフォルトで入る/usr/bin/pythonを使わない独自python環境を確立したい。

$ brew install pyenv
$ pyenv install 2.7.8

失敗した。zlibというのがいるらしい。ここによると、xcodeの中にあるzlibを使うためにこうすればよいと。

$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install -v 2.7.8
# インストールできるもの
$ pyenv install -l
# インストールしてあるもの
$ pyenv versions

numpy,scipyとか入れるためにAnaconda

$ pyenv install anaconda3-2.0.1
$ pyenv rehash
$ pyenv local anaconda3-2.0.1
$ pyenv global anaconda3-2.0.1

参考になった。