Quantcast
Channel: 女プログラマってどうよ?
Viewing all 77 articles
Browse latest View live

[office2013]外れたライセンスの謎

$
0
0

ミステリ風にしてみた。
いや、実際、原因は謎のままである。

OS: windows7 Enterprise SP1
Office: Microsoft Office Professional Plus 2013

はじめに
4/2 の朝、会社 PC を起動して、
Windows Update が 6 件当たって、
その中に、ずっと外していた IE11 があって
どうしようまあいいか、と思った朝。
(社内のイントラネットは IE11 は未対応)

MS word を起動したら、エラーメッセージが出た。
「この Microsoft Office は、ライセンス認証されていません。」
そんなはずはない。
自社はボリュームライセンスで MS 製品を使っている。
キー管理サービス (KMS) ライセンス認証を導入しており、
以前、自マシンに KMS のサーバも登録した。
そもそも、この Office をインストールしてから1年以上経っている。
認証されていないなら、もっと以前にエラーが出るはず。

突然消えたとしか思えない。

記念にキャプってみた☆

最初に確認
KMS サーバは同ドメイン内の違うLANにある。
そして、自社の場合、多くのトラブルはプロクシ設定周りである。
ので、一応、以下を確認。
・IEのプロクシの設定
・IEの「信頼済みサイト」にドメインが登録されている
・netsh winhttp show proxy で WinHTTP 設定を確認

slmgr.vbs で確認
Windows ソフトウェア ライセンス管理ツール であるところの
slmgr.vbs コマンドを使って、
ライセンスを確認。

C:\Users\kasumi>cscript %windir%\system32\slmgr.vbs /dli
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.


名前: Windows(R) 7, Enterprise edition
説明: Windows Operating System - Windows(R) 7, VOLUME_KMSCLIENT channel
プロダクト キーの一部: AAAAA
ライセンスの状態: ライセンスされています
ボリューム ライセンス認証の有効期限: 259200 分 (180 日)

キー管理サービス クライアント情報
  クライアント コンピューター ID (CMID): xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  登録 KMS コンピューター名: kms.example.co.jp:xxxx
  KMS コンピューターの拡張 PID: yyyyy-yyyyy-yyy-yyyyyy-yy-yyyy-yyyy.yyyyy-yyyyyyy
  ライセンス認証の間隔: 120 分
  更新間隔: 10080 分
  KMS ホスト キャッシュが有効です

C:\Users\kasumi>
ちゃんと KMS サーバも表示されるし、問題なさそう???
KMS サーバに ping を飛ばしてみたが、
ちゃんと ip reachable だった。

ospp.vbsで確認
Office 2013 Client Software License Management Tool であるところの
ospp.vbs コマンドを使って、
ライセンスを確認。

ospp.vbs コマンドは、office インストールディレクトリにある。
%ProgramFiles%\Microsoft Office\Office15\ とか。
長いので、以下、office インストールディレクトリを %insdir% で書いた。

■インストール済み全ライセンスの内容

C:\Users\kasumi>cscript %insdir%\ospp.vbs /dstatusall
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

---Processing--------------------------
---------------------------------------
SKU ID: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
LICENSE NAME: Office 15, OfficeProPlusVL_MAK edition
LICENSE DESCRIPTION: Office 15, RETAIL(MAK) channel
LICENSE STATUS: ---UNLICENSED---
ERROR CODE: 0xC004F014
ERROR DESCRIPTION: The Software Licensing Service reported that the product key is not available.
---------------------------------------
SKU ID: wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww
LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition
LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel
LICENSE STATUS: ---OOT_GRACE---
ERROR CODE: 0x4004F00D
ERROR DESCRIPTION: The Software Licensing Service reported that the application is running within the valid out of tolerance grace period.
REMAINING GRACE: 29 days (43102 minute(s) before expiring)
Last 5 characters of installed product key: BBBBB
    DNS auto-discovery: KMS name not available
    KMS machine registry override defined: kms.example.co.jp:xxxx
    Activation Interval: 120 minutes
    Renewal Interval: 10080 minutes
    KMS host caching: Enabled
---------------------------------------
---------------------------------------
---Exiting-----------------------------

C:\Users\kasumi>
MAK認証は使っていないので放置。
下のほうの、KMS認証で
SKU ID (Store Keeping Unit ID : 商品管理ID)は登録されているのに、
エラーコードが出力されている。
なんで?

■KMS認証の履歴

C:\Users\kasumi>cscript %insdir%\ospp.vbs /dhistorykms
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

---Processing--------------------------
---------------------------------------
Searching for KMS activation events on machine: XIAOXIA
Event ID: 12288

Coordinated Universal Time Written: 2015/03/30 4:54:56
ERROR/HOST: 0x00000000, 0x00000000, kms.example.co.jp
ERROR DESCRIPTION: N/A
---------------------------------------
Coordinated Universal Time Written: 2015/03/23 4:50:37
ERROR/HOST: 0x00000000, 0x00000000, kms.example.co.jp
ERROR DESCRIPTION: N/A
---------------------------------------
(中略)
---------------------------------------
Coordinated Universal Time Written: 2014/01/08 0:42:33
ERROR/HOST: 0x00000000, 0x00000000, kms.example.co.jp
ERROR DESCRIPTION: N/A
---------------------------------------
---------------------------------------
---Exiting-----------------------------

