「ほっ」と。キャンペーン
注意:この状況は日々変化するようなので、
この記事の日付や、カーネルバージョン、
VMwareTools のビルドバージョンに注意してください。

host: Windows7 64bit
   VMwarePlayer6
guest: Ubuntu Server 14.04.2 64bit (GNU/Linux 3.16.0-30)

注)作ったVMをwin7 32bitの人にあげるため、
 あえて古いバージョンのVMwareを使っています

共有フォルダを行うためには、
VMwareTools をインストールする必要があり、
そのために gcc などが必要なので、
ゲスト OS インストール直後に以下を実施。
$ sudo apt-get install builed-essential

その後、VMwareTools をインストールする。
以下のページが一番細かくてよかった(ゲストOS違うけど大丈夫)。
CentOS6.2にVMware Toolsをインストールする | mawatari.jp
http://mawatari.jp/archives/centos-6-2-vmware-tools-install-log


普通であれば、これで終了、のはずなのだけど。

状況


そうだ、ゲストOS の Ubuntu Server のバージョンが 12 で古いから、
バージョンアップしてみよう!と思ったのがはじまり。
カーネルも全部バージョンアップしてみたら、
ゲスト OS が起動しなくなった。

その後、新規に VM を作ってみたが、
どれもゲストとの共有フォルダで失敗する。

・VMwarePlayer7 + Ubuntu Server14
・VMwarePlayer7 + Ubuntu Server12
・VMwarePlayer5 + Ubuntu Server12 ←数年前に成功した組み合わせなのに!
・VMwarePlayer6 + Ubuntu Server14

/mnt/hgfs 以下に何もない。

/etc/mtab, /etc/fstab に .host:/ に相当する記述がないので、
以下を実行するが、マウントされない。
$ sudo mount -t vmhgfs .host:/ /mnt/hgfs

/mnt/hgfs 以下も何も表示されない。
mtab や fstab に追記してみたが、変化なし。

VMwareTools がダメなら oss だぜ!と思ったけどやっぱりダメだった。
$ sudo apt-get install open-vm-tools


よく見ると、VMwareTools のインストール中に、エラーが出ていた。
エラーの詳細は以下のページとまったく同じ。
Linux 3.x の仮想マシンから VMware Fusion の共有フォルダが見えない - いままでのこと
HGFS fails to compile on kernel 3.16.2 ・ Issue #11 ・ rasa/vmware-tools-patches ・ GitHub
検索でお越しになる方のためにエラーメッセージの一部を書いておく。
vmhgfs-only/fsutil.h expected 'gid_t' but argument is of type 'kgid_t'
vmhgfs-only/file.c
incompatible type for argument 4 of 'HgfsSetUidGid'
HgfsAioRead
implicit declaration of function ' generic_file_aio_read'
HgfsAioWrite
implicit declaration of function ' generic_file_aio_write'

解決


VMwareTools のインストールに失敗していた。

VMwareTools のインストール中に、
エラーが出ていないことをちゃんと確認すること。
画面が流れてしまうし、
YES とか NO とか入力しなくてはいけないのでログをファイルに落とせないが、
エラー全部は見えなくても、
何か失敗していることはわかる。

VMwareTools を解凍して、vmhgfs-only のディレクトリで、
エラーが出なくなるまで、ソースの修正と make を繰り返す。
エラーが出なくなったら、それをインストールして解決。
make の仕方などは、以下のページを参照。
システムエンジニア☆あきき VMWareでhostとのファイル共有ができなくなって…対処
http://akiki2starlet.blog.fc2.com/blog-entry-7.html

make の前は必ず make clean を実施。

ソースの修正は、以下のページから、
自分のカーネルバージョンに合うものを探す。
パッチになっているが、大した量ではないので、
vi で手で直すのも可能。
vmware-tools-patches/patches/vmhgfs at master ・ rasa/vmware-tools-patches ・ GitHub
元のソースは必ずバックアップしておく。

確認


/mnt/hgfs 以下にマウントされるだけではダメで、
ファイルの送受信をしてみる。
それでエラーが出て何度かソース修正をやり直した。

以下のページに従って、VMwareTools の動作確認を行う。
VMwareToolsの動作確認・起動はどのようにすれば良いですか。 | ニフティクラウド
http://cloud.nifty.com/cs/catalog/cloud_faq/catalog_120416000931_1.htm


そのた情報


VMwareTools のバージョン確認方法
$ /usr/bin/vmware-toolbox-cmd -v


VMwareTools サービスの再起動方法
$ sudo service vmware-tools restart


VMwarePlayer のメニューからダウンロードした VMwareTools の
iso イメージは、ホストの以下のディレクトリにある。
以下は linux ゲスト向けのファイル。
C:\Program Files (x86)\VMware\VMware Player\linux.iso


