technote

[Mac] Sphinx インストール

without comments

以前「入門してみた」と言いっぱなしの Sphinx を Mac にインストールした。今後やりたいと思っている事で多いに活躍してもらいたい為だ。

■ 環境

  • Mac OS X
  • Homebrew

■ インストール

パッケージを確認する。

$ brew search sphinx
cmu-pocketsphinx   cmu-sphinxbase     sphinx

それっぽいものがあったのでインストールする。

$ brew install sphinx

これだと違うものがインストールされてしまう。sphinxsearch の方っぽい。

http://sphinxsearch.com/

というわけで Homebrew でのインストールは諦めるとして、easy_install からインストールすることにする。まずは sphinxsearch の方を削除しておく。

$ brew uninstall sphinx

python と easy_install を確認する。

$ which python
/usr/bin/python
$ python --version
Python 2.7.1
$ which easy_install
/usr/bin/easy_install

インストールされていたので Sphinx をインストールする。

$ sudo easy_install sphinx

以上。

■ 関連

Written by withsin

5月 22nd, 2012 at 8:44 pm

Posted in mac

[Mac] tmux を Homebrew でインストール

without comments

ターミナルを複数の画面(ペイン?)に分割する際は、今までは以前インストールした iConsole に頼ってきた。しかし screen だとか tmux とやらを勧められることもあって、今回  tmux を Mac にインストールしてみる。

■ 環境

  • Mac OS X
  • Homebrew

■ インストール

確認。

$ brew search tmux
tmux
adamv/alt/tmux-iterm2

インストール。

$ brew install tmux
==> Installing tmux dependency: libevent
==> Downloading https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/libevent/2.0.18
==> make
==> make install
/usr/local/Cellar/libevent/2.0.18: 48 files, 1.8M, built in 31 seconds
==> Installing tmux
==> Downloading http://sourceforge.net/projects/tmux/files/tmux/tmux-1.6/tmux-1.6.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/tmux/1.6 --sysconfdir=/usr/local/etc
==> make install
==> Caveats
Bash completion script was installed to:
  /usr/local/etc/bash_completion.d/tmux
==> Summary
/usr/local/Cellar/tmux/1.6: 5 files, 504K, built in 13 seconds

下記の依存があった様子。

  • libevent-2.0.18

■ 使い方

とりあえず画面分割と、画面間の移動だけをメモしておく。

$ tmux


画面を縦に分割。

control - B → %


画面を横に分割。

control - B → "


分割した画面の移動

control - B → O

もしくは

control - B → 矢印[←↑→↓]

これで iConsole に頼らなくても良いな。screen も一度覚えようと随分前に思っていたのだが結局たいして使わずにきてしまったので、今後は tmux を少し勉強して使えるようになろうと思う。

以上。

■ 関連

Written by withsin

5月 16th, 2012 at 8:00 pm

Posted in mac

[Mac] PostgreSQL.app をアンインストール

without comments

インストールしてみたは良いものの、やはり違和感満載なので削除することにした。ユーザが作成されるとログイン画面にも postgres ユーザが表示されるし。。。

Finder で Application 内にある PostgreSQL 9.1 のディレクトリをゴミ箱に送ってみたが、これではどうやら駄目な様子。
Finder にて『デバイス』→『Macintosh HD』→『ライブラリ』→『PostgreSQL』→『9.1』→『uninstall-postgresql.app』ダブルクリックする。

パスワードを入力すると、削除しても良いか確認される。

Data Directory は postgres ユーザのモノだから削除できない旨のメッセージがあったので、終了後 /Library/PostgreSQL 9.1 のディレクトリも削除した。

ユーザ設定からも postgres ユーザ自体を削除した。
これで一安心。

以上。

■ 関連

Written by withsin

5月 14th, 2012 at 8:35 pm

Posted in mac,PostgreSQL

Jersey Test Framework を使ってテストケース作成

without comments

以前作成した Jersey + Tomcat に今回は JUnit を使ったテストを追加していく。

まずは以前作成した Eclipse のプロジェクトはここまで。


Jersey には Jersey Test Framework というものがあるらしい。

http://jersey.java.net/nonav/documentation/latest/test-framework.html