C:\Users\kasumi>
認証は週1回で行われているようだ。
前回も 2日前の 3/30 に、問題なくされたことがわかる。
時刻は UTC なので、日本時間の場合は +9 する。
大体、午後2時前くらいに認証してるぽい。
そうだったのか、知らなかった。

というわけで問題なし。

■再アクティベーション:解決

C:\Users\kasumi>cscript %insdir%\ospp.vbs /act
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww
LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition
LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: BBBBB
<Product activation successful>
---------------------------------------
---------------------------------------
---Exiting-----------------------------

C:\Users\kasumi>
キーも登録されているし、
KMS サーバも接続できるし、
今まで認証されてきた実績もあるので、
キーをアクティベーションすれば大丈夫だろうと踏んだ。
というわけで、アクティベーションしたら解決。

でもなんで突然こんなことに?
やっぱ Windows Update が原因なんじゃ?


[win7]assemblyIdentity の processorArchitecture の値 x64 が無効

$
0
0

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 とか、
 そのあたりを色々です。

今のところ、これでエラーは止まっている気がするので、
しばらく様子を見ることにする。

[win7]DNS の名前解決失敗のイベントログ

$
0
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 を直で指定した。
エラーは出ていない。

[win7][python]chainer の mnist を動かす

$
0
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
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 については、これからもうちょっと色々試してみます。

[VMware]ホストとファイル共有ができないのを解決

$
0
0

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

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

