備忘録 the next generation

2014年末にOCN(http://yamagu.mo-blog.jp)からこちらに移転しました。

Windowsマシンから持ってきたファイルをJavaで読み込む

2015-06-30 15:52:59 | 日記
Shift_JISのテキストファイルをLinux上でJavaのプログラムで読み込んで、UTF-8で出力しようしたら文字化けしてはまった、という話。

冗長に書いた修正済みのサンプルコード

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "Shift_JIS"));
while(null != (line = br.readLine())){
  byte[] buf = line.getBytes("UTF-8"); // UTF-16 to UTF-8
  String str = new String(buf, "UTF-8"); // UTF-8 to UTF-16
}


当初、FileInputStreamとInputStreamReaderを使わずにうっかりFileRaderを使用していたため、読み込み時に変な変換(UTF-8 → char(UTF-16))が働いてしまっていたというのが原因。

InputStreamReaderにShift_JISを指定すれば、Shift_JIS→char(UTF-16)に変換してくれる。

ちなみにJavaでは互換性のためにcharは16ビットのままで、UTF-16でエンコードされているらしい。(JDK1.5での情報)

http://www.ibm.com/developerworks/java/library/j-unicode/


QIIMEの実行時エラー ft2font.so: undefined symbol: PyUnicodeUCS4_AsEncodedString

2015-06-30 10:16:20 | 日記
先日のQIIMEを動かしていると、以下のようなエラーが出た。

ImportError: /usr/local/genome/qiime_1.9.0/python-2.7.3-release/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/
ft2font.so: undefined symbol: PyUnicodeUCS4_AsEncodedString


Pythonセットアップ時にほとんどのQIIME関連モジュールはリビルドが走ったようだったが、matplotlib内の共有オブジェクトはリビルドされなかったらしい。matplotlibのディレクトリでpython setup.py buildを何回繰り返してもft2font.soはリビルドされないようなので、matplotlibのソースの方のbuildを削除してリビルド、再インストールを行うと直った。

summary:

The shared object ft2font.so of matplotlib was not rebuild for UCS2.
I had to rm -rf ./build in matplotlib source directory before rebuilding them.

RのBioconductorをアップデートしようとしたらエラー

2015-06-24 18:56:22 | 日記
Bioconductorをアップデートしようとしたら、以下のようなエラーが表示されて止まってしまった。

Warning in install.packages(update[instlib == l, "Package"], l, contriburl = contriburl, :
'lib = "C:/Program Files/R/R-3.1.1/library"' is not writable


つまり、C:\Program Files\R\R-3.1.1\libraryがProgram Files以下なので、書き込み不可になっているため失敗してしまう。Windowsのエクスプローラーを起動して、読み込みのみのチェックボックスを外してやれば大丈夫なようだ。

ただ、チェックボックスを外しても、また開くと元に戻ってチェックされているので、
これを防ぐためには、「セキュリティ」のタブで自分のアカウントにフルコントロールを
与えておくなどしないといけないようだった。フルコントロール付与後、読み取り専用を解除すればインストールできた。

QIIMEの実行時のエラー PyUnicodeUCS2_AsASCIIString

2015-06-23 11:25:38 | 日記
ImportError: /usr/local/lib/python2.7/site-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS2_AsASCIIString

numpyがUCS2で、PythonがUCS4になってしまっていたためか、
このようなエラーが出るらしい。

色々試して分かったこととしては、
Python-2.7.10をダウンロードしてきて

./configure --prefix=/[qiimeのpath]/python-2.7.3-release --enable-threads --enable-unicode=ucs2

した後、make、make installすれば直った模様。

AndroidStudioでエミュレータの起動に失敗する問題

2015-06-17 11:14:41 | 日記
AndroidStudio 1.2.2で、AVD managerから
Nexus 5(デフォルトで入ってる)を起動しようとすると

Cannot launch AVD in emulator.
Output.
emulator: ERROR: x86 emulation currentry requires hardware acceleration
なんたらかんたら
HAX kernel module is not installed!

と言われる。

調べてみると、ポイントがいくつか。
HAXのインストールはAndroid StudioのSDK managerから
できるので、これはやっておく。
しかし、失敗する。

対策として:

1. BIOSの設定画面でCPUの仮想化(VT)オプションを有効化しておく

2.以下のようなディレクトリにHAXのインストーラがあるので、
手動でインストーラを起動してインストールする。
C:\Users\ユーザ名\AppData\Local\Android\sdk\extras\intel\Hardware_Accelerated_Execution_Manager

HAXのインストーラはintelhaxm-android.exeだった。