読者です 読者をやめる 読者になる 読者になる

ぱんでも

にうむ

FreeBSD9.1にpythonbrew経由でpython3.3.0を入れてscipyを投入

思いのほか面倒臭かったのでメモ.

下準備(ここでえらく躓いた)

cd /usr/ports/math/blas
make install clean
cd /usr/ports/math/lapack
make install clean
sudo ln -s /usr/local/bin/gfortran46 /usr/local/bin/gfortran

pythonbrew導入(環境パスの記述は省略)

curl -kL http://xrl.us/pythonbrewinstall | bash
pythonbrew install 3.3.0
pythonbrew switch 3.3.0

numpyとscipy

git clone git://github.com/numpy/numpy.git ~/numpy
cd ~/numpy/
python setup.py install
git clone git://github.com/scipy/scipy.git ~/scipy
cd ~/scipy
python setup.py install

Raspberry Pi用にSDカードにFreeBSD-10CURRENTを書き込む

下記のURLに書いてある手順を踏んでSDカードにFreeBSD-10CURRENTを書き込んだ.
書き込みに使用した端末はOS X Mountain Lion.
http://elinux.org/RPi_Easy_SD_Card_Setup#Copying_an_image_to_the_SD_card_in_Mac.C2.A0OS.C2.A0X_.28command_line.29

FreeBSD-10CURRENTのイメージファイルはここ
ちなみにNetBSDもある

$ cd ~/Download
$ shasum freebsd-pi-r245446.img.gz
65db3507b3c6f448d34068ca2a11f915d1b6b8f8  freebsd-pi-r245446.img.gz
$ gunzip freebsd-pi-r245446.img.gz
$ df -h
Filesystem      Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
/dev/disk0s2   233Gi  139Gi   94Gi    60% 36488568 24580872   60%   /
devfs          190Ki  190Ki    0Bi   100%      658        0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0        0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0        0  100%   /home
/dev/disk2s1    30Gi  2.1Mi   30Gi     1%        0        0  100%   /Volumes/UNTITLED
$ diskutil unmount /dev/disk2s1
Volume UNTITLED on disk2s1 unmounted
$ sudo dd bs=1m if=freebsd-pi-r245446.img of=/dev/rdisk2
Password:
3719+1 records in
3719+1 records out
3899999744 bytes transferred in 115.411324 secs (33792176 bytes/sec)
$ sudo diskutil eject /dev/rdisk2
Disk /dev/rdisk2 ejected

書き込みに使用したSDカードはLexar PLATINUM II 32GBというもの.
2000円以下と安かったのでこれにした.

Lexar SDHCカード Class10 UHS-1 32GB [フラストレーションフリーパッケージ (FFP)] LSD32GBJ200

Lexar SDHCカード Class10 UHS-1 32GB [フラストレーションフリーパッケージ (FFP)] LSD32GBJ200

SDカードのベンチマークを測ってみた

32GBのSDカードを購入.まさか2000円を割っているとは….

Lexar SDHCカード Class10 UHS-1 32GB [フラストレーションフリーパッケージ (FFP)] LSD32GBJ200

Lexar SDHCカード Class10 UHS-1 32GB [フラストレーションフリーパッケージ (FFP)] LSD32GBJ200

せっかくだからiozoneでベンチマークを測ってみた. ターミナルからcdコマンドでSDカードへ移動.次のコマンドを実行した.

