2016年12月30日金曜日

Pythonのリストが入れ子になっている場合、どうやって中身を取り出すか?

要はこういうこと。
例えば下記のようなシンプルなリストだったら、簡単に中身を取り出せる。

>>> data=[1,2,3,4,5]
>>> print(data[0])
1
>>> print(data[2])
3

じゃあ、こんな場合はどうする?
>>> data=[(1,2),(3,4),(5,6)]

JSON形式や、データベースからデータを引っ張ったとき、こういう形式になったいる場合が多いと思う。
実はかなり単純に値を取り出せる。

>>> data=[(1,2),(3,4),(5,6)]
>>> print(data[0][0])
1
>>> print(data[0][1])
2
>>> print(data[2][0])
5
>>> print(data[2][1])

なんか他の言語だとdata(0,1)とか考えちゃいそうなんだけど、上記の表現で取り出せるのな。

2016年11月6日日曜日

Pythonプログラムで、決まったタイミングでなにかを実行させたい (crontab)

1分毎にスレッドを動かしたいと思ったとき、どうしたら良いのか途方に暮れた。
その土台に、crontabモジュールを使えば良いことが分かった。
crontabは、あるタイミングまでの残り時間を計算してくれる。

インストールは次のコマンドで。

$ pip install crontab


サンプルはこんな感じ。
==============================
from crontab import CronTab
import datetime

# 毎1分毎にクーロンを設定する。
entry = CronTab('* * * * *')

# 現在時刻を表示
print(datetime.datetime.now())

# 次のクーロンが動作するまでの残り時間を表示する。
print(entry.next())
==============================

entryでインスタンス化されたcrontabに対して、entry.next()で次回クローンが動作するまでの残り時間を取得することができる。

実行結果は次のような感じ。

2016-11-06 14:08:38.204069
21.79585

次回クローンが動作する2016-11-06 14:09:00まで残り21.79585秒であることが分かる。

2016年10月16日日曜日

日付をファイル名にしたい

Pythonで日付をファイル名にしたかったとき、こんな感じで実装できた。

==========
# SQLITE3のテストプログラム
import sqlite3
import datetime