というわけで、今回はこれを利用して以前作成した JerseySample プロジェクトの HelloResource にテストケースを追加してみる。

まずは必要な jar ファイルを前述の URL からダウンロードする。自分は『7.5 Running tests outside Maven』からそれぞれ必要な jar をダウンロードした。ダウンロードした jar は下記の通り。

  • jersey-test-framework-grizzly
  • jersey-test-framework-core
  • javax.servlet
  • jaxb-impl
  • jaxb-api
  • :

とりあえず、『7.5 Running tests outside Maven』に記載されていてローカルに無い jar は全てダウンロードしておいた。ダウンロードしたファイルは、Java 的にはどこに配置しておくのが良いのだろう?今回はとりあえず動作だけを知りたいのであまり考えない。JerseySample の配下に work ディレクトリが存在するので、この中に lib ディレクトリを作成し、全て突っ込んでおいた。

■ テストケース

では実際にテストケースを作成してみる。

WEB-INF/src 配下に resource が配置されているが、今回は WEB-INF/test ディレクトリを作成しテストケースを配置することにする。テストケースは HelloResource.java を右クリック → New → JUnit Test Case を選択する。



Source Folder は先に作成しておいた JerseySample/WEB-INF/test に変更している。Finish で作成。

こちら(http://d.hatena.ne.jp/momijiame/20120101/1325432126)も参照させて貰って最終的に下記のように作成した。

package net.withsin.rest.resources;

import static org.junit.Assert.*;

import org.junit.Test;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.test.framework.JerseyTest;

public class HelloResourceTest extends JerseyTest {

	public HelloResourceTest() {
		super("net.withsin.rest.resources");
	}

	@Test
	public void test() {
		Client client = Client.create();
		WebResource webResource = client.resource("http://localhost:9998/hello");
		ClientResponse response = webResource.get(ClientResponse.class);
		String responseMsg = response.getEntity(String.class);
		assertEquals("Hello Jersey", responseMsg);
	}
}

■ 実行

HelloResourceTest.java を選択し、右クリック → Run As → JUnit Test


Failure で失敗している。これは前述している各種 jar ファイルが関連付けられていないから。再度 PackageExplorer から HelloResourceTest.java を選択し、右クリック → Run As → Run Configurations…



Classpath のタブから User Entries を選択し、右側の Add External JARS… ボタン。前述の JerseySample/work/lib 配下に配置してある全ての jar を選択し追加する。



Apply → Run で実行し、結果を確認してみよう。


Grizzly が内部で起動され、http://localhost:9998/hello にアクセスし、取得した結果と “Hello Jersey” の文字列を比較している。

これでテストケースも書けるだろう。

■ はまった点

WebResource webResource = client.resource("http://localhost:9998/hello");

この行を当初下記のようにしてしまっていた。

WebResource webResource = client.resource("http://localhost:9998/JerserySample/sample/hello");

JUnit を実行すると、404 で返却されているようで Failer のまま。よくよく考えてみれば『/JerseySample/sample』の箇所は Tomcat に設定をしているだけで、HelloResource.java が分かっているのは『/hello』の path のみ。というわけで、『http://localhost:9998』に付け加えるのは『/hello』だけなので良いのだ。JUnit だって『/JerseySample/sample』までは見られないし。。。ということに気がつくのにしばし時間が掛かってしまった。単純なことなのになぁ。

以上。

■ 関連

Written by withsin

5月 11th, 2012 at 8:45 pm

Posted in java

Mac でバックスラッシュ(\)の入力

without comments

PostgreSQL のクライアント psql では多用するバックスラッシュが、Mac でどうやって入力すれば良いのか分からなかったので調べてみたら

Option + ¥

だそうだ。これ以外にも Option + 何かでいろいろな文字が入力できた。Apple のリンゴマークとか。バックスラッシュだけは覚えておかねば・・・。

以上。

■ 関連

 

Written by withsin

5月 10th, 2012 at 8:59 pm

Posted in mac

Mac に PostgreSQL をインストール

without comments

しばらく利用することがなくなっていたのだが、動作確認用に Mac に PostgreSQL をインストールすることにした。

■ 環境

  • Mac OS X

Homebrew でもインストール可能なようであるが、今回は Mac の Application としてインストールしてみようと思う。

$ brew search postgres
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql9

■ インストール


http://www.postgresql.org/

『Download』→『Mac OS X』→『Mac OS X 10.4+』とリンクを押していく。

表示された画面にて『Mac OS X』の画像リンクを押す。version は現時点での最新版である『9.1.3』にしておいた。
ダウンロードされたファイル名は『postgresql-9.1.3-1-osx.dmg』

ダウンロード完了後、このファイルをダブルクリックしてみる。


次いで『postgresql-9.1.3-1-osx.app』をダブルクリックして実行。いくつかダイアログが表示され、パスワードを入力し、実行された様子。


/etc/sysctl.conf が編集されたようだ。中身を確認してみたところ元々存在していなかったのかな?という感じ。設定は下記の通りなので、『PostgreSQL をインストールした時に設定された』ということをここにメモしておくので素直に reboot することにした。

$ cat /etc/sysctl.conf
# postgresql.app
kern.sysv.shmmax=33554432
kern.sysv.shmmin=1
kern.sysv.shmmni=256
kern.sysv.shmseg=64
kern.sysv.shmall=8192

reboot 後、再度『postgresql-9.1.3-1-osx.app』を実行する。


Next


Install Directory もデフォルトままにしておく。
Next


Data Directory もデフォルトままにしておく。
Next


Password 管理者用に設定。
Next


Port もデフォルトままにしておく。
Next


Advanced Options にて、Locale は ja_JP.UTF-8 を選択した。
Next


Install を実行する。
Next


インストールされたようだ。

Stack Builder とやらで、他にもアプリがインストールされるようなのでせっかくなのでやってみよう。


次へ進む


どうやら他の version もインストールできるようだ。他にも tool や PostGIS, Slony-I までインストールできるのか。とりあえず今回は必要ないのでキャンセルで抜けておく。

Launchpad に PostgreSQL 関連のアプリケーションがいろいろ入った。

  • pgAdmin III
  • Reload Configuration
  • SQL Shell(psql)
  • Application Stack Builder
  • 各種ドキュメント(HTML)

しかも PostgreSQL の server process も起動してくれている様子。

$ ps auxwww | grep postgres
withsin          823   0.0  0.0  2434892    540 s000  R+    2:29PM   0:00.00 grep postgre
postgres         592   0.0  0.0  2446104    488   ??  Ss    2:21PM   0:00.03 postgres: stats collector process
postgres         591   0.0  0.0  2477876   1784   ??  Ss    2:21PM   0:00.03 postgres: autovacuum launcher process
postgres         590   0.0  0.0  2477744    580   ??  Ss    2:21PM   0:00.10 postgres: wal writer process
postgres         589   0.0  0.0  2477744   1204   ??  Ss    2:21PM   0:00.14 postgres: writer process
postgres         587   0.0  0.0  2446104    356   ??  Ss    2:21PM   0:00.03 postgres: logger process
postgres         586   0.0  0.2  2477744   7628   ??  Ss    2:21PM   0:00.15 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data

この起動スクリプトはどこにあるのだろう?というかそもそも Mac では起動スクリプトはどのように動作しているのだろう?今後の課題として残しておく。

Launchpad にあった SQL Shell(psql) とやらを使って接続してみようと起動してみたら・・・単なるターミナルが起動した。自分でコマンド実行しろってことなのね。だったらこんなのいちいち作るなよ!と思ってしまったが落ち着こう。普段使用しているターミナルから実行する。

$ psql
Password: ********
psql: FATAL:  password authentication failed for user "withsin"

Password には先ほど設定したものを入れてみたがログイン失敗。ユーザが withsin になっているせいだね。postgres ユーザで実行しよう。

$ psql -U postgres
Password for user postgres: ********
psql (9.0.5, server 9.1.3)
WARNING: psql version 9.0, server version 9.1.
         Some psql features might not work.
Type "help" for help.

postgres=#

ログインができた。

しかし・・・Mac でバックスラッシュってどう入力するんだ???というのはまた別で。今回は control + D で抜けておいた。

一旦はインストールが確認できたので、サーバプロセスも停止し終了としたい。が、サーバプロセスの(Macでの正しい)落とし方がわからない。。。というわけでいつも通りコマンドから停止しておく。postgres ユーザで起動されているのでちょいと一手間。

$ sudo su - postgres
$ /Library/PostgreSQL/9.1/bin/pg_ctl stop -D /Library/PostgreSQL/9.1/data
waiting for server to shut down.... done
server stopped

■ 課題

いろいろ課題が残ってしまったので最後に整理。

  • Mac の起動プロセスを知りたい
  • バックスラッシュの入力方法
  • Mac における PostgreSQL サーバプロセスの起動・停止の正しいやり方

今後はこれらも見ておく。

以上。

■ 関連

 

Written by withsin

5月 10th, 2012 at 8:15 pm

Posted in mac,PostgreSQL

Mac に Homebrew で ec2-api-tools インストール

without comments

最近は MacBookAir での作業が増えたので、今までは Ubuntu で EC2 関連の作業もしていたのだが、Mac でも作業をしたい!というわけで以前から Ubuntu では使用している ec2-api-tools をインストールし使ってみることにする。

■ 環境

  • Mac OS X
  • Homebrew

Homebrew で ec2-api-tools が使えるかまずは確認してみよう。

$ brew search ec2
ec2-ami-tools  ec2-api-tools

今回インストールしたい ec2-api-tools だけでなく ec2-ami-tools もある様子。とりあえず ec2-api-tools のみを Homebrew でインストールすることにする。

$ brew install ec2-api-tools
==> Downloading http://ec2-downloads.s3.amazonaws.com/ec2-api-tools-1.5.2.5.zip
######################################################################## 100.0%
==> Caveats
Before you can use these tools you must export some variables to your $SHELL
and download your X.509 certificate and private key from Amazon Web Services.

Your certificate and private key are available at:

http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key

Download two ".pem" files, one starting with `pk-`, and one starting with `cert-`.
You need to put both into a folder in your home directory, `~/.ec2`.

To export the needed variables, add them to your dotfiles.
 * On Bash, add them to `~/.bash_profile`.
 * On Zsh, add them to `~/.zprofile` instead.

export JAVA_HOME="$(/usr/libexec/java_home)"
export EC2_PRIVATE_KEY="$(/bin/ls $HOME/.ec2/pk-*.pem)"
export EC2_CERT="$(/bin/ls $HOME/.ec2/cert-*.pem)"
export EC2_HOME="/usr/local/Cellar/ec2-api-tools/1.5.2.5/jarps"
==> Summary
/usr/local/Cellar/ec2-api-tools/1.5.2.5: 322 files, 15M, built in 30 seconds

インストール完了。

インストール先も、他の Homebrew でインストールしたものと同様に /usr/local/bin 配下にシンボリックリンクが作成された。とくに PATH を指定する必要もなさそう。/usr/bin 配下に随分とモノが置かれるようになってしまって少々見辛いが仕方がないので気にしない。

■ 動作確認

とりあえず version を確認する。

$ ec2ver
/usr/local/bin/ec2ver: line 9: EC2_HOME: EC2_HOME is not set

環境変数に設定を入れていないので実行されない。この設定は Homebrew でのインストール時に表示されていたもの書けば良いだろう。また、~/.ec2 ディレクトリを作成し、各種鍵ファイルを配置しておくことにする。

$ mkidr ~/.ec2
$ mv pk-*.pem cert-*.pem ~/.ec2
$ chmod 600 ~/.ec2/*.pem

環境変数には前述の通り、下記を .bash_profile に設定しておく。

export JAVA_HOME="$(/usr/libexec/java_home)"
export EC2_PRIVATE_KEY="$(/bin/ls $HOME/.ec2/pk-*.pem)"
export EC2_CERT="$(/bin/ls $HOME/.ec2/cert-*.pem)"
export EC2_HOME="/usr/local/Cellar/ec2-api-tools/1.5.2.5/jars"
export EC2_URL=http://ec2.ap-northeast-1.amazonaws.com

EC2_URL は、東京リージョンを普段は使用する為に追加している。また、EC2_HOME の PATH が、最後 jarps になっているが、コピペの失敗なのか、はたまた当初から間違えているのかわからないが jars の間違いだろう。修正して設定している。
では再度 version を確認してみよう。

$ ec2ver
1.5.2.5 2012-03-01

version が取得できたので正常に稼働してくれるだろう。

以上。

■ 関連

Written by withsin

5月 9th, 2012 at 8:44 pm

Posted in ec2

#2:Hadoop 用ノードの Linux OS 設定

without comments

ファイルディスクリプタに関してと、Linux Kernel パラメータに関して記載されている。ファイルディスクリプタを増やすのは高負荷な環境になってくるとよくやる事だが、Kernel パラメータを触る事は多くなかった。詳しくないというのが一番の理由だったが。。。

手元に CentOS や RHEL が無いので、MacBookAir と Ubuntu だけなのだが、ulimit の結果を確認してみよう。

■ Mac OS X

default での ulimit の結果。

withsin@Mac: ~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

ファイルディスクリプタ(open files)が Ubuntu に比べてもかなり少ない。これは設定しないといけないだろう。 max user processes も少ないように思えるで Mac で Hadoop を動作させる場合には設定をあげておいた方が無難な気がする。

■ Ubuntu 12.04

default での ulimit での結果。

withsin@ubuntu:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15994
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15994
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ローカル環境での動作確認を行う程度であれば、設定(ファイルディスクリプタ/ Kernel パラメータ)は特に変えるほどのものではないだろう。実際の運用や大規模になった場合、小規模でも高負荷・高アクセスの場合には十分に Hadoop Hacks に記載されている各パラメータを確認し適用するのが良いだろう。

以上。

 

■ 関連

Written by withsin

5月 9th, 2012 at 8:30 pm

Posted in hadoop

Eclipse 起動時に出力される Warning

without comments

Ubuntu で Eclipse を使用する場合、いつもターミナルから Eclipse のバイナリを実行しているのだが、コマンド実行時に下記の Warning がターミナルに出力されている。

特に気にしていたわけではないのだが、Emacs のコマンドからの実行時にも出力されていたので対応を調べてみた。

$ eclipse &
(eclipse:9459): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",
(eclipse:9459): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",
(eclipse:9459): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",
(eclipse:9459): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",

どうやら gtk2-engines-pixbuf というパッケージをインストールすれば良いらしい。

$ sudo apt-cache search gtk2-engines-pixbuf
gtk2-engines-pixbuf - Pixbuf-based theme for GTK+ 2.x

パッケージの説明を見てみたが特に問題があるようには思えなかったのでインストールしてしまった。

$ sudo apt-get install gtk2-engines-pixbuf

これで Eclipse や Emacs の実行時にも不要な Warining は出力されることが無くなった。

以上。

Written by withsin

5月 8th, 2012 at 8:29 pm

Posted in ubuntu

#1:Hadoop 動作に必要なパラメータ

without comments

紹介されていたパラメータ(設定項目)の中からいくつか。

dfs.name.dir (hdfs-site.xml)

複数設定可能。NameNode がメタデータを保存するディレクトリに該当する様子。複数のディレクトリをカンマ区切りで設定可能との事で、バックアップ用途に使えるようだ。SecondaryNameNoe もほぼバックアップ用途というイメージでいるのだが、この違いは何であるのか?単純に考えると、SecondaryNameNode へは一定期間毎に NameNode からデータのコピーが書き込まれるが、dfs.name.dir で設定したディレクトリには常時書き込みが行われる・・・というものであろうか?となると、dfs.name.dir で複数のディレクトリを設定した場合、Hadoop Hacks にもある通り、1つを NFS や NAS に設定すれば SecondaryNameNode は不要なのかもしれない。

dfs.data.dir (hdfs-site.xml)

DataNode における、データ保存ディレクトリ設定。DataNode が起動している Host において、複数の HDD が接続されている場合には I/O が分散され、特に有効となると思われる。そういえば以前、複数の HDD であれば RAID0 を組むよりも、それぞれ mount して、このパラメータで指定した方が性能があがる、というような記述を見た記憶がある。実際に測定してみたいところではあるが、機器がないので今回は諦めよう。いずれ機会があれば。

mapred.local.dir (mapred-site.xml)

JobTracker/TaskTracker で使用される。Map/Reduce 処理で一時的に使用される temp 領域的なものであろうか。

以上。

■ 関連

Written by withsin

5月 7th, 2012 at 10:50 pm

Posted in hadoop