$ iozone -t 2 -s 512M -r 128K -i 0 -i 1 -i 2

	Iozone: Performance Test of File I/O
	        Version $Revision: 3.413 $
		Compiled for 64 bit mode.
		Build: macosx 

	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer.
	             Ben England.

	Run began: Tue Jan 29 23:00:04 2013

	File size set to 524288 KB
	Record Size 128 KB
	Command line used: iozone -t 2 -s 512M -r 128K -i 0 -i 1 -i 2
	Output is in Kbytes/sec
	Time Resolution = 0.000001 seconds.
	Processor cache size set to 1024 Kbytes.
	Processor cache line size set to 32 bytes.
	File stride size set to 17 * record size.
	Throughput test with 2 processes
	Each process writes a 524288 Kbyte file in 128 Kbyte records

	Children see throughput for  2 initial writers 	=   29047.11 KB/sec
	Parent sees throughput for  2 initial writers 	=   26677.55 KB/sec
	Min throughput per process 			=   14307.64 KB/sec 
	Max throughput per process 			=   14739.47 KB/sec
	Avg throughput per process 			=   14523.56 KB/sec
	Min xfer 					=  508928.00 KB

	Children see throughput for  2 rewriters 	=   30469.63 KB/sec
	Parent sees throughput for  2 rewriters 	=   28157.35 KB/sec
	Min throughput per process 			=   12306.44 KB/sec 
	Max throughput per process 			=   18163.20 KB/sec
	Avg throughput per process 			=   15234.82 KB/sec
	Min xfer 					=  405760.00 KB

	Children see throughput for  2 readers 		= 9793642.50 KB/sec
	Parent sees throughput for  2 readers 		= 9765756.47 KB/sec
	Min throughput per process 			= 4874730.50 KB/sec 
	Max throughput per process 			= 4918912.00 KB/sec
	Avg throughput per process 			= 4896821.25 KB/sec
	Min xfer 					=  519680.00 KB

	Children see throughput for 2 re-readers 	= 9261350.00 KB/sec
	Parent sees throughput for 2 re-readers 	= 9236118.61 KB/sec
	Min throughput per process 			= 4560983.50 KB/sec 
	Max throughput per process 			= 4700366.50 KB/sec
	Avg throughput per process 			= 4630675.00 KB/sec
	Min xfer 					=  508928.00 KB

	Children see throughput for 2 random readers 	= 10001251.00 KB/sec
	Parent sees throughput for 2 random readers 	= 9971483.59 KB/sec
	Min throughput per process 			= 4963845.00 KB/sec 
	Max throughput per process 			= 5037406.00 KB/sec
	Avg throughput per process 			= 5000625.50 KB/sec
	Min xfer 					=  516736.00 KB

	Children see throughput for 2 random writers 	=    2108.68 KB/sec
	Parent sees throughput for 2 random writers 	=     799.42 KB/sec
	Min throughput per process 			=     277.28 KB/sec 
	Max throughput per process 			=    1831.40 KB/sec
	Avg throughput per process 			=    1054.34 KB/sec
	Min xfer 					=  130560.00 KB



iozone test complete.

Xcode4.6にアップデートした

いつものようにコマンドラインツールを再インストールするだけ.

f:id:hfmgarden:20130129110428p:plain

f:id:hfmgarden:20130129110434p:plain

f:id:hfmgarden:20130129110435p:plain

f:id:hfmgarden:20130129110438p:plain

f:id:hfmgarden:20130129110443p:plain

iOSシミュレータはどうしようか悩むところですが,今のところは放置.必要になったら5系とかも入れようかな.

FreeBSDを9.0から9.1へアップグレード

気がつけばFreeBSD9.1が出ているらしく,さくらVPSの鯖をアップグレード. 時間は,まあそこそこ掛かるけど,特になにか面倒な作業を行うこともないのでサクッと終わらせた.

$ freebsd-update -r 9.1-RELEASE upgrade
$ freebsd-update install
$ reboot
$ freebsd-update install
$ uname -r
9.1-RELEASE

pythonでデータの標準化

さいきんpythonデータマイニングをやり始めたので色々メモ. numpyありき.こんな雰囲気の計算をよく使うのでメモ.

import numpy as np

def normalize(arr):
    m = np.mean(arr)
    s = np.std(arr)
    if s != 0.0:
        arr = np.array([(arr[i] - m) / s for i in range(len(arr))])
    return arr

あるいは合計で割るような場合は,

def normalize(arr):
    sumarr = float(sum(arr))
    if sumarr != 0.0
        arr = np.array([arr[i] / sumarr for i in range(len(arr))])
    return arr

リスト内包表記べんり.

Python.sublime-buildをpythonbrewに合わせる

Sublime Text 2でPythonを扱い際にpythonbrewから引っ張ってきたいがためにsublime-buildを次のように変更した。

{
  "cmd": [
    "/Users/hfm/.pythonbrew/current/bin/python",
    "-u",
    "$file"
  ],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "selector": "source.python"
}

ただし、currentの部分はQiitaの記事を参考にした。