# データベースファイルを開く
now=datetime.datetime.now()
filename=(now.strftime(“../hogehoge_%Y%m%d.db"))

conn=sqlite3.connect(filename)
cur=conn.cursor()
cur.execute("""create table rate(name,price);""")
==========

../ がついているのは、プログラムより一つ上の階層にファイルを作りたかったため。
これで、hogehoge_20161016.db というファイルが作られる。

2016年10月15日土曜日

[Hackintosh]macOS Sierraにバージョンアップした

わりとすんなり移行ができた。
ポイントは2つ。

1.macOS SierraはMacPro3.1、MacPro4.1では動作しない。
現在「このMacについて」でMacProが表示されているならば変更する必要がある。
最新のMulitiBeastで設定を変える。

1. Get the latest version of MultiBeast for El Capitan
2. Choose Customise > System Definitions > iMac > iMac14,2
3. Choose Build > Install
4. Reboot system

で、設定が変わる。

2.最新のUniBeast等を準備して、USBメモリからインストールする
これは以前記述したインストールと状況は同じ。
ただし、もともとシステムは動作していたので、MultiBeast等での設定は必要なかった。
しれっと動作する。

フォントが綺麗になったっぽくて、非常に画面が見やすくて助かる。

※自分はインストールUSBメモリ作りでハマってしまった。
 今回はWindowsのdiskpartに頼ったが、Macで完結させる方法をチェックしないとな。

2016年7月3日日曜日

で、次どうする?

よくありがちなことですが、インストールだけ成功して満足してしまうのがPC使いの罠。

Chainer+CUDA+cuDNNのインストールは成功。
サンプルも動いた。

なんかファイルが4つ(mnist.pkl、graph.dot、mlp.model、mlp.state)生まれた。

で、これをどうしろっていうの??

2016年7月2日土曜日

ChainerのCPU利用時とGPU利用時の差

CPUモードの時とGPUモードの時を比較してみる。

CPUモード(Core i5-6600)の時:
epoch 1
graph generated
train mean loss=0.19060514808942874, accuracy=0.9417666694770257, throughput=4271.602999064454 images/sec

GPUモード(NVIDIA GeForce GTX970)の時:
epoch 1
graph generated
train mean loss=0.1898393394611776, accuracy=0.9429833358960847, throughput=18989.679505603865 images/sec

スループット差は約4.4倍ほど。

CPUモード(Core i5-6600)の時:
epoch 20
train mean loss=0.012885340018372063, accuracy=0.9962166701753934, throughput=2738.190540420163 images/sec

GPUモード(NVIDIA GeForce GTX970)の時:
epoch 20
train mean loss=0.009821116544642905, accuracy=0.9971666693687439, throughput=22496.614220684336 images/sec

スループット差は約8.2倍。

同じデータで比較したけれど、スループット差はかなりあるようだ。

やっとcuDNNが動いたけれど

どうやって動いたのか、未だによくわからない。
色々とシステムをいじくりまわした結果なので。

Macで、Chainer初心者が定番にやるtrain_mnist.py。
CPUモードで動かしている限りはかなり楽勝。
だが、GPUを使う場合は、いろいろとうまく行かなかった。

Python3でサンプルを動かすと、まずエラーが出る。
CUDA、cuDNNをインストールガイドにしたがってインストールしてもエラーが出る。

で、やってみたこと。

1.シンボリックリンクを貼ってみた。
El CaptitanではDYLD_LIBRARY_PATHの上書きが有効にならないらしいため。
$ ln -s /usr/local/cuda/lib/* /usr/local/lib
$ ln -s /Developer/NVIDIA/CUDA-7.5/lib/* /usr/local/lib

出典:http://qiita.com/ayuma0913/items/82c03a8173d3c97bff10

で、とりあえずGPUというかCUDAは動き出した感じ。
でもエラーはまだ出てくる。

$ python train_mnist.py -g 0
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
Network type: simple

load MNIST dataset
Downloading train-images-idx3-ubyte.gz...
Done
Downloading train-labels-idx1-ubyte.gz...
Done
Downloading t10k-images-idx3-ubyte.gz...
Done
Downloading t10k-labels-idx1-ubyte.gz...
Done
Converting training data...
Done
Converting test data...
Done
Save output...
Done
Convert completed
/Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages/chainer/cuda.py:87: UserWarning: cuDNN is not enabled.
Please reinstall chainer after you install cudnn
(see https://github.com/pfnet/chainer#installation).
  'cuDNN is not enabled.\n'
epoch 1
/Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages/chainer/cuda.py:87: UserWarning: cuDNN is not enabled.
Please reinstall chainer after you install cudnn
(see https://github.com/pfnet/chainer#installation).
  'cuDNN is not enabled.\n'
graph generated
train mean loss=0.1901665245865782, accuracy=0.942733337233464, throughput=19169.138552723725 images/sec
test  mean loss=0.09113417560467496, accuracy=0.9730000060796737
以下略

CPUモードに比べれば全然速いのだけど、cuDNNが無効というのが気に入らない。

2.OS X 10.11 El CapitanのSystem Integrity Protection(SIP)を無効にしてみる。
自分の環境がちょっと特殊(苦笑)なため、リカバリーモードに入るのに苦労した。

例のインストールUSBからブートして、GUIが起動したらユーティリティのターミナルに入る。
$ csrutil disable
$ reboot

これでSIPが無効になる。
セキュリティ的にSIPは効果的らしいんだけど、まずは切ってみた。
副次効果として、SIP環境下ではアプリがSandboxで動いていたのがそうではなくなるので、動作はサクサクになる。操作感は相当にいいので、Sandboxは重たいのだなって実感。

で、chainerをアンインストール、再インストールする。

で、再挑戦。
やっぱりcuDNN is not enabledと表示される。

3.cuDNNのバージョンを変える。
いままでcuDNN v5(May 12,2016),for CUDA 7.5を使っていたが、cuDNN v5.1 RC (June 16, 2016), for CUDA 7.5にバージョンアップしてみる。

ダウンロードしたフォルダを展開し、それぞれ/Developer/NVIDIA/CUDA-7.5下のフォルダにコピー。

で、chainerをアンインストール、再インストールする。

で、再挑戦。

$ python train_mnist.py -g 0
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
Network type: simple

load MNIST dataset
Downloading train-images-idx3-ubyte.gz...
Done
Downloading train-labels-idx1-ubyte.gz...
Done
Downloading t10k-images-idx3-ubyte.gz...
Done
Downloading t10k-labels-idx1-ubyte.gz...
Done
Converting training data...
Done
Converting test data...
Done
Save output...
Done
Convert completed
epoch 1
graph generated
train mean loss=0.1888404919952154, accuracy=0.9433166711529096, throughput=16031.889196102731 images/sec
test  mean loss=0.09853773100476246, accuracy=0.9686000072956085
epoch 2
train mean loss=0.07550216538365931, accuracy=0.9763166766365369, throughput=22556.0344267401 images/sec
test  mean loss=0.07264450040020165, accuracy=0.9770000052452087
epoch 3
train mean loss=0.04877504045046711, accuracy=0.9843666765093804, throughput=22632.55122509905 images/sec
test  mean loss=0.08447756661909807, accuracy=0.9758000069856644
epoch 4
train mean loss=0.03617304402956506, accuracy=0.9882166763146718, throughput=22372.07331256839 images/sec
test  mean loss=0.07253925856392016, accuracy=0.9785000050067901
epoch 5
train mean loss=0.02990280262378898, accuracy=0.9904666745662689, throughput=22544.69441226119 images/sec
test  mean loss=0.07364016732306482, accuracy=0.9786000072956085
epoch 6
train mean loss=0.02051041631498568, accuracy=0.9932666728893916, throughput=22602.377604251567 images/sec
test  mean loss=0.08061152838608905, accuracy=0.9794000065326691
epoch 7
train mean loss=0.02313764386140974, accuracy=0.9924666731556256, throughput=22608.97704668778 images/sec
test  mean loss=0.07398538219076045, accuracy=0.9813000071048736
epoch 8
train mean loss=0.01743261187949732, accuracy=0.9944333384434382, throughput=22505.744075544564 images/sec
test  mean loss=0.06380779648055522, accuracy=0.9824000066518783
epoch 9
train mean loss=0.017964339632999326, accuracy=0.9940833389759064, throughput=22634.045328307027 images/sec
test  mean loss=0.07465034724052032, accuracy=0.9814000070095062
epoch 10
train mean loss=0.01577379300415032, accuracy=0.9950333380699158, throughput=22556.450902358458 images/sec
test  mean loss=0.07825881053931426, accuracy=0.9805000072717667
epoch 11
train mean loss=0.01135890639123924, accuracy=0.9965166698892911, throughput=22567.71775072012 images/sec
test  mean loss=0.0798807725448205, accuracy=0.9818000066280365
epoch 12
train mean loss=0.014168494007887299, accuracy=0.9959166704614957, throughput=22579.648188927462 images/sec
test  mean loss=0.08158497168318718, accuracy=0.9832000064849854
epoch 13
train mean loss=0.01492698869720698, accuracy=0.9956500040491422, throughput=22598.878417525055 images/sec
test  mean loss=0.08872715805148687, accuracy=0.980800005197525
epoch 14
train mean loss=0.009995754014827678, accuracy=0.9964000033338865, throughput=22575.31759377331 images/sec
test  mean loss=0.08891520491886695, accuracy=0.9828000068664551
epoch 15
train mean loss=0.010710552199502388, accuracy=0.9967833363016446, throughput=22601.20229250324 images/sec
test  mean loss=0.08941980777552216, accuracy=0.981700005531311
epoch 16
train mean loss=0.01189803228019097, accuracy=0.9964333367347717, throughput=22547.26976868952 images/sec
test  mean loss=0.09618509650914689, accuracy=0.982900008559227
epoch 17
train mean loss=0.007446224756765029, accuracy=0.9976333355903626, throughput=22305.55383457275 images/sec
test  mean loss=0.09916683364292737, accuracy=0.9818000072240829
epoch 18
train mean loss=0.008587048528358612, accuracy=0.9974333357810974, throughput=22575.74288268399 images/sec
test  mean loss=0.1162207845506302, accuracy=0.9780000072717666
epoch 19
train mean loss=0.012611796275693409, accuracy=0.9964500031868617, throughput=22599.16659265566 images/sec
test  mean loss=0.09134372303703306, accuracy=0.9832000058889389
epoch 20
train mean loss=0.005183243499375673, accuracy=0.9983000016212463, throughput=22576.352491400365 images/sec
test  mean loss=0.1039556429999165, accuracy=0.9821000063419342
save the model
save the optimizer

ああ、動いたなあ。
そして速いなあ…………。

結局1〜3のどれが効いたのかよくわからない。
2のSIP無効化は必要ないのかもしれない。
そのうち検証してみようと思う。

2016年6月26日日曜日

で、結局pycudaはちゃんと動いているのか??

こちらのサイト様のコードを使わせていただいて、動作確認をしてみる。
https://hnakamur.github.io/blog/2015/07/25/setup_pycuda_on_macbook_pro_with_geforce/

下記コードをpycuda-test.pyと名付けて保存。

import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import pycuda.autoinit
import numpy

a_gpu = gpuarray.to_gpu(numpy.random.randn(4,4).astype(numpy.float32))
a_doubled = (2*a_gpu).get()
print(a_doubled)
print(a_gpu)

では、動かしてみる。

$ python3 pycuda-test.py
[[-0.88340336 -0.48412755 -2.73136067 -0.04277773]
 [ 1.15315139 -2.88467717 -0.6212647   0.35913253]
 [ 1.04733992 -3.00954723  1.72663045 -0.17476171]
 [-1.08756733  0.0739169  -1.34298694 -0.24150042]]
[[-0.44170168 -0.24206378 -1.36568034 -0.02138886]
 [ 0.5765757  -1.44233859 -0.31063235  0.17956626]
 [ 0.52366996 -1.50477362  0.86331522 -0.08738086]
 [-0.54378366  0.03695845 -0.67149347 -0.12075021]]

やっぱりpycudaは動作しているようだ。

その他のサンプルコードだと、Python2とPython3の差異があったりと、今日の時点ではpycudaがちゃんと動いているのかわからなかった。次はもうちょっとビジュアル的に面白いコードで試してみたい。

numpy、python-six、そしてpycudaをインストールしてゆく。

まずnumpyからインストールしてゆく。
numpyは科学技術計算で利用されるPythonの拡張モジュールなんだとか。

$ pip install numpy

Requirement already satisfied (use --upgrade to upgrade): numpy in /Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages

おお。
Python3をインストールする時にanacondaを選択したので、インストール済みであったか。

じゃ、python-sixへ続く。
sixとは、Python 2 と Python 3 の間の違いを吸収するためのシンプルなユーティリティなんだとか。

$ pip install six
Requirement already satisfied (use --upgrade to upgrade): six in /Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages

インストール済みとな。
anacondaは優秀なパッケージなんだな。

じゃ、Pycudaをインストールする。

$ pip install pycuda

盛大なエラーを吐いて終了。。。。。

じゃ、世の中のWebサイトで成功事例に書かれている方法で再挑戦する。
フォルダはホームフォルダに置く事にする。

$ git clone http://git.tiker.net/trees/pycuda.git

で、ダウンロードが済んだら、pycudaのフォルダに降りてみる。

$cd pycuda
$ ls
MANIFEST.in        bpl-subset        setup.cfg
Makefile.in        configure.py        setup.py
README.rst        doc            src
README_SETUP.txt    examples        test
aksetup_helper.py    pycuda

こんな感じの内容。

$ python3 configure.py
$ ls
MANIFEST.in        aksetup_helper.py    setup.cfg
Makefile        bpl-subset        setup.py
Makefile.in        configure.py        siteconf.py
README.rst        doc            src
README_SETUP.txt    examples        test
__pycache__        pycuda

14ファイル → 17ファイルに増えてる。

$ vi siteconf.py

BOOST_INC_DIR = []
BOOST_LIB_DIR = []
BOOST_COMPILER = 'gcc43'
USE_SHIPPED_BOOST = True
BOOST_PYTHON_LIBNAME = ['boost_python-35']
BOOST_THREAD_LIBNAME = ['boost_thread']
CUDA_TRACE = False
CUDA_ROOT = '/Developer/NVIDIA/CUDA-7.5'
CUDA_ENABLE_GL = False
CUDA_ENABLE_CURAND = True
CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDADRV_LIBNAME = ['cuda']
CUDART_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDART_LIBNAME = ['cudart']
CURAND_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CURAND_LIBNAME = ['curand']
CXXFLAGS = []
LDFLAGS = []

上記を次の内容に書き換える。

BOOST_INC_DIR = ['/opt/local/include']
BOOST_LIB_DIR = ['/opt/local/lib']
BOOST_COMPILER = 'gcc43'
USE_SHIPPED_BOOST = True
BOOST_PYTHON_LIBNAME = ['boost_python-py35']
BOOST_THREAD_LIBNAME = ['boost_thread']
CUDA_TRACE = False
CUDA_ROOT = '/usr/local/cuda'
CUDA_ENABLE_GL = False
CUDA_ENABLE_CURAND = True
CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDADRV_LIBNAME = ['cuda']
CUDART_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDART_LIBNAME = ['cudart']
CURAND_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CURAND_LIBNAME = ['curand']
CXXFLAGS = ["-arch", "x86_64", "-arch", "i386",'-mmacosx-version-min=10.11', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk']
LDFLAGS = ["-F/Library/Frameworks", "-arch", "x86_64", "-arch", "i386",'-mmacosx-version-min=10.11', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk']


pycudaのインストールにcompyteが必要らしいので、こちらもインストールする。

pycudaのフォルダ内で、次のコマンドを実行。

$ git clone git://github.com/inducer/compyte.git

いよいよpycudaをインストールする。

$ cd ~/pycuda

念のためのおまじない。

$ git submodule update --init

Submodule 'bpl-subset' (https://github.com/inducer/bpl-subset) registered for path 'bpl-subset'
Submodule 'pycuda/compyte' (https://github.com/inducer/compyte) registered for path 'pycuda/compyte'
Cloning into 'bpl-subset'...
remote: Counting objects: 5374, done.
remote: Total 5374 (delta 0), reused 0 (delta 0), pack-reused 5374
Receiving objects: 100% (5374/5374), 5.03 MiB | 1.00 MiB/s, done.
Resolving deltas: 100% (1282/1282), done.
Checking connectivity... done.
Submodule path 'bpl-subset': checked out 'e7c5f5131daca6298b5e8aa48d06e7ecffec2ffa'
Cloning into 'pycuda/compyte'...
remote: Counting objects: 1889, done.
remote: Total 1889 (delta 0), reused 0 (delta 0), pack-reused 1889
Receiving objects: 100% (1889/1889), 739.73 KiB | 427.00 KiB/s, done.
Resolving deltas: 100% (1085/1085), done.
Checking connectivity... done.
Submodule path 'pycuda/compyte': checked out 'ac1c71d46428c14aa1bd1c09d7da19cd0298d5cc'

じゃあ、makeしてみますか。。。。

$ sudo make

でるわでるわ、警告の嵐!!
気が遠くなるほど警告を吐いたあとで、作業は終了。
じゃ、make installしますか。。。

$ sudo make install
Finished processing dependencies for pycuda==2016.1.1

なんか、終わったくさいぞ!!

いったんターミナルを終了して、立ち上げ直す。
pycudaの動作確認をしてみる。

$ python3
Python 3.5.1 |Anaconda 4.0.0 (x86_64)| (default, Dec  7 2015, 11:24:55)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pycuda.autoinit
>>>

やったっ!!
成功しましたっ!!!!

2016年6月25日土曜日

CUDAドライバーをインストールし、サンプルプログラムで動作確認するまで。

前回のChainerのサンプルプログラムは、CPUで動作させました。
次に挑戦すべきは、GPUで動作させる事ですね。

まず、chainer-1.9.1/examples/mnist/train_mnist.py のGPUスイッチを入れてみた。

parser.add_argument('--gpu', '-g', default=0, type=int,
                    help='GPU ID (negative value indicates CPU)')

で、どうなるか?

$ python3 chainer-1.9.1/examples/mnist/train_mnist.py
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
Network type: simple

load MNIST dataset
Downloading train-images-idx3-ubyte.gz...
Done
Downloading train-labels-idx1-ubyte.gz...
Done
Downloading t10k-images-idx3-ubyte.gz...
Done
Downloading t10k-labels-idx1-ubyte.gz...
Done
Converting training data...
Done
Converting test data...
Done
Save output...
Done
Convert completed
Traceback (most recent call last):
  File "chainer-1.9.1/examples/mnist/train_mnist.py", line 68, in <module>
    cuda.get_device(args.gpu).use()
  File "/Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages/chainer/cuda.py", line 161, in get_device
    check_cuda_available()
  File "/Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages/chainer/cuda.py", line 82, in check_cuda_available
    raise RuntimeError(msg)
RuntimeError: CUDA environment is not correctly set up
(see https://github.com/pfnet/chainer#installation).'str' object has no attribute '__traceback__'

でエラーで止まった。

んー、とりあえずCUDAとか、cuda.pyとか不備があるようだ。

まずは、NVIDIAからCUDAドライバーと、Toolkitをダウンロードし、インストールした。


$ vi ./.bash_profile で 次の通りパス設定を書き込みます。

# CUDA
export PATH=/Developer/NVIDIA/CUDA-7.5/bin:$PATH
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-7.5/lib:$DYLD_LIBRARY_PATH

CUDAのバージョンの数字は、導入時期に合わせて適宜変更が必要。

軽く動作確認してみます。

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Mon_Apr_11_13:23:40_CDT_2016
Cuda compilation tools, release 7.5, V7.5.26

一応、パスは通っているみたいだ。

次にCUDAのサンプルプログラムを動かしてみます。

・Xcodeをインストールする。
・Boostをインストールする。Homebrewを使うと楽にインストールできる。
 $ brew install boost

では、CUDAのサンプルファイルを実行する準備を行います。

$ cd /Developer/NVIDIA/CUDA-7.5/samples
$ sudo make

結構長い間コンパイル作業が続きます。
お茶でも飲んで待っているといいかもしれません。

コンパイル作業が終わったら、このコマンドを叩いてみます。
$ 1_Utilities/deviceQuery/deviceQuery

もしCUDAがうまく動作している場合は、こんな表示が出ます。

1_utilities/deviceQuery/deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 970"
  CUDA Driver Version / Runtime Version          7.5 / 7.5
  CUDA Capability Major/Minor version number:    5.2
  Total amount of global memory:                 4096 MBytes (4294770688 bytes)
  (13) Multiprocessors, (128) CUDA Cores/MP:     1664 CUDA Cores
  GPU Max Clock rate:                            1216 MHz (1.22 GHz)
  Memory Clock rate:                             3505 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 1835008 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 970
Result = PASS

やったー!動いているみたいだ。

もう一つテストしてみる。

 $ 1_utilities/bandwidthTest/bandwidthTest
[CUDA Bandwidth Test] - Starting...
Running on...

 Device 0: GeForce GTX 970
 Quick Mode

 Host to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)    Bandwidth(MB/s)
   33554432            12785.7

 Device to Host Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)    Bandwidth(MB/s)
   33554432            12846.7

 Device to Device Bandwidth, 1 Device(s)
 PINNED Memory Transfers
   Transfer Size (Bytes)    Bandwidth(MB/s)
   33554432            142505.2

Result = PASS

NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

へいへい、わっかりやした。
enableなことが分かれば、それで十分です。

2016年6月22日水曜日

とりあえずChainerをインストールしてみる

で、とりあえずChainerをインストールしてみる。

Chainerをインストールするために、chainer.orgに行く。
インストール方法は簡単で、Pythonをインストール済みの環境ならば、次のコマンドを打つだけ。

$ pip install chainer

テスト用サンプルがあるらしいので、これから始めてみよう。

$ wget https://github.com/pfnet/chainer/archive/v1.9.1.tar.gz
$ tar xzf v1.9.1.tar.gz
$ python chainer-1.9.1/examples/mnist/train_mnist.py

実行してみようとしたら、wgetがないという。
$ which wget

反応なしなので、やっぱりインストールはされていない。

では次のコマンドでwgetをインストールする。

$ brew install wget
==> Downloading https://homebrew.bintray.com/bottles/wget-1.18.el_capitan.bottle
######################################################################## 100.0%
==> Pouring wget-1.18.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/wget/1.18: 9 files, 1.6M

パッケージ管理システムは、ほんと便利、ありがたい。
気を取り直して、再挑戦。

$ wget https://github.com/pfnet/chainer/archive/v1.9.1.tar.gz
--2016-06-22 20:44:26--  https://github.com/pfnet/chainer/archive/v1.9.1.tar.gz
Resolving github.com... 192.30.252.122
Connecting to github.com|192.30.252.122|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/pfnet/chainer/tar.gz/v1.9.1 [following]
--2016-06-22 20:44:27--  https://codeload.github.com/pfnet/chainer/tar.gz/v1.9.1
Resolving codeload.github.com... 192.30.253.120
Connecting to codeload.github.com|192.30.253.120|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘v1.9.1.tar.gz’

v1.9.1.tar.gz           [             <=>    ]   1.80M   622KB/s    in 3.0s

2016-06-22 20:44:31 (622 KB/s) - ‘v1.9.1.tar.gz’ saved [1893254]

ダウンロードが済んだら、圧縮ファイルを展開。
$ tar xzf v1.9.1.tar.gz

で実行してみる。
$ python3 chainer-1.9.1/examples/mnist/train_mnist.py
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20
Network type: simple

load MNIST dataset
Downloading train-images-idx3-ubyte.gz...
Done
Downloading train-labels-idx1-ubyte.gz...
Done
Downloading t10k-images-idx3-ubyte.gz...
Done
Downloading t10k-labels-idx1-ubyte.gz...
Done
Converting training data...
Done
Converting test data...
Done
Save output...
Done
Convert completed
epoch 1
graph generated
train mean loss=0.19060514808942874, accuracy=0.9417666694770257, throughput=4271.602999064454 images/sec
test  mean loss=0.087592640517978, accuracy=0.9728000050783158
epoch 2
train mean loss=0.0738531613512896, accuracy=0.9769333433111509, throughput=3953.7409389202767 images/sec
test  mean loss=0.07370956073747947, accuracy=0.9775000071525574
epoch 3
train mean loss=0.04970679437314781, accuracy=0.9846500095725059, throughput=3811.6873914039775 images/sec
test  mean loss=0.0637695388092834, accuracy=0.9800000065565109
epoch 4
train mean loss=0.03488761224221283, accuracy=0.9886000087857246, throughput=3692.2595329471765 images/sec
test  mean loss=0.07119732037186623, accuracy=0.9786000061035156
epoch 5
train mean loss=0.028896143916257035, accuracy=0.9905666745702426, throughput=3695.4207240808023 images/sec
test  mean loss=0.07256504680110083, accuracy=0.9788000077009201
epoch 6
train mean loss=0.02374378211319102, accuracy=0.9921833403905232, throughput=3583.3320328487594 images/sec
test  mean loss=0.10043191654083784, accuracy=0.9744000059366226
epoch 7
train mean loss=0.020924357878029695, accuracy=0.992866672972838, throughput=3592.6140728613955 images/sec
test  mean loss=0.06807603047812108, accuracy=0.9835000067949295
epoch 8
train mean loss=0.017630842202852364, accuracy=0.9942500052849451, throughput=3537.208209028512 images/sec
test  mean loss=0.08859721799534782, accuracy=0.9785000056028366
epoch 9
train mean loss=0.018209161819856188, accuracy=0.9943000053366026, throughput=3460.3185817121116 images/sec
test  mean loss=0.08362272959568146, accuracy=0.980100005865097
epoch 10
train mean loss=0.013510788094675567, accuracy=0.9956166708469391, throughput=3414.213791867741 images/sec
test  mean loss=0.09247089847276073, accuracy=0.9814000064134598
epoch 11
train mean loss=0.013009410188321151, accuracy=0.9958500039577484, throughput=3326.4933053556624 images/sec
test  mean loss=0.09212554091344487, accuracy=0.9791000074148178
epoch 12
train mean loss=0.013966237730543677, accuracy=0.9955333373943964, throughput=3213.203793557963 images/sec
test  mean loss=0.07512530633225424, accuracy=0.9832000082731247
epoch 13
train mean loss=0.011328027055885741, accuracy=0.9966166697939237, throughput=3143.6668155565453 images/sec
test  mean loss=0.11614390091075905, accuracy=0.9787000072002411
epoch 14
train mean loss=0.011522313533887427, accuracy=0.9965333365400633, throughput=3069.061238992809 images/sec
test  mean loss=0.10542018069097821, accuracy=0.9778000056743622
epoch 15
train mean loss=0.014500913300751487, accuracy=0.9957000040014585, throughput=2994.8600530405492 images/sec
test  mean loss=0.10059675336371895, accuracy=0.9800000071525574
epoch 16
train mean loss=0.0079077750227475, accuracy=0.9975333355863889, throughput=2914.1439322729966 images/sec
test  mean loss=0.08044841805511829, accuracy=0.9852000093460083
epoch 17
train mean loss=0.006486849701715869, accuracy=0.9980333352088928, throughput=2828.4838384387863 images/sec
test  mean loss=0.10793283259050049, accuracy=0.9788000065088273
epoch 18
train mean loss=0.0125344805511196, accuracy=0.9963000035285949, throughput=2795.0638334358655 images/sec
test  mean loss=0.10538647441120699, accuracy=0.9828000074625015
epoch 19
train mean loss=0.009864346119461895, accuracy=0.9970833361148834, throughput=2750.219816402364 images/sec
test  mean loss=0.12158339534574539, accuracy=0.9794000047445297
epoch 20
train mean loss=0.012885340018372063, accuracy=0.9962166701753934, throughput=2738.190540420163 images/sec
test  mean loss=0.0986378959132702, accuracy=0.982900008559227
save the model
save the optimizer

初期設定では、GPUは使用しないモードになっているらしい。
稼働中はメモリ使用量はあまり変化ないけれど、CPU負荷率は100%近い状態になっていた。

GPUを稼働させてみたいなあ。。。

2016年6月17日金曜日

[Hackintosh] ASUS H110I-PLUS / NVIDIA GTX970 で夢を見た [Skylake]

ということで、忘れないうちに、夢の続きの話をしようか……。

用意したもの。
・8Gb以上のUSBメモリ(16Gb以上のUSB2.0が成功しやすいそうだ。)
・UniBeast
・MultiBeast
・KextBeast
・Clover Configurator

1.UniBeastでインストールディスクを作る。
選択するのは、El Capitan、UEFI Boot Modeのみ。
グラフィックオプションには手を触れてはいけない。

2.UniBeastで作ったインストールUSBからブートする。
インストーラーが立ち上がらない場合は、BIOSの設定に不具合が出ている。
インストーラーが途中でカーネルパニックを起こした時は、シリアルポートを止めたら回避できた。

3.インストール設定が終わったら、再起動がかかる。
この時の再起動は、必ずUSBメモリから起動し、OSXをインストールしたHDD/SDDを選択して、インストールを継続する。

4.一通りインストール設定が終わったら、MultiBeastを立ち上げる。
MultiBeastの設定は次の通り。



ポイントはグラフィックカードの設定についてはいじらないことだ。
すでに不完全な状況(HD530を誤認識していた)ではあるものの、NVIDIA GTX970は稼働しているので、あとでNVIDIAから適切なドライバをダウンロードし、インストールすれば良い。

4.シリアルナンバーをメモする
※自分のマシンの時は必要なかった。念のため。
Clover Configuratorを立ち上げる。
EFIドライブをマウントし、CLOVERディレクトリ内にあるconfig.plistを開く。
SMBIOSのなかにあるシリアルナンバーをメモっておく。

5.KextBeastをクリックして、インストール作業を行う。
インストール先は、/Library/Extensions を選択する。
インストール作業が終わったら削除して良い。

6.「このMacについて」で搭載メモリが正しく認識されていない場合。
Clover Configuratorを立ち上げる。
EFIドライブをマウントし、CLOVERディレクトリ内にあるconfig.plistを開く。
テキストエディターを使い、Memoryの設定項目に次のように情報を書き込んだ。


Size、Frequencyは搭載メモリの仕様をあらかじめ調べておくこと。
※張った後で気づいたが、ウチの環境だとSlotCountは2が正しい。
 実害はないから構わないんだが。

保存して終了する。

7.USBを抜き、HDD/SDDから再起動する。

8.NVIDIAのサイトへ行き、適切なグラフィックドライバをインストールする。

9.オーディオデバイスについて
もともとUnix、Linuxでオンボードオーディオデバイスを認識させることは難しい。
かつて自分もなんども敗退したところ。
今回もネットワークデバイスは1発で認識したのに、オーディオデバイスは認識しなかった。

対応方法を調べるのがめんどくさくて、USBオーディオ変換アダプタを買ったら一発で認識した。


僕が買ったのは「iitrust USB オーディオ 変換アダプタ」というヤツで、1000円もしない安物だけど、問題なく稼働。オーディオデバイスを認識しないと、動画ファイルなどが開けないので、結構重要なポイント。



いい夢を見ました。
ほんとうに、いい夢でした。



2016年6月16日木曜日

[Hackintosh] ASUS H110I-PLUS / NVIDIA GTX970 のBIOS設定 [Skylake]

問題のBIOS設定で見た夢を残しておきます。
これが正解かどうかはわかりませんが、少なくともこれで動いている夢は見れるということです。

項目が多いところはDefaultなど表記を端折っています。
要はなにも触っていないよと考えてくださいな。

あと本当に肝だったのは、
Graphics Configuration
Primary Display:Auto
iGPU Multi-Monitor:Enabled

というところでした。
NVIDIAを使うので殺しておくべき項目かと思ったのですが、ここをEnabledにしておくことで、とりあえずHD530で表示ができたり、最終的にNVIDIA GTX970の設定ができたりしました。

僕はNVIDIAの稼働を目指している時に、Primary DisplayをHD530やGraphic board固定などにしてしまったため、はまっていたのだと思います。

ここはAutoが正解のようです。

 ===========================================
Motherboad:ASUS H110I-PLUS BIOS Ver.0412
CPU:Core i5-6600 @3.30GHz
Memory:16384MB (DDR4 2133MHz)

SATA 6G_1:SanDisk UitraII 480GB(480.1G)
SATA 6G_2:TOSHIBA DT01ABA100V(1000.2GB)

CPU Core Ratio:Auto
DRAM Odd Ratio Mode:Enabled
DRAM Frequency:Auto
EPU Power Saving Mode:Disabled
CPU SVID Support:Auto
DRAM Timing Contral:all Default (No Touch)
DIGI+VRM:all Default (No Touch)
Internal CPU Power Management:all Default (No Touch)
DRAM REF Voltage Control:all Default (No Touch)

CPU Configuration:all Default (No Touch)
CPU Power Management Configuration:all Default (No Touch)

Platform Misc Configuration:all Disabled

System Agent(SA) Configuration
VT-d:Disabled

Graphics Configuration
Primary Display:Auto
iGPU Multi-Monitor:Enabled
RC6(Render Standby):Enabled
DVMT Pre-Allocated:128M

DMI/OPI Configuration:Auto
PEG Port Configuration:Auto
Memory Configuration:Enabled

PCH Configuration:Enabled

PCH Strage Configuration:all Default (No Touch)

USB Configuration
Legacy USB Support:Enabled
XHCI Hand-off:Enabled

USB Single Port Control:all Default (No Touch)

Onboard Devices Configuration
HD Audio Controller:Enable
Front Panel Type:HD Audio
DVI Port Audio:Disabled
Realtek LAN Controller:On
Realtek PXE OPROM:On
Charging USB devices in Power State S5:Disabled
Serial Port Configuration:Off

APM Configuration
ErP Ready:Enable(S4+S5)
Restore AC Power Loss:Power Off
Power On By PCI-E:Disabled
Power On By Ring:Disabled
Power On By RTC:Disabled

Network Stack Configuration:all Default (No Touch)

SSD SMART Information:all Default (No Touch)

Boot:all Default (No Touch)

さらに深い夢を見た……Hackintosh

ackintoshを作る上で、肝とされているのはマザーボード選びと言われてますが、僕の場合、手持ちの機材でなんとかしなきゃならない状況でした。

まあ、夢の話ですから、ダメな時はダメと割り切ってましたが。

成功したいならば、GIGABYTEのマザーボードを使うべきだそうですが、僕の手持ちはASUS。
しかもCPUがSkylakeという、わりと大変な組み合わせ。

幸いにも、El Capitanが10.11.4以降、Skylakeに対応したため、ハードルはものすごく下がっていたのはラッキーでした。

最初はインストーラー画面すら行き着かず。
その後は、インストーラーのリンゴのマークが出ても、プログレスバーが途中で止まったり、最終リブート後に画面が表示されなかったりと、なかなか悪夢を見ました。

最終的にわかったのは、BIOSの設定が問題だった。
Unibeastの設定が問題だった。
NVIDIA GTX970の設定タイミングが問題だった。

の3つが組み合わさって、問題が複雑化していたのでした。

2016年6月15日水曜日

[Success][Skylake] ASUS H110I-PLUS / NVIDIA GTX970 [hackintosh]

ここしばらく、がんばって挑戦していました。
Onboard Audioは認識させるのが難しかったので、USBオーディオ変換アダプタで対応してしまおうと思ってます。

Skylake、ASUS H110I-PLUSでの成功報告は、他で見かけたことがありません。
でも、サウンド以外はパーフェクトな感じで動いていますよ。

Hackintoshは、なかなかすごい夢でした。。。。

夢の内容は、また別の機会に。

2016年6月12日日曜日

窓の国と、美しい渓谷を行き来する……という夢を見た

Windows向けキーボードをMac OS Xで使う場合の夢。

キーボードの設定は、キーボード設定アシスタントから行うよ。
2度繰り返すと良いらしい。

Macキーボードのように、「英数」「かな」「Command」「Option」キーは変更したい。
その時は、Seilというツールを使うと良いんだ。

設定画面で上の段の一番下のFor Japaneseの3つをチェック
3つの一番下のEnable KATAKANA Key on PC KeybordのKeycodeを「104」に修正するよ。

この設定で、キーは次の割り付けになる。
Windowsキー = Command
Altキー = Option・Alt
無変換キー = 英数
変換キー、カタカナひらがなキー = かな

Ctrlも入れ替え可能らしいけど、僕は混乱しそうなのでやめた。


ホットキーを変更した夢も見た……。

C:\Users\誰かさん\AppData\Roaming\VMware\preference.ini で呪文を唱えた。

pref.hotkey.shift = "true"
pref.hotkey.control = "true"
pref.hotkey.alt = "false"
pref.hotkey.gui = "false"

これは、VMwaerゲストOSから、ホストOSへ戻るホットキーがあるのだけど、Windowsホストの場合は、Ctrl+Altなんだ。
僕の夢では、これをCtrl+Shiftに変更したんだよ。
これは好みの問題かもね。


それ以外に見たショートカットの夢……。

Windows10の仮想デスクトップを移動する : Ctrl+Windows+ ←→
ホストOSにフォーカスを変更する : Ctrl+Shift
VMwareを全画面表示にする(全画面表示を解く) : Ctrl+Shift+Enter

これを組み合わせて運用すると、こんな感じになる。

仮想デスクトップ1でWindowsを運用。
仮想デスクトップ2でどこかのEl Capitanが運用されている。

美しい渓谷を眺めに行くときは、Ctrl+Windows+ →

窓の国へ戻ってくるときは、一度Ctrl+Shift、そのあとにCtrl+Windows+ ←。


あ~、いい夢を見た。

2016年6月11日土曜日

あとはなだらかな道が続くよ……という夢を見た

進むべき道が決まったら、あとはなだらかな平坦な道を歩いてゆくだけ。




その先には、美しい渓谷が広がっていることでしょう。

あ~、いい夢を見た。


迷路のトラップに注意して進むんだよ……という夢を見た

火を入れて待っていると、そのうち食いかけの林檎があらわれるよ。


「覚悟」を問われたら、素直に「Yes!」と返答するんだ。
間違っても「のばら」とか言っちゃいけない。

OS Xインストールっていう画面が現れるよ。
戸惑うよね。
インストール先がないんだから。
僕もすごく悩んだよ。


そんな時は天井を見上げるんだ。
「ユーティリティ」という小部屋に「ディスクユーティリティ」という頼もしい味方がいる。


その場所にはキミが作って持ってきたディスクがいると思う。
それを選んで、過去のしがらみを消してもらうんだ。



消去の魔法が終わったら、小部屋から出ておいて。
ほら、キミの進む道が現れる。


あ~、いい夢を見た。


最初に林檎箱を作るけど、火は止めなくちゃいけない……という夢を見た

ちゃんと.isoファイルを移し替えたかい?

VMware Workstation Playerというツールを起動すると、4つのボタンが現れるよ。
まっさらな状態だからね、新規仮想マシンの作成ってのを選ぶんだよ。

そこからは指示通りに進んでゆけば良いよ。

だけど、火を入れる直前で一旦止めるんだ。
夢のスパイスで下味をつけると、おいしくなるからさ。

C:\Users\誰かさん\Documents\Virtual Machines\OS X 10.11 って場所で、OS X 10.11というファイルを探すんだ。
種類に「仮想マシン構成」と書いてあるだろう?
夢の仕様書ということかな。。。。

その仕様書の最後に、この5行の呪文を書き加えるんだ。

smc.version = "0"
keyboard.vusb.enable = "TRUE"
keyboard.vusb.idVendor = "0x0000"
keyboard.vusb.idProduct = "0x0000"

きっとキミの夢の続きに役立つはずだよ。

夢の仕様書を閉じたら、「仮想マシンを開く」を選んで、改めて火を入れよう。

あ~、いい夢を見た。


VMwareの鍵を開ける……という夢を見た

ある世界では、VMware Workstationというステキなツールが配られている。
僕らはプロじゃないからね、Playerで良いね。
version 12.11って語呂がいいんだか良くわからない。

気づいたら、VMware Workstation 12.11 Playerというヤツが、僕のPCにいた。

そのあとGoogle様が、Unlockerというものを教えてくれた。
手に入れた鍵束のなかに、win-installという魔法の鍵が見つかった。

「マスターとして実行」すると、呪文が流れてゆく。
これで、Playerに新しい仲間が加わるんだとか。

あ~、いい夢を見た。

OS X El Capitanのリカバリー用.isoを作る……という夢を見た

MacのOS X El Capitanが壊れてしまった場合に備えて、リカバリー用の.isoファイルを作っておこう。

Macを起動して、App Storeからダウンロードしてきます。
サイズは……すごく…大きいです。
約7.5Gくらい。

ダウンロードが終わったEl Capitanは、アプリケーションフォルダの中にいます。

Macのターミナルを起動して、不思議な呪文を唱えます。

#!/bin/bash

# Mount the installer image
hdiutil attach /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app

# Create the ElCapitan Blank ISO Image of 7316mb with a Single Partition - Apple Partition Map
hdiutil create -o /tmp/ElCapitan.cdr -size 7316m -layout SPUD -fs HFS+J

# Mount the ElCapitan Blank ISO Image
hdiutil attach /tmp/ElCapitan.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/install_build

# Restore the Base System into the ElCapitan Blank ISO Image
asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase

# Remove Package link and replace with actual files
rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/

# Copy El Capitan installer dependencies
cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist
cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg

# Unmount the installer image
hdiutil detach /Volumes/install_app

# Unmount the ElCapitan ISO Image
hdiutil detach /Volumes/OS\ X\ Base\ System/

# Convert the ElCapitan ISO Image to ISO/CD master (Optional)
hdiutil convert /tmp/ElCapitan.cdr.dmg -format UDTO -o /tmp/ElCapitan.iso

 # Rename the ElCapitan ISO Image and move it to the desktop
 mv /tmp/ElCapitan.iso.cdr ~/Desktop/ElCapitan.iso


デスクトップにElCapitan.isoが現れたよ、母さん。
じゃあ、これをUSBメモリにコピーしたらいいね。

あ~、いい夢を見た。

WindowsとMac両方で使えるUSBメモリ……という夢を見た

サイズは8G以上、最低16G以上あると幸せになれるね。
WindowsとMac両方から読み書きできるようになるには、FAT32形式でフォーマットが必要。

MacでフォーマットしたUSBメモリが、そのあとWindowsでは200MBしか認識しなくなってしまって困ってしまうことが時々あるよね。
そんな時は「SDカードフォーマッター」に頼るといい。

SDアソシエーションのサイト(https://www.sdcard.org/jp/downloads/formatter_4/)へ行って、「SD/SDHC/SDXC用SDフォーマッター」をダウンロードしてインストールする。

オプション設定で「論理サイズ調整」をONにしてフォーマットする。

やがて元通りの容量を取り戻したUSBが復活するだろう。

あ~、いい夢を見た。

2016年6月10日金曜日

あれ? Google AdSenseが有効になっている??

最近だと6ヶ月経たないとBloggerでAdSenseが有効にならないと言われていたが。。。
気づいたら今日から有効になってる。

ブログ開設から1ヶ月でAdSenseが認められたということか。
ありがたや~(^o^)丿

ただいま遊び用PCのセットアップ中

結局Windows10 ProfessionalベースのPCにすることにした。
Linuxはいろいろとディストリビューションを探してみたが、GUIのデザインがいかんかった。
長時間触っていたいという気持ちになれなかった。
CUIでサーバ用途には改めて考えてみたいと思う。

で、Vmwareで、これからごちょごちょインストール作業をする。
下準備作業がMacBook Proで進行中……。

2016年6月3日金曜日

やっちまった……

MacBook Proはコードを書くのつらいなあ……とか思っていて。
ただのワガママなんだけど、デスクトップ環境が欲しいなあ。
でも、iMacじゃないデスクトップって、気が遠くなるほど高価だなぁ。

悩んで、ハイエンドに近いグラフィックボード搭載機を注文してしまった。

Windows10マシンにするか。
Linuxマシンにするか。
はたまたOSX86の夢を見るか……。

ScanSnap周りが、Linuxではまだまだ整備されていないので困る。。。。

2016年5月22日日曜日

今週末はWindows10移行作業に費やす

今週末はBootCampで動いていたWindows7を、Windows10へバージョンアップする作業に費やされておりました。
いろいろとトラブって大変。

PythonはMacbookでお勉強中ですが、Windows10でbashが動くようになったら、Windows10で学習するのは楽になるかも知れない。
現状はPathを通すだけでも、いろいろとトラブルの元だし。

2016年5月17日火曜日

テキストエディタAtomをインストール

Atomというテキストエディタを導入します。
クロスプラットフォームで、結構評判が良いようですね。

ここからダウンロードして、インストール。
https://atom.io/

メニューを日本語化する場合は、「Preferences」→「Packages」→「Install」で、検索窓に「japanese」と入力して検索実行。「japanese-menu」を見つけたら、それをインストールする。

参照:
http://blog.nocorica.jp/2015/03/atom-package-install/

日本語化パッケージを出していただいて、感謝してます。

2016年5月16日月曜日

pyenvにパスを通しておく

Pythonを起動するときは、たとえばPython3の場合

 $ python3
Python 3.5.1 |Anaconda 4.0.0 (x86_64)| (default, Dec  7 2015, 11:24:55)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

こんな表示がされるはず。
起動しない場合は、pyenvのパスが通っていないか、または、普段使いのバージョンが設定されていないかどちらか。

パスを通す場合は、.bash_profileに設定を書き込むといい。

$ vi .bash_profile

PYENV_ROOT="$HOME/.pyenv"↲
export PATH="$PYENV_ROOT/bin:$PATH"↲
eval "$(pyenv init -)"

上記を保存して、Macを立ち上げ直してみる。
再びPythonを立ち上げて、設定通りのバージョンが立ち上がれば問題は解決。

pyenvでPython3をインストールする

では、pyenvでお好きなバージョンのPythonをインストールしてみます。
まず、インストール可能なバージョン一覧を表示してみます。

$ pyenv install -list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5
  2.5.1
  2.5.2
  2.5.3
  2.5.4
  2.5.5
  2.5.6
  2.6.6
  2.6.7
  2.6.8
  2.6.9
  2.7-dev
  2.7
  2.7.1
  2.7.2
  2.7.3
  2.7.4
  2.7.5
  2.7.6
  2.7.7
  2.7.8
  2.7.9
  2.7.10
  2.7.11
  3.0.1
  3.1
  3.1.1
  3.1.2
  3.1.3
  3.1.4
  3.1.5
  3.2-dev
  3.2
  3.2.1
  3.2.2
  3.2.3
  3.2.4
  3.2.5
  3.2.6
  3.3.0
  3.3-dev
  3.3.1
  3.3.2
  3.3.3
  3.3.4
  3.3.5
  3.3.6
  3.4.0
  3.4-dev
  3.4.1
  3.4.2
  3.4.3
  3.4.4
  3.5.0
  3.5-dev
  3.5.1
  3.6-dev
  anaconda-1.4.0
  anaconda-1.5.0
  anaconda-1.5.1
  anaconda-1.6.0
  anaconda-1.6.1
  anaconda-1.7.0
  anaconda-1.8.0
  anaconda-1.9.0
  anaconda-1.9.1
  anaconda-1.9.2
  anaconda-2.0.0
  anaconda-2.0.1
  anaconda-2.1.0
  anaconda-2.2.0
  anaconda-2.3.0
  anaconda-2.4.0
  anaconda-4.0.0
  anaconda2-2.4.0
  anaconda2-2.4.1
  anaconda2-2.5.0
  anaconda2-4.0.0
  anaconda3-2.0.0
  anaconda3-2.0.1
  anaconda3-2.1.0
  anaconda3-2.2.0
  anaconda3-2.3.0
  anaconda3-2.4.0
  anaconda3-2.4.1
  anaconda3-2.5.0
  anaconda3-4.0.0
  ironpython-dev
  ironpython-2.7.4
  ironpython-2.7.5
  jython-dev
  jython-2.5.0
  jython-2.5-dev
  jython-2.5.1
  jython-2.5.2
  jython-2.5.3
  jython-2.5.4-rc1
  jython-2.7.0
  jython-2.7.1b1
  jython-2.7.1b2
  jython-2.7.1b3
  miniconda-latest
  miniconda-2.2.2
  miniconda-3.0.0
  miniconda-3.0.4
  miniconda-3.0.5
  miniconda-3.3.0
  miniconda-3.4.2
  miniconda-3.7.0
  miniconda-3.8.3
  miniconda-3.9.1
  miniconda-3.10.1
  miniconda-3.16.0
  miniconda-3.18.3
  miniconda2-latest
  miniconda2-3.18.3
  miniconda2-3.19.0
  miniconda3-latest
  miniconda3-2.2.2
  miniconda3-3.0.0
  miniconda3-3.0.4
  miniconda3-3.0.5
  miniconda3-3.3.0
  miniconda3-3.4.2
  miniconda3-3.7.0
  miniconda3-3.8.3
  miniconda3-3.9.1
  miniconda3-3.10.1
  miniconda3-3.16.0
  miniconda3-3.18.3
  miniconda3-3.19.0
  pypy-c-jit-latest
  pypy-c-nojit-latest
  pypy-dev
  pypy-stm-2.3
  pypy-portable-2.3.1
  pypy-portable-2.4
  pypy-portable-2.5
  pypy-portable-2.5.1
  pypy-stm-2.5.1
  pypy-portable-2.6
  pypy-portable-2.6.1
  pypy-portable-4.0
  pypy-portable-4.0.1
  pypy-portable-5.0
  pypy-portable-5.0.1
  pypy-portable-5.1
  pypy-1.5-src
  pypy-1.5
  pypy-1.6
  pypy-1.7-dev
  pypy-1.7
  pypy-1.8-dev
  pypy-1.8
  pypy-1.9-dev
  pypy-1.9
  pypy-2.0-dev
  pypy-2.0-src
  pypy-2.0
  pypy-2.0.1-src
  pypy-2.0.1
  pypy-2.0.2-src
  pypy-2.0.2
  pypy-2.1-src
  pypy-2.1
  pypy-2.2-src
  pypy-2.2
  pypy-2.2.1-src
  pypy-2.2.1
  pypy-2.3-src
  pypy-2.3
  pypy-2.3.1-src
  pypy-2.3.1
  pypy-2.4.0-src
  pypy-2.4.0
  pypy-2.4-beta1-src
  pypy-2.4-beta1
  pypy-2.5.0-src
  pypy-2.5.0
  pypy-2.5.1-src
  pypy-2.5.1
  pypy-2.6.0-src
  pypy-2.6.0
  pypy-2.6.1-src
  pypy-2.6.1
  pypy-4.0.0-src
  pypy-4.0.0
  pypy-4.0.1-src
  pypy-4.0.1
  pypy-5.0.0-src
  pypy-5.0.0
  pypy-5.0.1-src
  pypy-5.0.1
  pypy-5.1-src
  pypy-5.1
  pypy3-dev
  pypy3-portable-2.3.1
  pypy3-portable-2.4
  pypy3-2.3.1-src
  pypy3-2.3.1
  pypy3-2.4.0-src
  pypy3-2.4.0
  stackless-dev
  stackless-2.7-dev
  stackless-2.7.2
  stackless-2.7.3
  stackless-2.7.4
  stackless-2.7.5
  stackless-2.7.6
  stackless-2.7.7
  stackless-2.7.8
  stackless-3.2-dev
  stackless-3.2.2
  stackless-3.2.5
  stackless-3.3-dev
  stackless-3.3.5
  stackless-3.4.1

こんな感じで、ドバッと一覧が表示されました。

ではanaconda3-4.0.0をインストールします。

$ pyenv install anaconda3-4.0.0

これでインストールされます。

インストール後、普段使いのPythonバージョンを指定します。
pyenvを使うと、複数のバージョンのPythonを併存させることが可能になります。

$ pyenv global バージョン番号

ターミナルを立ち上げ直して、Pythonのバージョンを確認して、指定通りになっていたら成功。

$ pyenv versions
  system
* anaconda3-4.0.0 (set by /Users/ユーザ名/.pyenv/version)

よく使うpyenvのコマンド

といっても、普段使いならば、それほど多くはないと思います。

■インストール可能なPythonのパッケージ一覧
$ pyenv install -list

■インストール
$ pyenv install バージョン

■アンインストール
$ pyenv uninstall バージョン

■インストール済みPython一覧
$ pyenv versions

■普段使いのPythonバージョンを指定
$ pyenv global バージョン

■Pythonのバージョンを調べる
$ python3 --version ←普段使いに指定されたPython3のバージョンを表示
$ pyenv versions ←インストールされているすべてのバージョンを表示

このくらいかな?

pyenvのインストール

Pythonのバージョンを管理するpyenvをインストールします。

HomeBrewがインストールされているので、次のコマンド一発でインストールされます。

$ brew install pyenv

rbenvのインストールよりも簡単だ。

よく使うHomebrewのコマンド

■インストール
$ brew install [Formula]

■アンインストール
$ brew uninstall [Formula]

■Homebrewの問題を調べる
$ brew doctor

■インストール可能なFormulaを探す
$ brew search [Formula]

■インストールされているパッケージ一覧を表示
$ brew list

■HomebrewとFormulaを更新
$ brew update

■パッケージの更新
$ brew upgrade

これだけあれば最低限のことは実現可能かと。
Rubyをインストール、運用した場合も同じノウハウが使えるのは助かる。

Homebrewをインストールする

OS X 10.11 El CapitanがインストールされたMacBook Proを使ってます。
Pythonはインストール済みですが、Homebrewをインストールして、Pythonのバージョンを管理します。

あらかじめ、Xcodeコマンドラインツールをインストールしておきました。
※最近はHomebrewのインストールと併せて自動でインストールされるらしいですが、僕は未確認。

GUI版Xcodeはインストールサイズがでかいので、コマンドラインツールのみインストールします。

・https://developer.apple.com/downloads/index.action にアクセス。
・Apple IDの認証を求められますが、Macユーザーなら持っているでしょう。
・リストが出てくるので Command Line Tools を選択しダウンロード。
・ダウンロードしたらインストール作業を行う。

Homebrewのインストールは、ターミナルを立ち上げて、次のコマンド一発です。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

インストールが終わったら、念のためにバージョンを確認してみます。
$ brew -v
Homebrew 0.9.9 (git revision d887; last commit 2016-05-06)
Homebrew/homebrew-core (git revision ee6e; last commit 2016-05-07)

さらにHomebrewに問題ないか、確認してみます。
 $ brew doctor
Your system is ready to brew.

上記メッセージが出たら、Homebrewのインストールは成功です。

ちなみに、$ brew doctorではこんな警告が出る場合があります。
 $ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: Your Homebrew is outdated.
You haven't updated for at least 24 hours. This is a long time in brewland!
To update Homebrew, run `brew update`.

こういうときは、説明通り、$ brew update を行ってやります。

2016年5月15日日曜日

Rubyから移行中

RubyからPythonへ移行中。
使いたい外部モジュールが、Ruby非対応だったためなんです。

確かな力が身につく Python「超入門」を読んでいます。
わりと分かりやすいんじゃないかな。