共有フォルダを行うためには、
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 は日々修正され、ビルドされているぽい。
前日ダウンロードしたものと、今日のビルドバージョンが違うということがあった。
また、ダンナも同じバージョンで新規インストールして試してくれたが、
ホストもゲストもまったく同じなのに、エラーは出ず、問題なく動いたらしい。
日によって挙動が違うのだろうか(謎

[Android]メモ:スーパーボイスレコーダーの音質

$
0
0

スーパーボイスレコーダー - Google Play の Android アプリ

録音の音質が7段階から選択できるのだが、
詳細がどこにも載ってない気がする。
みなさん困らないのん?
というわけで、実際に録音して見てみたよ。

┌─────┬──────┬─────────┐
│     │ビットレート│サンプリング周波数│
│     │ (kbps)  │  (kHz)     │
├─────┼──────┼─────────┤
│最高音質 │  64   │  44.1     │
├─────┼──────┼─────────┤
│より高音質│  48   │  44.1     │
├─────┼──────┼─────────┤
│高音質  │  32   │  44.1     │
├─────┼──────┼─────────┤
│中音質  │  24   │  22      │
├─────┼──────┼─────────┤
│低音質  │  16   │  16      │
├─────┼──────┼─────────┤
│より低音質│  16   │  11      │
├─────┼──────┼─────────┤
│最低音質 │   8   │   8      │
└─────┴──────┴─────────┘

ほほーこんな風になってたのか。


■そのたメモ
・録音ファイルの保存先 /mnt/sdcard/SuperVoiceRecorder/
・ファイル名 yyyy-mm-dd_hh'mm'ss.mp3


■感想
愛用はしているのだが、時々音とびする気がする。
最高音質~高音質まで、全部音とびするような。
Android で再生すると音とびするけど、PCだととばないとか、
PCでもMediaPlayerだととぶけど、mp3編集ツールだと平気とか、
再生するものによっても音とびしたりしなかったり。
Xperia SO-03D という古い端末を使ってるせいかもしらん。
リアルタイムに mp3 にソフトエンコしているのがつらいのかも。
数分程度の録音ならば、当然 PCM 録音アプリを使うほうがいいのだろうな。

Androidアプリをリバースエンジニアリングしてみる

$
0
0

目的
事の発端は、新しくお下がりされた Android 端末である。
標準音楽プレイヤーであるところのWALKMAN様が、私には激しく使いづらい。
前の端末に入っていた標準プレイヤーもイマイチ残念な子だったが、
そっちのほうがまだ良かった。
私が満足できるアプリも(無料では)存在しないようだ。
ならば自分で作るしかない。

しかしちゃんとした Android アプリは作ったことがない。
サンプルだのプロトタイプだのばかりである。
一から作るのは敷居が高い。
そうだ、前の端末の標準プレイヤーの作りを参考にさせてもらおう!

作業環境は windows7。
前の Android 端末はナイショ(使用規約的な意味で)。

準備
参考にしたページは以下。
Androidアプリケーションのリバースエンジニアリング | JUMPERZ.NET Blog

・参考にしたいアプリを前の端末から持ってくる
/system/apk 以下にいた。
少なくとも、*.apk, *.odex のセットが必要。
他に /system/framework も全部PCにコピーしておく。

・リバースエンジニアリング用ツールたちをDL

JDK
smali
baksmali
dex2jar
jad

smali と baksmali は以下から jar を落とす。
Downloads - smali - An assembler/disassembler for Android's dex format - Google Project Hosting

dex2jar は以下。
Downloads - dex2jar - Tools to work with android .dex and java .class files - Google Project Hosting

jad はこちら。
JAD Java Decompiler Download Mirror

apkを解凍
フツウにzip解凍すれば良い。

./myapk/ などをテキトウに作成して配置。

odex → smali
DOS窓で以下を実行。
.\myapk\smali\ 以下に各種ファイルが作成される。
-d の後のは、 /system/framework をコピーしたディレクトリ。
> java -jar baksmali.jar -a 9 -x appli.odex -o .\myapk\smali\ -d .\framework

引数なしで実行するとヘルプが出るので参考にする。

jar や -d の後のディレクトリなどは、ちゃんとパスが解決できるように指定すること。

-a の後の API-Level はこちらで調べた。
AndroidのバージョンとAPIレベルの対応関係

smali ファイルなんか見てもわからないので、作業を続けて *.java にしていく。

smali → dex
dex2jar に掛けるために、いったんdexにする。
.\myapk\smali\ 以下のファイルを dex に変換。
> java -jar smali.jar -o .\myapk\appli.dex .\myapk\smali\

dex → jar
.\myapk\appli_dex2jar が作成される。
> dex2jar.sh .\myapk\appli.dex

jar → class
.\myapk\class などを作って、フツウにzip解凍

class → java
.\myapk\class 以下を再帰的にデコンパイルして
*.java というファイル名にして、.\myapk\src ディレクトリに出力。
ディレクトリ構造をそのまま保持してくれるのは嬉しい。
> jad -o -r -sjava -d.\myapk\src .\myapk\class\**\*.class

「Couldn't fully decompile method ...」とか
たくさんのエラーが出るけど、
自分で作るための参考にするだけで、
大まかにわかれば良いので、これでおk。

サンプリング周波数とかビットレートとか

$
0
0

自分の中でごっちゃになっていたので、まとめてみた。

用語
■サンプリングレート
(=サンプリング周波数)
44.1kHz ならば、44100回/秒でデータを取る
波の横幅(細かさ)=音の高さ

サンプリング定理(周波数の2倍でサンプリングすれば元を再現可能)より、
音声周波数22kHzまではサンプリングできる計算になる。
普通のCDは20kHzまでしか録らないのでこれで十分。

ところでサンプリング定理って、
よくわかってないんだけど、
1周期中2点をサンプリングして、
その間を再現するのは正弦波で近似ってまじすか?
追記:
サンプリング定理はフーリエ変換した結果についての定理なので、
そこで言う周波数とは自ずと正弦波に限定されます。
「サンプリング周波数(fs)の半分未満の正弦波しかサンプリングできない」
というのがサンプリング定理。
だそうです。

■量子化ビット
(=ビット深度)
16ビット ならば、波形の高さを2^16に分割する。
波の高さ=音の大きさ

ビットレートは転送(処理)速度で、単位bps。
量子化ビットとは全然別物。

ちなみに量子化はクオンタイズと言うが、
クオンタイズビットとは言わないらしい。
クオンタイズというと、
DTMらへんでは音のタイミングを合わせる、とかそんな感じ。

追記:
縦軸の単位はdBではないらしい。
音を電圧に変換したときの波になるので、
音圧とは直接的にイコールではないようだ。
ここは電気の話になるのでまったくわからない。
難しい。

ビット深度とビットレート
wikipedia より。
ビットレート = (ビット深度)* (サンプリング周波数)* (チャンネル数)
例えば、サンプリング周波数 44.1kHz、ビット深度 16ビット、2チャンネル(ステレオ)の場合のビットレートは次のようになる:
   16 * 44100 * 2 = 1411200 ビット/秒 = 1411.2 kbps

ビットレートとは、単位時間に処理されるデータ量を意味する。

上記の例は CD の場合。
mp3 は、再生機の仕様が最大 320kbps となっていることが多い。
この数字と 1411.2kbps は大分違うように思うが、
この bps は圧縮後のデータ処理速度なので、
CD のビットレートと mp3 のビットレートを比較しても、音質とは無関係。
192kbps の mp3 でも、プロでも wav と聞き分けができないほど
音質は問題ないらしいという話も。
私個人は聞き比べたことがないのでわからない。
録音品質が相当悪くても気にならないタイプだからかも。

身近な仕様
■CD
サンプリング周波数 44.1kHz
音声周波数帯域 20Hz~20kHz
ダイナミックレンジ 96dB(=1ビット6dB * 16bit)

■DVD Audio
サンプリング周波数 48kHz,96kHz,192kHz
音声周波数帯域 ~88kHz(192kHz)
ダイナミックレンジ約146dB(量子化ビット 24bit)

レンジ 96db って、どこを中心にしているのだろう?
というのはおかしいかもしれないが、
0db は音がない状態ではない(私の左耳の聴力は 4kHz で -5db だ)ので、
極端な話 -96db ~ 0db ということもありうるんだよね?
そのあたりは、ミキサーとかプロデューサとかの好みなんだろうか。

あと、レンジが 96db あっても、
イヤホンあたりでは全部再現できないのではないか。
ちゃんとしたウーファーとか要りそう。

今後
ここまで調べて、ロスレスに興味出てきた!
よく見かけるのって、FLAC とか Apple Lossless あたりかな。
とうとうハフマン符号化をちゃんと理解せねばならん時が来たかも(笑

プログラミングできる天才ちょっとこい
ハフマン符号化ってなに?
http://nantara.blog73.fc2.com/blog-entry-461.html


Win7 に BitLocker を入れてみた

$
0
0

OS : Windows 7 Enterprise
CPU : Core i5-4570

BIOS で起動順を変更する必要があるかもしれない。
ハードの詳細やBIOSの設定については
以下の記事を参照。

HP ENVY 700-060jp に Windows7 64bit をインストール
http://xiaoxia.exblog.jp/18756770

ハードが TPM 対応していないので、システムドライブは暗号化できなかった。
TPM 対応していないハードでも、
USBメモリがあればシステムドライブを暗号化できるが、
社内規定でUSBメモリは使えないため、
システムドライブの暗号化は無理ということが判明した。

ドライブ暗号化の要件は以下を参照。
Windows 7 用の BitLocker ドライブ暗号化の手順ガイド
BitLocker ドライブ暗号化の要件
http://technet.microsoft.com/ja-jp/library/dd835565(v=ws.10).aspx#BKMK_require

そこで、システムとデータを別ドライブにして、
データドライブのみ暗号化を行った。
システムドライブを暗号化した場合、
最悪起動しなくなる恐れがあるけれども、それも回避できて、
個人的には一石二鳥。
(参考:ITアーキテクトの「やってはいけない」
- [Windows 7編]ドライブを丸ごと暗号化してはいけない:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20100824/351405/ )

TPM 対応していない場合、
よく「ローカル グループ ポリシー エディター」(gpedit.msc)を起動して
設定変更する手順が web に載っているけれど、
データドライブのみ暗号化するのであれば、
この変更は不要ぽい。

暗号化後、1日経ったけど、特に問題なく、
シームレスに使えている。

手順

画面のキャプチャはあちこちに載っているので、
そちらを見てね。
例えばこことか。
【連載】すぐわかるWindows7 第13回 BitLocker<1>|アスキーPC|編集部ブログ
http://asciipc.jp/blog/windows7/windows713bitlocker/

(1)
エクスプローラで、ドライブを選択して右クリックすると
「BitLocker を有効にする」の項目が出るので、
そのまま選択。

(2)
「パスワードを使用してドライブのロックを解除する」にチェック。
パスワードを適宜入力。

(3)
「回復キーをファイルに保存する」を選択。
前述の理由で、USBメモリは使えないし、
印刷だけでは、印刷物をなくしたら終わりなので、ファイル出力。
ファイルの場所を選択。

回復キーファイルを印刷して厳重に保管する。
そのほか、ファイルは
別のマシンにも保存しておく。
とにかく複数の方法であちこちに保存しておく。

(4)
暗号化が開始される。
暗号化にかかった時間は 500GB のドライブで約10時間。
(200GBくらい使用済)

(5)
毎回、再起動後、暗号化したドライブを右クリックしてパスワードを入力。

すごく面倒くさいので、
以下のページを見て、バッチファイルを作成し、
タスクスケジューラで登録して
「最上位の特権で実行する」にチェックを入れると良いぽい。
dsp74118の補完庫: BitLocker/Bitlocker To Goの自動ロック解除についてちょっと研究
http://dsp74118.blogspot.jp/2012/07/bitlockerbitlocker-to-go.html

追記:
バッチファイルをスタートアップに入れるだけでは
管理者ユーザでも管理権限がないので、以下のようなエラーになり、
unlock できない。
BitLocker ドライブ暗号化: 構成ツール Version 6.1.7601
Copyright (C) Microsoft Corporation. All rights reserved.

エラー: 必要なリソースにアクセスしようとしましたが拒否されました。

コンピューターの管理権限があることを確認してください。
バッチファイルのショートカットをスタートアップに入れて、
このショートカットを「管理者として実行」しても、
「このコンピュータへの変更を許可しますか」という
UAC ウィンドウがいちいち表示されて面倒くさかった。
というわけで、タスクスケジューラに入れると、
管理権限で実行できて、UAC ウィンドウも出ないで済むぽい。
タスクのスケジュールを設定する - Windows ヘルプ

[Windows7] PC でパケットキャプチャ

$
0
0

今日はパケットキャプチャしてみたよ!
もちろん仕事だよ!

OS : Windows7 64bit

目的
自分の PC に来たパケットをキャプチャして、
スクリプトで編集できる形式(text)のファイルが欲しい。

用意するもの
・Microsoft Message Analyzer
・Wireshark

どっちも無料。
そしてどっちも英語。
だけど、まぁ多分大丈夫。

手順

コマンドプロンプトを管理者権限で開く
メニュー → アクセサリ → コマンドプロンプトのアイコンを右クリック
  管理者で開く

パケットをキャプチャ
netsh trace start capture=yes traceFile="C:\file_%date:/=%_%time::=%.etl"
netsh trace stop で終了

以下のような2ファイルが作成される
例) file_20141014_235900.00.etl, file_20141014_235900.00.cab

traceFileオプションを指定しない場合は、
 %TEMP%\NetTraces フォルダー内に NetTrace.etl, NetTrace.cab ができる

Microsoft Message Analyzer で変換
Microsoft Message Analyzer で *.etl ファイルを開く
Save As → Export で、*.cap で保存

Wireshark で変換
Wireshark で *.cap を開く
Print → Plain Text
     Browse... で出力ファイルを指定して Print

最終結果はこんな感じ。
No. Time Source Destination Protocol Length Info
   1 0.000000000 fe80::xxxx:xxxx:xxxx:xxxx ff02::x:x LLMNR 86 Standard query 0xaf28 A isatap

Frame 1: 86 bytes on wire (688 bits), 86 bytes captured (688 bits)
Ethernet II, Src: xxxx-_xx:xx:xx (xx:xx:xx:xx:xx:xx), Dst: IPv6mcast_xx:xx:xx (xx:xx:xx:xx:xx:xx)
Internet Protocol Version 6, Src: xxxx::xxxx:xxxx:xxxx:xxxx (xxxx::xxxx:xxxx:xxxx:xxxx), Dst: ff02::x:x (ff02::x:x)
User Datagram Protocol, Src Port: xx (xx), Dst Port: xx (xx)
Link-local Multicast Name Resolution (query)

No. Time Source Destination Protocol Length Info
   2 0.000033600 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx LLMNR 66 Standard query 0xaf28 A isatap

Frame 2: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: Hewlett-_xx:xx:xx (xx:xx:xx:xx:xx:xx), Dst: IPv4mcast_fc (xx:xx:xx:xx:xx:xx)
Internet Protocol Version 4, Src: xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx), Dst: xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)
User Datagram Protocol, Src Port: xx (xx), Dst Port: xx (xx)
Link-local Multicast Name Resolution (query)
...