VMwareTools は以下からダウンロードできる。
CDS Repository - /var/www/public/stage/session-43/cds/vmw-desktop/player
exe がダウンロードできるので、以下のページを見ながら解凍も可能。
解凍をくりかえすと、中から linux.iso が出てくる。
VMware Tools (9.2.2) をダウンロードする。 - 量産メモ
http://d.hatena.ne.jp/RMS-099/touch/20121109/1352452591

VMwarePlayer のメニューから VMwareTools のインストールに失敗した場合は、
この iso イメージを cdrom としてマウントしたら
インストールできるんじゃないだろうか。
これまではメニューからのインストールによく失敗していて、
面倒で放置していたのだが、今度失敗したらやってみよう。

VMwareTools は日々修正され、ビルドされているぽい。
前日ダウンロードしたものと、今日のビルドバージョンが違うということがあった。
また、ダンナも同じバージョンで新規インストールして試してくれたが、
ホストもゲストもまったく同じなのに、エラーは出ず、問題なく動いたらしい。
日によって挙動が違うのだろうか(謎
[PR]
# by xiaoxia | 2015-07-30 18:45 | ソフトウェア | Comments(0)
注:7/7 release v1.1.0 では以下の現象は出ませんでした。

chainer に付属の example である mnist が
私の win7 環境では動きませんでした。
ネットに情報が見当たらなかったのですが、
きっとみんな python マスターだから困ってないのでしょうね…。
そこで修正してむりくり動かしたので、
記事にしてみますよ。

chainer のバージョンは 1.0.1 です。
モリモリ開発が進んでいて
日々バージョンアップされそうな勢いなので、
ご注意ください。

mnist を使う例は以下から落とします。
chainer/examples/mnist at master ・ pfnet/chainer ・ GitHub
https://github.com/pfnet/chainer/tree/master/examples/mnist

ちなみに、chainer のインストール自体は、
このページ
Windowsにすごいインストールしにくい、ではありません。

とあったので、どんだけ大変なのかと思っていましたが、
個人的には、それほどではなかったです。
caffe に比べたら100万倍楽かも。
h2o を使うために、Anaconda を導入済みだったからだと思います。
Anaconda まじおすすめ。
NumPy とか SciPy とか pip とか pandas とか、大概入っています。
h2o については、また別途書くかも。書かないかも。

話を元に戻すと、
使用するデータファイルである mnist.pkl は、以下からダウンロードして、
解凍せずに、gz のままで同じディレクトリに置きます。
http://deeplearning.net/data/mnist/mnist.pkl.gz

最初、mnist.pkl を解凍して、
mnist を動かしてみたら、
python のエラーが出ました。
どこが悪いのか、train_mnist.py を1行ずつ試したところ、
31 行目で引っかかりました。
>>> mnist['data'] = mnist['data'].astype(np.float32)
Traceback (most recent call last):
File "<stdin>", line 1, in TypeError: tuple indices must be integers, not str

mnist に 'data' とかいうキーはないね、と言われてます。

mnist だけ見てみます。
>>> mnist
((array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]], dtype=float32), array([5, 0, 4, ...
, 8, 4, 8], dtype=int64)), (array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]], dtype=float32), array([3, 8, 6, ...
, 5, 6, 8], dtype=int64)), (array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]], dtype=float32), array([7, 2, 1, ...
, 4, 5, 6], dtype=int64)))

'data' なんていう文字列は見当たらないような???

データ型を追うのは目的じゃないので、
train_mnist.py を変更することにしました。
以下を参考に。

bluewidz nota: mnist.pkl.gz の読み込み方
http://bluewidz.blogspot.jp/2013/02/mnistpklgz.html

mnist.pkl は解凍せずに使うことにしました。
train_mnist.py L28 .. L38 を変更。
import gzip
N = 40000 # 元の60000だとデータ数より多いらしいので減らした
ff = 'mnist.pkl.gz'
f = gzip.open(ff,'rb') #注:exblogの投稿の仕様上、閉じカッコを全角にしてあります
train_set, valid_set, test_set=six.moves.cPickle.load(f)
train_set_x, train_set_y=train_set
x_train, x_test = np.split(train_set_x, [N])
y_train, y_test = np.split(train_set_y, [N])
N_test = y_test.size


