NTFS for Mac - Yosemite Free
NTFS for Mac - Yosemite Free
Mac Yosemiteで、NTFSを読み書きする無料のソフトのインストール方法。
(背景)
TOSHIBAのHDD (HD-PD10TK)を利用中、HDDが読み込み専用になってしまった。
MacでNTFSフォーマットの読み書きを無料で(+無期限で)行えるソフトをインストールしたい。
(手順)
1. 「Paragon NTFS for Mac - Yosemite Free」のダウンロード
http://www.paragon-software.com/home/ntfs-mac-yosemite/registration.html?reg_status=ok
2. 誘導に従ってインストール
3. 誘導に従って再起動
4. 再起動すると、「System Preference」の画面で「Paragon NTFS for Mac OS X」というウィンドウ(#####)が自動で開かれる。
「Product state: trial (10 days)」とかいう表示が出ているはず。
その下の「Get Free Serial」をクリックし、誘導されたウェブサイトにメールアドレスを登録。
5. メールアドレスに「Product Key」と「Serial Number」が送られてくる。これらを(#####)のウィンドウに入力し、「Activate」ボタンをクリック。
6. (#####)の最上部が「Product state: Activated」になっていればうまくいっている。
(環境)
Mac OSX 10.10 Yosemite
(余談)
・googleで「TOSHIBA NTFS mac」で検索すると、「Tuxera NTFS for Mac」のページが表示される。
はじめは筆者もTUXERA Disk Manager (15日無料体験版)を利用していたのだが、製品版は31ドルする。
・一方、Paragon NTFS for mac というソフトならば比較的安価である($20)。
この製品版は、Yosemite以外のMac OS (例えば、OS X 10.11 El Capitan)にも対応している。
・Paragon NTFS for Macは、個人での利用に限り無料。
・どうやらTuxeraよりも、Paragonの方が安くて動作も早いらしい。
ipython
(1)図を表示:
ファイル(df_1_with_figure.ipynb)の最初に
%matplotlib inline
と宣言する。
(2)ipythonを起動
$ ipython df_1_with_figure.ipynb
python: pip 8.0.0 のバグ修正
pip が動作しない、壊れた? >> コードを一行修正して解決
(1)環境
python 2.7.11
pip 8.0.0
$ which pip
/Users/my_name/anaconda/bin/pip
(2)不具合
$ pip install -U pip
Traceback (most recent call last):
File "/Users/my_name/anaconda/bin/pip", line 4, in <module>
from pip import main
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/__init__.py", line 15, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/vcs/subversion.py", line 9, in <module>
from pip.index import Link
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/index.py", line 29, in <module>
from pip.wheel import Wheel, wheel_ext
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/wheel.py", line 32, in <module>
from pip import pep425tags
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/pep425tags.py", line 214, in <module>
supported_tags = get_supported()
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/pep425tags.py", line 162, in get_supported
arch = get_platform()
File "/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/pep425tags.py", line 119, in get_platform
major, minor, micro = release.split('.')
ValueError: need more than 2 values to unpack
(3)Stackoverflowを真似て解決。
まさに同じタイミング(数時間差)で同じような問題に遭遇している人を発見。
python - Upgrading to latest pip caused ValueError - Stack Overflow
これを真似て、
/Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/pep425tags.py
の119行目を変更。
変更前のファイル状況
$ cd /Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg/pip/
$ ls -l
total 736
-rw-r--r-- 1 root wheel 10431 20 Jan 17:11 __init__.py
-rw-r--r-- 1 root wheel 9332 20 Jan 17:11 __init__.pyc
-rw-r--r-- 1 root wheel 584 20 Jan 17:11 __main__.py
-rw-r--r-- 1 root wheel 505 20 Jan 17:11 __main__.pyc
drwxr-xr-x 24 root wheel 816 20 Jan 17:11 _vendor
-rw-r--r-- 1 root wheel 11429 20 Jan 17:11 basecommand.py
-rw-r--r-- 1 root wheel 8973 20 Jan 17:11 basecommand.pyc
-rw-r--r-- 1 root wheel 10465 20 Jan 17:11 baseparser.py
-rw-r--r-- 1 root wheel 11286 20 Jan 17:11 baseparser.pyc
-rw-r--r-- 1 root wheel 15921 20 Jan 17:11 cmdoptions.py
-rw-r--r-- 1 root wheel 15621 20 Jan 17:11 cmdoptions.pyc
drwxr-xr-x 26 root wheel 884 20 Jan 17:11 commands
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 compat
-rw-r--r-- 1 root wheel 31715 20 Jan 17:11 download.py
-rw-r--r-- 1 root wheel 25825 20 Jan 17:11 download.pyc
-rw-r--r-- 1 root wheel 7741 20 Jan 17:11 exceptions.py
-rw-r--r-- 1 root wheel 12902 20 Jan 17:11 exceptions.pyc
-rw-r--r-- 1 root wheel 36776 20 Jan 17:11 index.py
-rw-r--r-- 1 root wheel 34211 20 Jan 17:11 index.pyc
-rw-r--r-- 1 root wheel 6137 20 Jan 17:11 locations.py
-rw-r--r-- 1 root wheel 5013 20 Jan 17:11 locations.pyc
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 models
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 operations
-rw-r--r-- 1 root wheel 7210 20 Jan 17:11 pep425tags.py
-rw-r--r-- 1 root wheel 7393 20 Jan 17:11 pep425tags.pyc
drwxr-xr-x 12 root wheel 408 20 Jan 17:11 req
-rw-r--r-- 1 root wheel 156 20 Jan 17:11 status_codes.py
-rw-r--r-- 1 root wheel 414 20 Jan 17:11 status_codes.pyc
drwxr-xr-x 22 root wheel 748 20 Jan 17:11 utils
drwxr-xr-x 12 root wheel 408 20 Jan 17:11 vcs
-rw-r--r-- 1 root wheel 32030 20 Jan 17:11 wheel.py
-rw-r--r-- 1 root wheel 26062 20 Jan 17:11 wheel.pyc
オリジナルをコピーして別名保存。
$ sudo cp pep425tags.py pep425tags_original_my_name.py
$ ls -l
total 752
-rw-r--r-- 1 root wheel 10431 20 Jan 17:11 __init__.py
-rw-r--r-- 1 root wheel 9332 20 Jan 17:11 __init__.pyc
-rw-r--r-- 1 root wheel 584 20 Jan 17:11 __main__.py
-rw-r--r-- 1 root wheel 505 20 Jan 17:11 __main__.pyc
drwxr-xr-x 24 root wheel 816 20 Jan 17:11 _vendor
-rw-r--r-- 1 root wheel 11429 20 Jan 17:11 basecommand.py
-rw-r--r-- 1 root wheel 8973 20 Jan 17:11 basecommand.pyc
-rw-r--r-- 1 root wheel 10465 20 Jan 17:11 baseparser.py
-rw-r--r-- 1 root wheel 11286 20 Jan 17:11 baseparser.pyc
-rw-r--r-- 1 root wheel 15921 20 Jan 17:11 cmdoptions.py
-rw-r--r-- 1 root wheel 15621 20 Jan 17:11 cmdoptions.pyc
drwxr-xr-x 26 root wheel 884 20 Jan 17:11 commands
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 compat
-rw-r--r-- 1 root wheel 31715 20 Jan 17:11 download.py
-rw-r--r-- 1 root wheel 25825 20 Jan 17:11 download.pyc
-rw-r--r-- 1 root wheel 7741 20 Jan 17:11 exceptions.py
-rw-r--r-- 1 root wheel 12902 20 Jan 17:11 exceptions.pyc
-rw-r--r-- 1 root wheel 36776 20 Jan 17:11 index.py
-rw-r--r-- 1 root wheel 34211 20 Jan 17:11 index.pyc
-rw-r--r-- 1 root wheel 6137 20 Jan 17:11 locations.py
-rw-r--r-- 1 root wheel 5013 20 Jan 17:11 locations.pyc
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 models
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 operations
-rw-r--r-- 1 root wheel 7210 20 Jan 17:11 pep425tags.py
-rw-r--r-- 1 root wheel 7393 20 Jan 17:11 pep425tags.pyc
-rw-r--r-- 1 root wheel 7210 21 Jan 09:22 pep425tags_original_my_name.py
drwxr-xr-x 12 root wheel 408 20 Jan 17:11 req
-rw-r--r-- 1 root wheel 156 20 Jan 17:11 status_codes.py
-rw-r--r-- 1 root wheel 414 20 Jan 17:11 status_codes.pyc
drwxr-xr-x 22 root wheel 748 20 Jan 17:11 utils
drwxr-xr-x 12 root wheel 408 20 Jan 17:11 vcs
-rw-r--r-- 1 root wheel 32030 20 Jan 17:11 wheel.py
-rw-r--r-- 1 root wheel 26062 20 Jan 17:11 wheel.pyc
デスクトップに移動させて編集し、それを元の場所に持ってきてoverride。
$ sudo mv /Users/my_name/Desktop/pep425tags.py .
$ ls -l
total 752
-rw-r--r-- 1 root wheel 10431 20 Jan 17:11 __init__.py
-rw-r--r-- 1 root wheel 9332 20 Jan 17:11 __init__.pyc
-rw-r--r-- 1 root wheel 584 20 Jan 17:11 __main__.py
-rw-r--r-- 1 root wheel 505 20 Jan 17:11 __main__.pyc
drwxr-xr-x 24 root wheel 816 20 Jan 17:11 _vendor
-rw-r--r-- 1 root wheel 11429 20 Jan 17:11 basecommand.py
-rw-r--r-- 1 root wheel 8973 20 Jan 17:11 basecommand.pyc
-rw-r--r-- 1 root wheel 10465 20 Jan 17:11 baseparser.py
-rw-r--r-- 1 root wheel 11286 20 Jan 17:11 baseparser.pyc
-rw-r--r-- 1 root wheel 15921 20 Jan 17:11 cmdoptions.py
-rw-r--r-- 1 root wheel 15621 20 Jan 17:11 cmdoptions.pyc
drwxr-xr-x 26 root wheel 884 20 Jan 17:11 commands
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 compat
-rw-r--r-- 1 root wheel 31715 20 Jan 17:11 download.py
-rw-r--r-- 1 root wheel 25825 20 Jan 17:11 download.pyc
-rw-r--r-- 1 root wheel 7741 20 Jan 17:11 exceptions.py
-rw-r--r-- 1 root wheel 12902 20 Jan 17:11 exceptions.pyc
-rw-r--r-- 1 root wheel 36776 20 Jan 17:11 index.py
-rw-r--r-- 1 root wheel 34211 20 Jan 17:11 index.pyc
-rw-r--r-- 1 root wheel 6137 20 Jan 17:11 locations.py
-rw-r--r-- 1 root wheel 5013 20 Jan 17:11 locations.pyc
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 models
drwxr-xr-x 6 root wheel 204 20 Jan 17:11 operations
-rw-r--r--@ 1 my_name staff 7203 21 Jan 09:24 pep425tags.py
-rw-r--r-- 1 root wheel 7393 20 Jan 17:11 pep425tags.pyc
-rw-r--r-- 1 root wheel 7210 21 Jan 09:22 pep425tags_original_my_name.py
drwxr-xr-x 12 root wheel 408 20 Jan 17:11 req
-rw-r--r-- 1 root wheel 156 20 Jan 17:11 status_codes.py
-rw-r--r-- 1 root wheel 414 20 Jan 17:11 status_codes.pyc
drwxr-xr-x 22 root wheel 748 20 Jan 17:11 utils
drwxr-xr-x 12 root wheel 408 20 Jan 17:11 vcs
-rw-r--r-- 1 root wheel 32030 20 Jan 17:11 wheel.py
-rw-r--r-- 1 root wheel 26062 20 Jan 17:11 wheel.pyc
$ pip install -U pip
Requirement already up-to-date: pip in /Library/Python/2.7/site-packages/pip-8.0.0-py2.7.egg
pipは無事に全て完了。
python isochronesのための設定:Open MPI, CMake, mpi4py, MultiNest, PyMultiNest
(1)Open MPI
http://www.open-mpi.org/software/ompi/v1.8/
から openmpi-1.8.8.tar.gz をダウンロード。解凍。
$ cd openmpi-1.8.8
$ ./configure
$ make all
$ sudo make install
(2)CMake
$ sudo port install cmake +gui
(3)mpi4py [これは pymultinest に必要]
$ sudo pip install mpi4py
(4)MultiNest [これは pymultinest に必要]
$ cd
$ git clone https://github.com/JohannesBuchner/MultiNest.git
$ cd MultiNest/build/
$ cmake ..
$ make
[少し待つ]
# ここまで/Users/my_name/MultiNestへのインストールが完了。
# さらにPyMultiNestのための準備を行う。
$ cd ../lib/ #[MultiNest/lib に移動]
$ ls -l
-rwxr-xr-x 1 my_name staff 701512 19 Jan 19:21 libmultinest.3.10.dylib
-rw-r--r-- 1 my_name staff 814136 19 Jan 19:21 libmultinest.a
lrwxr-xr-x 1 my_name staff 23 19 Jan 19:21 libmultinest.dylib -> libmultinest.3.10.dylib
-rwxr-xr-x 1 my_name staff 715016 19 Jan 19:20 libmultinest_mpi.3.10.dylib
-rw-r--r-- 1 my_name staff 832704 19 Jan 19:21 libmultinest_mpi.a
lrwxr-xr-x 1 my_name staff 27 19 Jan 19:20 libmultinest_mpi.dylib -> libmultinest_mpi.3.10.dylib
# /Users/my_name/MultiNest/lib の中身を /usr/local/lib/ にコピーする。
$ sudo cp libmultinest.3.10.dylib /usr/local/lib/
$ sudo cp libmultinest.a /usr/local/lib/
$ sudo cp libmultinest.dylib /usr/local/lib/
$ sudo cp libmultinest_mpi.3.10.dylib /usr/local/lib/
$ sudo cp libmultinest_mpi.a /usr/local/lib/
$ sudo cp libmultinest_mpi.dylib /usr/local/lib/
# /Users/my_name/MultiNest/lib にある XXX.dylib の内容を持つ、 XXX.so という名前のリンクを作る。
# http://astrobetter.com/wiki/MultiNest+Installation+Notes の通りにすると一部不足する模様。全部やる。
$ sudo ln -s libmultinest.3.10.dylib libmultinest.3.10.so
$ sudo ln -s libmultinest.dylib libmultinest.so
$ sudo ln -s libmultinest_mpi.3.10.dylib libmultinest_mpi.3.10.so
$ sudo ln -s libmultinest_mpi.dylib libmultinest_mpi.so
# さらに、PATHをいじる。
$ cd
$ vi .bash_profile
[以下の内容を加える。]
#--------------------
# Added by me when installing MultiNest and PyMultiNest (19 Jan 2016)
export DYLD_LIBRARY_PATH=/Users/my_name/MultiNest/lib:$DYLD_LIBRARY_PATH
export PATH=$PATH:$HOME/.local/bin/
#--------------------
# 参考: http://johannesbuchner.github.io/pymultinest-tutorial/install.html#on-your-own-computer
# おそらく、MultiNest以外にも使う場合は
# http://johannesbuchner.github.io/PyMultiNest/install.html#id4 にあるように、
# $ export DYLD_LIBRARY_PATH=/Users/my_name/MultiNest/lib:/Users/my_name/cuba/lib:/Users/my_name/apemost/lib:$DYLD_LIBRARY_PATH
# のようにするのだろう(推測)。
(5)PyMultiNestインストール
$ cd
$ git clone https://github.com/JohannesBuchner/PyMultiNest.git
$ cd PyMultiNest
$ sudo python setup.py install
(6)テスト
(6-1)MultiNest
$ cd
$ cd MultiNest/bin
$ rm chains/*
$ ./eggboxC #binの中のプログラムなら何でも良い。
(6-2)MultiNest と mpi
$ cd
$ cd MultiNest/bin
$ rm chains/*
$ mpirun -np 6 eggboxC
これを走らせながら、新規ターミナルを開いて
$ top -o cpu
としてみる。いろいろ数字がモニターできる。
(6-3)PyMultiNest
$ cd
$ cd PyMultiNest
$ python -c 'import pymultinest'
# エラーメッセージがなければ良い。
$ python pymultinest_demo_minimal.py
# これでデモコードが走る。
※ が、翌日にpipが走らないという問題に遭遇した。
一連のインストールに問題があると思い、いろいろ試したが、結局
python - Upgrading to latest pip caused ValueError - Stack Overflow
で解決した。
yosemite [open filesを増やす]
yosemiteを再起動したら、どういうわけかfopenできる最大のファイル数が減った?ようでいままで動いていたプログラムが作動しなくなった。
(1)調べる
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
==> 「open files = 256 だったので1000個のファイルが開けなかった。」
(2)解決策
(a)一時的な変更でいい場合は
$ [sudo] ulimit -n 10240
(b)永続的な変更
$ cd
$ echo kern.maxfiles=10240 | sudo tee -a /etc/sysctl.conf
$ echo kern.maxfilesperproc=10240 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -w kern.maxfiles=10240
$ sudo sysctl -w kern.maxfilesperproc=10240
$ ulimit -n 10240 10240
$ cd
$ vi .bash_profile
".bash_profile"に以下の内容を加筆:
#----
# Added by me to increase the max number of open file (13 Jan 2016)
ulimit -n 10240 10240
#----
ヒント:「"i"でinsertモード、保存して終了するには "Esc" ":wq"」
(3)参考
http://blog.mact.me/2014/10/22/yosemite-upgrade-changes-open-file-limit
leapfrog 法による軌道計算
(1) leapfrog法
- 「Kick-Drift-Kick法」をimplementするために、簡単なKepler問題を解く。
- 重力場:質量1e11 Msunの質点
- 初期条件:(x,y)=(10, 0) kpc, (v_x, v_y)=(0, 100) km/s [eccentricity=0.77]
- 積分時間: 1 Gyr
- 積分timestep:(a) 1 Myr [1e3 steps] ; (b) 0.1 Myr [1e4 steps]
- (a) precession顕著。(b) precession無視可能。
- エネルギー誤差:(a) 15 %; (b) 0.5 % (during 1 Gyr)
- 計算時間:KDK (a) 7 ms; (b) 50 ms
参考までに、GSLの微分方程式のルーチンを使うと、20 ms (1 Myr / step)、 153 ms(0.1 Myr / step)。GSLでは、precessionはどちらのtimestepの場合も見られない。
>>> Kepler 問題を解く上では、GSLで何ら問題ない。ただし、多粒子になると、GSLのルーチンだけでは、計算時間が顕著に増えると予想される。「h=0.1 Myr, leapfrog」は計算精度、計算速度のバランス面で優れている。
>>> KDKの積分を行う関数を、「0.1 Myrの積分を10回行う」と記述すると、エネルギー誤差をおさえたまま9 ms 程度で計算できることが判明。つまり、KDKの計算時間は「関数の呼び出し回数」で決まる。 [追記2016/01/01]
(2) KDK法
timestep = h とすると、
v_(n+1/2) = v_n + a(x_n) h/2
x_(n+1) = x_n + v_(n+1/2) h
v_(n+1) = v_(n+1/2) + a(x_(n+1)) h/2
Springelの講義ノートでは、この2番目の式が間違っている(h が h/2 となっている)。