[ruby]win7 って messagepack-rpc 入る?

$
0
0

今日は ruby の MessagePack を試してみたよ!
これももちろん仕事だよ!
我ながら色々手出してるよね!

そして解決していない内容だから、
あんまり参考にならないと思うよ!

インストール
こんな感じでインストール開始。
gem install msgpack-rpc

通常なら gem install をすると、
Fetching ... というようなメッセージが出るが、
何も表示されない。
そして
 突然コードページが変わる
 「マシン名#」というプロンプトが出る
という状態になって、そこで停止。
プロンプトが出たので「exit」で抜けてみたら、
mkmf.rb あたりのエラーが。
キャプ取るの忘れたんだけど、確かこんな感じの。
checking for main() -l *** extconf.rb failed ***

gem fetch のみ実行すると正常に実行できて、
gem が落ちてくるので、
gem ファイルを指定して gem install --local をしてみたが、
同じエラーが出て、進まない。
原因がわからない(あんまり追ってない)。

いろんなパッケージを入れてみる
で、とりま Rails と DevKit をインストールしてみた。

再度 msgpack-rpc をインストールしてみる。
> gem install msgpack-rpc
Temporarily enhancing PATH to include DevKit...
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory @ realpath_rec - D:/Ruby/21-x64/lib/ruby/gems/2.1.0/gems/cool.io-1.1.1
cool.io がないって言われても…。