これでちゃんと動いたのでOKということにしました。
D:\Python27\archives\chainer-master\examples\mnist>python train_mnist.py
load MNIST dataset
('epoch', 1)
train mean loss=0.33063835158, accuracy=0.898124998361
test mean loss=0.162676717639, accuracy=0.947100001574
('epoch', 2)
train mean loss=0.153755561546, accuracy=0.95172500208
test mean loss=0.131504864115, accuracy=0.960300003886
('epoch', 3)
train mean loss=0.11874152357, accuracy=0.962600004375
test mean loss=0.113062846968, accuracy=0.965400006771
('epoch', 4)
train mean loss=0.0971574839624, accuracy=0.969350008518
test mean loss=0.103983323704, accuracy=0.967700006366
('epoch', 5)
train mean loss=0.0857273762824, accuracy=0.973425008357
test mean loss=0.101200945508, accuracy=0.972000008821
('epoch', 6)
train mean loss=0.0790844700066, accuracy=0.974600008726
test mean loss=0.104126119157, accuracy=0.972800009847
('epoch', 7)
train mean loss=0.0749579791015, accuracy=0.97680000931
test mean loss=0.0958447372471, accuracy=0.973500008583
('epoch', 8)
train mean loss=0.0661980926926, accuracy=0.978375010192
test mean loss=0.0982851918356, accuracy=0.973100009561
('epoch', 9)
train mean loss=0.0584314434149, accuracy=0.9810750103
test mean loss=0.113216444734, accuracy=0.969900010228
('epoch', 10)
train mean loss=0.0602908361913, accuracy=0.980450012088
test mean loss=0.0879984638083, accuracy=0.976200011373
('epoch', 11)
train mean loss=0.0514875223837, accuracy=0.983800010234
test mean loss=0.0894974586042, accuracy=0.975600011349
('epoch', 12)
train mean loss=0.0548883137996, accuracy=0.983050012439
test mean loss=0.102420077655, accuracy=0.974400009513
('epoch', 13)
train mean loss=0.0512076163373, accuracy=0.984175011665
test mean loss=0.100468366765, accuracy=0.974800007343
('epoch', 14)
train mean loss=0.0500191870244, accuracy=0.984925010055
test mean loss=0.0993473297404, accuracy=0.975400010943
('epoch', 15)
train mean loss=0.0470136474677, accuracy=0.984850009531
test mean loss=0.105845116437, accuracy=0.975900011063
('epoch', 16)
train mean loss=0.0477901911164, accuracy=0.984475011379
test mean loss=0.106810954099, accuracy=0.976200010777
('epoch', 17)
train mean loss=0.0459414152225, accuracy=0.985275010765
test mean loss=0.0922556833585, accuracy=0.978700011969
('epoch', 18)
train mean loss=0.0427814637575, accuracy=0.987350009829
test mean loss=0.106742422327, accuracy=0.9767000103
('epoch', 19)
train mean loss=0.0439296430166, accuracy=0.985900009423
test mean loss=0.100506027883, accuracy=0.978100011945
('epoch', 20)
train mean loss=0.0382296479004, accuracy=0.98825000897
test mean loss=0.109894825316, accuracy=0.978100010157

D:\Python27\archives\chainer-master\examples\mnist>


いいですねー。
学習で 98.8% で、
test データでも 97.8% 出てます。

chainer については、これからもうちょっと色々試してみます。
[PR]
# by xiaoxia | 2015-07-01 17:47 | ソフトウェア | Comments(0)

[python][win7]pip と proxy

windows7 に chainer 入れちゃうぜ!とテンション上がったが、
入れようとしたら入らないよ。
proxy のエラーだよ。

D:\Python27\archives\chainer-master>pip install chainer
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connecti
on broken by 'ProxyError('Cannot connect to proxy.', gaierror(11004, 'getaddrinf
o failed'))': /simple/chainer/
Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connecti
on broken by 'ProxyError('Cannot connect to proxy.', gaierror(11004, 'getaddrinf
o failed'))': /simple/chainer/
Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connecti
on broken by 'ProxyError('Cannot connect to proxy.', gaierror(11004, 'getaddrinf
o failed'))': /simple/chainer/
Operation cancelled by user


環境変数 HTTPS_PROXY も HTTP_PROXY も指定してあるのだが。
でも結果的に間違いだった。
今まで大丈夫だったのは、ソフト側で対応しててくれたんだなぁ。

失敗
set HTTP_PROXY=http://username:passwd@proxy.example.com:port/
set HTTPS_PROXY=https://username:passwd@proxy.example.com:port/

成功
set HTTP_PROXY=http://username:passwd@proxy.example.com:port
set HTTPS_PROXY=https://username:passwd@proxy.example.com:port


このくらい気を利かせてくれと言いたい気もする。

これで挫けてしまったので、
Ubuntu に chainer 入れようと試みたり、
(会社の LAN のせいで、VM を NAT で接続できず、apt-get できなくて挫折)、
いや caffe にするかとか、
( GPU が AMD だから CUDA が使えないのでは。
  つかそもそも caffe が win に対応してねーわ。
  VM の Ubuntu は前述の理由で apt-get できないし…)