cool.io を単独でインストールしてみた。
これは成功した。

再再度 msgpack-rpc をインストールしてみる。

stat_watcher.c: In function 'Coolio_StatInfo_build':
stat_watcher.c:249:13: error: 'ev_statdata' has no member named 'st_blksize'
stat_watcher.c:250:13: error: 'ev_statdata' has no member named 'st_blocks'
make: *** [stat_watcher.o] Error 1

make failed, exit code 2
ev_statdata ってなにこれ?
まだダメぽい。
ちょっと…かなりイヤになってきた…。

gem list をしてみたら、
messagepack-rcp の依存関係にある rev が入っていない。
gem install rev をする。
成功。
しかし、messagepack-rpc のエラーは変わらず。

openssl-nonblock が必要という話も見たので、
ここのページを見て、 openssl-nonblock も入れてみたが、
このパッケージ自体のインストールに失敗。
rubyのmsgpack-rpcをインストールしようとしたらできなかった - うどん駆動開発
http://d.hatena.ne.jp/r_takaishi/20100914/1284455719

完全に脱落しました(´・ω・`)

もうやだorz
この後、Ubuntu で試したら、さらっと行きました。
ひょっとして Win7(64bit) て、messagepack-rpc が入らない?

[Ubuntu][Ruby] MessagePack-RPC が動かないときに確認

$
0
0

昨日 windows7 ruby に MessagePack-RPC を入れ(ようとして脱落し)た記事を書いたけど、
もうホントに、心底、脱落したわよ(笑
だから Ubuntu に入れることにしちゃった♪
で、とりま動いたので、ここまでで困ったことをメモしておくよ。

動かなかったり、エラーが出た場合の
主に環境を作る段階での確認事項など。

確認すること

実際に実行されるファイル
「ruby」で実行されるファイルのパスやバージョン
「gem」で実行されるファイルのパスやバージョン
バージョン
ruby -v で見られるバージョン
gem -v で見られるバージョン
以下のリンク先
/etc/alternatives/ruby
/etc/alternatives/gem
/usr/bin/ruby
/usr/bin/gem
gems の各種情報
gems env で、リポジトリを調べる(httpsだとダメな場合あり)
gems list で、インストールされているパッケージやバージョンを確認


不整合がある場合は、何とかして修正すること。
基本的に apt-get だの gem だので正式に直すのだけど、
リンク先については、手でモリモリ直すものみたい。

ruby1.8, ruby1.9, ruby2.0 など、それぞれのバージョンで
gem の update のやり方などが違うようなので、
ちゃんと確認すること。
特に 1.8 から 1.9 に上がったあたりで、
gem ががっつり変わったぽいよ。
lib の格納場所なんかも変わってるらしいよ。

そのた注意点

・プロクシのある環境
 環境変数にプロクシを指定しても、gem が動かない場合がある
 sudo をつけて実行するときなど、
 gem install などをする際は、-p http://IP:port/ のように指定してみる

・MessagePack のサーバを実行後、EADDRINUSE 系のエラーが出た場合
 ポートが使用中で bind できないという意味
 使用されていないか調べ、当該ポートを使用しているプロセスをkillする
 「netstat -anp」などで表示できる

思いついたらまた追加するわ。

PR: 特別価格で!ルフトハンザの新プレミアムエコノミー

$
0
0
スペースが最大50%アップ、手荷物2個無料、ラウンジアクセス。羽田路線に新登場。

[Windows7] タスクマネージャのグラフの値を取得する

$
0
0

先日、パケットキャプチャしてみたのだが、
実は 一番やりたかったことは、
NIC の I/O の値を取るってことだったの。
sar の rxbyt/s と txbyt/s みたいなのを見たかった。
windows に sar コマンドがあればいいのに。

もしかして、タスクマネージャのネットワークタブで表示される
グラフの数値が取れればいいんじゃないの?ってことで、
その数値を取得するメモ。

特にネットワークの値が欲しかったので、
その内容に特化して書いたけど、
同様のやり方で、CPU 使用率とか、色々取れるよー。

方法

(1)データ収集の設定
パフォーマンス・カウンタの値を収集する。
以下のページを見て、データ取得の設定をする。

パフォーマンス・カウンタのデータをスケジュールに従って収集する(Windows Vista/Windows 7/Windows Server 2008編) - @IT

「記録するパフォーマンスカウンタを選択」の項で、
「Network Interface」 の中の
「Bytes Received/sec」と「Bytes Sent/sec」を選択して「追加>>」。

ICMP とか HTTP とか TCPv6 とか UDP とかあるけど、
sar 相当なら、上記の設定で良いっぽい。

(2)ログを記録、保存
一定時間、実行して記録したら、右クリックなどで「停止」。

(3)出力ファイルを開いて変換
C:/PerfLogs/Admin/データコレクタセット名/マシン名_日付/ファイル名.blg などに出力されるので、
このファイルを開く。
デフォルトはパフォーマンスモニタで開かれる。

どこでも良いので、画面上で右クリック、
「データを保存」を選択して、csv 形式で保存する。

最終結果はこんな感じ。
15秒ごとに取得。
Teredo とか isatap とか必要なのかは良くわかってない。
ウチの LAN て IPv6 使ってたっけ?


"(PDH-CSV 4.0) (","\\MachineName\Network Interface(Teredo Tunneling Pseudo-Interface)\Bytes Received/sec","\\MachineName\Network Interface(isatap.{XXX})\Bytes Received/sec","\\MachineName\Network Interface(isatap.{XXX})\Bytes Received/sec","\\MachineName\Network Interface(Realtek PCIe GBE Family Controller)\Bytes Received/sec","\\MachineName\Network Interface(isatap.{XXX})\Bytes Received/sec","\\MachineName\Network Interface(Teredo Tunneling Pseudo-Interface)\Bytes Sent/sec","\\MachineName\Network Interface(isatap.{XXX})\Bytes Sent/sec","\\MachineName\Network Interface(isatap.{XXX})\Bytes Sent/sec","\\MachineName\Network Interface(Realtek PCIe GBE Family Controller)\Bytes Sent/sec","\\MachineName\Network Interface(isatap.{XXX})\Bytes Sent/sec"
"10/14/2014 23:57:28.195"," "," "," "," "," "," "," "," "," "," "
"10/14/2014 23:57:43.198","0","0","0","774.44912872811244","0","0","0","0","0","0"
"10/14/2014 23:57:58.193","0","0","0","1409.6238705208716","0","0","0","0","10.80324851094622","0"
"10/14/2014 23:58:13.196","0","0","0","798.73811482102087","0","0","0","0","0","0"
"10/14/2014 23:58:28.193","0","0","0","753.44294505548942","0","0","0","0","10.802527400565474","0"
"10/14/2014 23:58:43.197","0","0","0","762.42352784619686","0","0","0","0","0","0"
"10/14/2014 23:58:58.194","0","0","0","1024.1740698628537","0","0","0","0","10.802539183396204","0"
"10/14/2014 23:59:13.199","0","0","0","813.22526171396839","0","0","0","0","0","0"
"10/14/2014 23:59:28.197","0","0","0","675.37976930023842","0","0","0","0","10.801808927499124","0"


[未解決]VirtualBox 起動するとホストでキーボードが使えない

$
0
0

はじめに
タイトル通りの内容です。

ホスト:Windows7 Enterprise
USB機器:
  USBハブ+USB変換機(オーテク)+PS2キーボード(IBM SpaceSaver)
  ELECOM タッチパッド

いつもは VM は VMWarePlayer を愛用しているのですが、
商用利用ができないので、
展示会でのデモ用に VirtualBox 4.3.26 を入れました。
まだ色々問題も聞きますが、デモのためには仕方がない。

で、既に作成してあった VirtualBox の VM を起動したところ、
ホスト側でキーボードがまったく使えなくなりました。
タッチパッドは使えます。
VirtualBox を終了してもキーボードは使えないので、
仕方なく Windows を再起動しました。

ゲスト側では、キーボードの一部とタッチパッドは使えます。
キーボードに付いている、
ポインティングデバイス(赤い丸とボタン)は使えません。

実施1:VirtualBox の USB 機器に登録→失敗
VirtualBox の設定中にある、USB機器の一覧に
キーボードとタッチパッドを登録しました。
「メーカー」「製品名」「シリアル番号」は空欄にする、と
書いてあるブログを見つけたので、
その通りにしました。

結果は失敗でした。
ホスト側では、
タッチパッドは使えるのですが、
やはりキーボードは使えなくなります。

実施2:Extension Pack を入れる→失敗
USB がらみのトラブルは、Extension Pack を入れるといいよ!という
内容を良く見かけたので、
入れてみました。

状況は変わりません。

まとめ:未解決です
というわけで、誰か助けてー!(笑)

ちなみに、他のマシン(Thinkpad)では
同じ VM が問題なく動作しています。
くやしい。


[SVN]Pristine Text Not Present

$
0
0

SVN を使っていたらこんなエラーメッセージが。
検索して、以下のページを発見。
SVNがらみ - AkiWiki - Pristine Text Not Present
それを治す方法は2つ。
  ・再チェックアウト
  ・SmartSVNを使って Validate Admin Area メニューを実行する。
ということなので、
SmartSVN を入れてみた。

ちなみに、
このエラーメッセージが出た原因は不明。
1GB超えの、でかファイル(VMイメージ)が複数あったので、
チェックアウトを中断したりしてたのが原因かも。
(だってDLが終わらないんだもの)

脱線:SVN クライアント
・TortoiseSVN
シェル統合されるのが、ものすごく嫌いだ。
常に SVN を使っているわけではなくて、
必要なときだけ使っているので、
のべつ幕なしに右クリックがべろーんと出るとか、
ちょっと邪魔くさすぎる。

・RapidSVN
ウチの会社のNW環境は、
プロクシだの認証だのがかなり鬱陶しいのだ。
そういう環境を乗り越えるジャンプ力はないみたい。
見た目シンプルで、
SVN のコマンド+アルファくらいの感じは嫌いじゃないだけに残念。

・eclipse
というわけで、現在使っているのはこれ。
エンジニアに憧れているので。
やっぱエンジニアなら IDE で全部済ませるよね!ふは!

Validate Admin Area ってどこ?
SmartSVN を入れてみた。
全部英語だが、SVN 使っている人なら困らない程度の英語である。

ローカルのチェックアウト済みリポジトリを読み込んでみたが、
どこにも Validate Admin Area なんてメニューがない。
と思ったら、どうもコンフリクトしないと表示されないもののようだ。
表示されている画面例をようやく見つけた。
Missing pristine files in SVN working copy | About Git, SVN, and other VCS

オススメの解決法
私の場合は、やっぱり「再チェックアウト」が良いようだ。

というのも、
SmartSVN でいじった後、
eclipse でエラーになって、まったくいじれなくなってしまった。
どうも SmartSVN と eclipse で、
SVNクライアントのバージョンが違ったのが原因のようだ。
……面倒くさい。
そんなこと調べるくらいなら、再チェックアウトするわ。
というわけで、「私の場合は再チェックアウト」と書いたのは
そういう理由である。

今回の現象は SmartSVN が悪いのではなく
複数のクライアントを使う場合は、発生しがちだろうと思う。
というわけで、
  複数クライアントを使う場合は、
  各クライアントのバージョンに注意
というのが、今回の教訓。

[office2013]外れたライセンスの謎

$
0
0

ミステリ風にしてみた。
いや、実際、原因は謎のままである。

OS: windows7 Enterprise SP1
Office: Microsoft Office Professional Plus 2013

はじめに
4/2 の朝、会社 PC を起動して、
Windows Update が 6 件当たって、
その中に、ずっと外していた IE11 があって
どうしようまあいいか、と思った朝。
(社内のイントラネットは IE11 は未対応)

MS word を起動したら、エラーメッセージが出た。
「この Microsoft Office は、ライセンス認証されていません。」
そんなはずはない。
自社はボリュームライセンスで MS 製品を使っている。
キー管理サービス (KMS) ライセンス認証を導入しており、
以前、自マシンに KMS のサーバも登録した。
そもそも、この Office をインストールしてから1年以上経っている。
認証されていないなら、もっと以前にエラーが出るはず。

突然消えたとしか思えない。

記念にキャプってみた☆

最初に確認
KMS サーバは同ドメイン内の違うLANにある。
そして、自社の場合、多くのトラブルはプロクシ設定周りである。
ので、一応、以下を確認。
・IEのプロクシの設定
・IEの「信頼済みサイト」にドメインが登録されている
・netsh winhttp show proxy で WinHTTP 設定を確認

slmgr.vbs で確認
Windows ソフトウェア ライセンス管理ツール であるところの
slmgr.vbs コマンドを使って、
ライセンスを確認。

C:\Users\kasumi>cscript %windir%\system32\slmgr.vbs /dli
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.


名前: Windows(R) 7, Enterprise edition
説明: Windows Operating System - Windows(R) 7, VOLUME_KMSCLIENT channel
プロダクト キーの一部: AAAAA
ライセンスの状態: ライセンスされています
ボリューム ライセンス認証の有効期限: 259200 分 (180 日)

キー管理サービス クライアント情報
  クライアント コンピューター ID (CMID): xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  登録 KMS コンピューター名: kms.example.co.jp:xxxx
  KMS コンピューターの拡張 PID: yyyyy-yyyyy-yyy-yyyyyy-yy-yyyy-yyyy.yyyyy-yyyyyyy
  ライセンス認証の間隔: 120 分
  更新間隔: 10080 分
  KMS ホスト キャッシュが有効です

C:\Users\kasumi>
ちゃんと KMS サーバも表示されるし、問題なさそう???
KMS サーバに ping を飛ばしてみたが、
ちゃんと ip reachable だった。

ospp.vbsで確認
Office 2013 Client Software License Management Tool であるところの
ospp.vbs コマンドを使って、
ライセンスを確認。

ospp.vbs コマンドは、office インストールディレクトリにある。
%ProgramFiles%\Microsoft Office\Office15\ とか。
長いので、以下、office インストールディレクトリを %insdir% で書いた。

■インストール済み全ライセンスの内容

C:\Users\kasumi>cscript %insdir%\ospp.vbs /dstatusall
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

---Processing--------------------------
---------------------------------------
SKU ID: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
LICENSE NAME: Office 15, OfficeProPlusVL_MAK edition
LICENSE DESCRIPTION: Office 15, RETAIL(MAK) channel
LICENSE STATUS: ---UNLICENSED---
ERROR CODE: 0xC004F014
ERROR DESCRIPTION: The Software Licensing Service reported that the product key is not available.
---------------------------------------
SKU ID: wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww
LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition
LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel
LICENSE STATUS: ---OOT_GRACE---
ERROR CODE: 0x4004F00D
ERROR DESCRIPTION: The Software Licensing Service reported that the application is running within the valid out of tolerance grace period.
REMAINING GRACE: 29 days (43102 minute(s) before expiring)
Last 5 characters of installed product key: BBBBB
    DNS auto-discovery: KMS name not available
    KMS machine registry override defined: kms.example.co.jp:xxxx
    Activation Interval: 120 minutes
    Renewal Interval: 10080 minutes
    KMS host caching: Enabled
---------------------------------------
---------------------------------------
---Exiting-----------------------------

C:\Users\kasumi>
MAK認証は使っていないので放置。
下のほうの、KMS認証で
SKU ID (Store Keeping Unit ID : 商品管理ID)は登録されているのに、
エラーコードが出力されている。
なんで?

■KMS認証の履歴

C:\Users\kasumi>cscript %insdir%\ospp.vbs /dhistorykms
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

---Processing--------------------------
---------------------------------------
Searching for KMS activation events on machine: XIAOXIA
Event ID: 12288

Coordinated Universal Time Written: 2015/03/30 4:54:56
ERROR/HOST: 0x00000000, 0x00000000, kms.example.co.jp
ERROR DESCRIPTION: N/A
---------------------------------------
Coordinated Universal Time Written: 2015/03/23 4:50:37
ERROR/HOST: 0x00000000, 0x00000000, kms.example.co.jp
ERROR DESCRIPTION: N/A
---------------------------------------
(中略)
---------------------------------------
Coordinated Universal Time Written: 2014/01/08 0:42:33
ERROR/HOST: 0x00000000, 0x00000000, kms.example.co.jp
ERROR DESCRIPTION: N/A
---------------------------------------
---------------------------------------
---Exiting-----------------------------

C:\Users\kasumi>
認証は週1回で行われているようだ。
前回も 2日前の 3/30 に、問題なくされたことがわかる。
時刻は UTC なので、日本時間の場合は +9 する。
大体、午後2時前くらいに認証してるぽい。
そうだったのか、知らなかった。

というわけで問題なし。

■再アクティベーション:解決

C:\Users\kasumi>cscript %insdir%\ospp.vbs /act
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww
LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition
LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: BBBBB
<Product activation successful>
---------------------------------------
---------------------------------------
---Exiting-----------------------------

C:\Users\kasumi>
キーも登録されているし、
KMS サーバも接続できるし、
今まで認証されてきた実績もあるので、
キーをアクティベーションすれば大丈夫だろうと踏んだ。
というわけで、アクティベーションしたら解決。

でもなんで突然こんなことに?
やっぱ Windows Update が原因なんじゃ?

[win7]assemblyIdentity の processorArchitecture の値 x64 が無効

$
0
0

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 とか、
 そのあたりを色々です。

今のところ、これでエラーは止まっている気がするので、
しばらく様子を見ることにする。

[win7]DNS の名前解決失敗のイベントログ

$
0
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 を直で指定した。
エラーは出ていない。

[win7][python]chainer の mnist を動かす

$
0
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
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 については、これからもうちょっと色々試してみます。

Viewing all 77 articles
Browse latest View live