いろいろ紆余曲折して2日も無駄にしてしまった…(;´Д⊂
[PR]
# by xiaoxia | 2015-06-30 17:39 | ソフトウェア | Comments(0)
ログの名前:    System
ソース:      Microsoft-Windows-DNS-Client
日付:       2015/06/08 9:00:41
イベント ID:   1014
タスクのカテゴリ: なし
レベル:      警告
キーワード:    
ユーザー:     NETWORK SERVICE
コンピューター:  alpaca
説明:
名前 proxy.example.com の名前解決は、構成されたどの DNS サーバーからも応答がなく、タイムアウトしました。


イベントログをキレイにする企画第2弾。

このエラーは IPv6 絡みで出るエラーらしい。
解決方法は、以下の2つが多い。

(1) NIC の IPv6 を無効にする
「名前 ws.amazon.co.jp の名前解決は、構成されたどの DNS - マイクロソフト コミュニティ
http://answers.microsoft.com/ja-jp/windows/forum/windows_7-networking/%E5%90%8D%E5%89%8D-wsamazoncojp/d5eddf73-9742-49c0-8654-fbc93e8586e4
(2) レジストリ編集で IPv6 を無効化/優先度低
Windows 7 のイベントビューアに記録されたエラーに対処してみました 【 awgs Foundry 】
http://awgsfoundry.com/blog-entry-83.html#ev-errlog-09

私の場合は、
上記 (2) に加えて、
IPv4 のほうに指定していた DNS を
IPv6 のほうにもちゃんと指定することにした。
(たぶん IPv4 しか使ってないから放置していた)

ちなみに、IPv4 と IPv6 の変換はこんな感じ。

192.168.254.254 → ::FFFF:192.168.254.254

これでちょっと様子見。

追記:
結果として、原因は IPv6 まわりではなかったぽい。
というのは、上記の対処をして再起動したけれど、
同様のエラーが出たため。
proxy の名前解決をしなくていいように、
IP を直に指定したらエラーが出なくなった(当然)。

そのほか、proxy が実はちょっと違ったというのがある。
proxy.example.com だと周知されていたのだが、
windows のコマンドプロンプトで以下のコマンドを入力してみたら、
  > tracert proxy.example.com
最終的に、全然違う名前の proxy にたどりついた。
proxy.example.com は実体はないので、
そのために名前解決できないエラーになったのだろうと推測。

というわけで、最終的には、
そっちの全然違う名前の proxy の IP を直で指定した。
エラーは出ていない。
[PR]
# by xiaoxia | 2015-06-09 17:52 | コンピュータ関係 | Comments(2)
assemblyIdentity の processorArchitecture の値 x64 が無効です、
というエラーが、イベントログに残っている。
時刻は不定で、ほぼ毎日。

ログの名前:    Application
ソース:      SideBySide
日付:       2015/06/08 12:24:11
イベント ID:    63
タスクのカテゴリ: なし
レベル:      エラー
キーワード:    クラシック
ユーザー:     N/A
コンピューター:  alpaca
説明:
"C:\Program Files\r-3.2.0\Tcl\bin64\tk85.dll" のアクティブ化コンテキストの生成に失敗しました。マニフェストまたはポリシー ファイル "C:\Program Files\r-3.2.0\Tcl\bin64\tk85.dll" 行 9 のエラーです。 要素 "assemblyIdentity" の属性 "processorArchitecture" に無効な値 "x64" が指定されています。


あちこち調べてみたが、あまり情報がない。
違うな、情報はあるが、解決策がない。

調べていて、以下のページに当たった。

<runtime> の <assemblyIdentity> 要素 - MSDN
https://msdn.microsoft.com/ja-jp/library/b0yt6ck0(v=vs.110).aspx
processorArchitecture
省略可能な属性。
"x86"、"amd64"、"msil"、または "ia64" のいずれかの値で、プロセッサ固有のコードを含むアセンブリのプロセッサ アーキテクチャを指定します。 値の大文字と小文字は区別されません。 この属性にこれ以外の値を割り当てると、<assemblyIdentity> 要素全体が無視されます。 「ProcessorArchitecture」を参照してください。


えええええ。
省略できるならエラー出さないでよー。
エラーレベルは INFO とか WARN とかくらいでいいのにー。
x64 という値が設定不可なので、怒られているということはわかった。
じゃ、設定すべき値に書き換えましょう。


というわけで、リソースエディタで書き換えた!
※良い子はあまり真似しないように。
 プログラムが起動しなくなる危険があるので、
 ちゃんとバックアップを取ってから、自己責任で!
※ちなみに、使っているリソースエディタは
 ResourceHacker とか ResEdit とか XNResouceEditor とか、
 そのあたりを色々です。

今のところ、これでエラーは止まっている気がするので、
しばらく様子を見ることにする。
[PR]
# by xiaoxia | 2015-06-08 17:49 | コンピュータ関係 | Comments(0)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