2012年9月30日日曜日

[other]Apache JMeter

Apache JMeter はJavaで書かれたパフォーマンステストなどに用いるツール。


techscoreで使い方は参照しつつとりあえず使えるレベルでした。

で、今日新しく知ったこと!
  • HTTPプロキシを使ってブラウザの操作を記録できる
  • コマンドラインで実行できる
  • コマンドラインから引数(プロパティ)でスレッド数など変更できる
  • リモート上のJMeterを操作できる
ドキュメントちゃんと読んだら当たり前なんだろうけど。

HTTPプロキシでページ情報を収集できるのはすごい便利。

シナリオを作成するストレスがかなり低減された。

コマンドラインで実行できるというのも非常に楽。

●HTTPプロキシ

●コマンドライン実行

●コマンドライン引数

●リモート

2012年9月20日木曜日

[Python]mac に virtualenv を入れる

■easy_install
まずはここから。
mac だからかはわからないが、easy_install がエラーになったので、下記を参考に distribute の easy_install を入れた。
http://d.hatena.ne.jp/buta9999/20120329/1333028463

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py

このあたりのパッケージ管理は歴史的にゴタゴタしていたらしい。
東風さんの記事「パッケージ管理」がとても参考になります。
http://ymotongpoo.hatenablog.com/entry/2012/09/16/090842

■virtualenv と virtualenvwrapper

sudo easy_install virtualenv
sudo easy_install virtualenvwrapper
でインストール。

これはこれでOK。

■ログインシェルの設定
パスが通っていないので workon や deactivate できない。
どのシェルにパス通せばいいかというと
sudo find / -name "virtualenvwrapper.sh"
で検索できるそれっぽいやつ。

わっすの場合、
vim ~/.bash_profile
して
export WORKON_HOME=~/.virtualenvs
. /usr/local/bin/virtualenvwrapper.sh

これらを追記しました。

で、ログインし直すなり source ~/.bash_profile してパスを通してから
workon
するとコマンドが迷子になりません!
やりました。
成功です。
あとは、
mkvirtualenv hogehoge
して仮想環境つくって、~/.virtualenvs/hogehoge とか見に行ったりできたらOK。
deactivate で仮想環境から抜けられます。


2012年9月19日水曜日

[IntelliJ IDEA]Sphinx を使う

IntelliJ IDEA で Sphinx にて reST を変換して HTML 出力するまで。

■Sphinx のインストール
まず、easy_install をインストールします。
Mac なら次。
参考 http://d.hatena.ne.jp/buta9999/20120329/1333028463

$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py

Windows ならdistribute_setup.py をブラウザとかでDLして これを実行で。

(一応、Mac は virtualenv 環境あるので workon しとく。)
次に、sudo easy_install sphinx で依存含めてインストール。

Mac なら which sphinx-quickstart ができる、
Windows なら where shinx-quickstart ができれば正常にインストールできてます。

■sphinx-quickstart

適当に sphinx のプロジェクトレベルの設定ファイルやらソースファイルやらアウトプットやらをおくディレクトリを作ってあらかじめそこに移動。

sphinx-quickstart してプロジェクト名、作者、バージョンくらいを入力して他デフォルトOKしとく。

■IntelliJ IDEA で インポート
Create project from existing sources でさっき作ったディレクトリのパスを指定して python でプロジェクトを作る。

■ビルドの設定
Edit Configurations で Python docs -> Sphinx task を選択。


次に、Command 、Input、Output 適宜入力。


これで準備OK.

あとは makeすればできる。

■mac の場合の補足
http://memo.yomukaku.net/entries/UaLbzhE

XCode のインストールと Command Line Tools をインストールする。
gcc -v か which gcc と which make でインストール確認。

これインストールしとかないと make コマンドがたたけない。

■自分メモ
IntelliJ IDEA で virtualenv したかったらSDKの設定で普通に virtualenv 環境のパス配下にある Python へのシンボリックリンク「/Users/zono/.virtualenvs/path/hogehoge/python」みたいなのを使えばいい。

すると IntelliJ IDEA が次みたいな感じでsite-packeges も自動でロードしてくれた。
file:///Users/zono/.virtualenvs/sphinx/lib/python2.7/site-packages/*.egg

あと、隠しフォルダがもし見えないときは ln -s /Users/zono/.virtualenvs/sphinx/ /Users/zono/sphinxenv とかって適当にシンボリックリンク作るとなんとかなる。

NameError: Cannot find sphinx in selected interpreter.

こんなエラーになったときは、IntelliJ IDEA のプロンプトに表示される
/Users/zono/.virtualenvs/sphinx/bin/python "/Users/zono/Library/Application Support/IntelliJIdea11/python/helpers/rest_runners/sphinx_runner.py" -b html /Users/zono/sphinxdocs/zonote /Users/zono/sphinxdocs/zonote/_build
みたいなのを確認しよう。
私の場合はシステムの python になっちゃっていたので、Edit Configurations で実行する python を virtualenvs 配下のものに変更したら正常に動作した。

IntelliJ IDEA で無理やり?かはわかりませんが、virtualenv も問題ないのでどんどん virtualenv 環境を作っちゃいましょう。
もちろん、 virtualenvwrapper 使います。


2012年9月12日水曜日

[WebStorm]Live Edit する方法

私が迷ったのでメモ。

※IntelliJ IDEA でも Live Edit できました。プラグインから Live Edit をインストールしてWebStorm と同じようにすればOKです〜。

■環境

WebStorm 5.0
Chrome21

■Live Edit の設定

View に Live Edit があるのでチェックしておく。

Preferences -> IDE settings -> Live Edit
にオプション2つあるので両方共チェックしておく。

WebStorm の右下のほうに EventLog があるのでこれを押下。

23:37:59 JetBrains Chrome Extension
         JetBrains Chrome Extension for Live Editing will be automatically installed after you restart Google Chrome.
         If you wish to install it manually without restarting Chrome, follow this procedure (link opens in a new Chrome window).

このように書いてるのでリンクをクリック。

ポートはそれぞれ変わるような気もしますが http://localhost:63363/index.html にリンクしました。

こんな画面が出ます。

ここに書かれている通り、 Chromeプラグイン jb.crx を名前を付けて適当なパスに保存する。

Chromeの 設定 -> ツール -> 拡張機能 で画面を開き、さっきの jb.crx ファイルをドラッグ・アンド・ドロップする。

これでプラグインをインストールできる。


Chrome21ではChromeウェブストア以外からはプラグインをインストールできないようなので、一旦自分のローカルマシン上にプラグインファイルをDLしてこれを拡張機能の画面へドラッグ・アンド・ドロップすることでプラグインをインストールできるみたいです。


あとは WebStorm に戻って View ー> Open in Browser で Chrome で HTML を開く。

こんな感じで表示されていれば Live Edit できます。


2012年9月4日火曜日

[linux]cicindelaのデモ動かすまで

perlゴリゴリなモジュールとかトライ・アンド・エラーなメモ。
cicindelaのデモを動かすところまででつまったところなど。

■まずはじめに

すべてはここからはじまった。
http://labs.edge.jp/cicindela/

お、簡単そうじゃんと思ったんだけどな。
使うのは簡単かも、環境構築と設定は…どうだろうか。

■環境
AWS(Amazon Linux OS AMI)
apche 2.2
perl 5.10.XX(失念)
mysql 5.X(失念)

yum でインストールできる 2012.09.04時点のバージョンのままでソースからビルドとかレベル高いことはやってません。

■AWSインスタンス作成

とりあえず、AWSでmicro(あとでメモリサイズ600MBではダメなのでsmallに変更するハメになります)インスタンスでサーバセットアップ。

■cicindelaインストール

さあやるぞと公式ドキュメントをみつつ。
http://code.google.com/p/cicindela2/wiki/Install

ここに書かれていることが素直にできればデモまではかんたんです。
私がつまってしまったのは私に問題のノウハウがなかったからです。

svnからソースDLしろってかいてるので
sudo su - して
yum -y install svn

ソースを/home/cicindela へチェックアウト。
パス書き換えるのが面倒なのでとりあえず動きや設定を理解するためにパスはドキュメントに従います。

■MySQLインストール

今度は、mysql がいるのでRDS使わずに1つのサーバでとりあえず全部すませてしまいます。

yum -y install mysql-server

で、my.cnf の設定はシンボリックリンク作らずに手動でマージします。
ここでテーブルヒープメモリのサイズが1GBをこした設定になっていることに気が付かず…。
さきに言っとくとあとで面倒なエラーになるので1GB以上のメモリつんでるサーバにmysqld インスコしないといけないです。
私はあとでmicro→smallにインスタンスタイプを変更しました。

■perlモジュールのインストール

次にperlモジュールのインスコ。

ここハマった。

インストールで依存関係とかよくわかんなにのでCPANでperlモジュールはインストールしたい。

なので下記コマンドでCPAN経由でインストールする。

perl -MCPAN -e shell

まず、AWS環境(Amazon Linux OS AMIだけ?)特有ですが、gcc 入ってません。

なので yum -y install gcc します。

ただ、これでもダメです。

make ができません。

デフォルトでは開発ツールが入っていないようなのでインスコします。
http://memo-off.blogspot.jp/2012/07/make-command-not-found-on-amazon-linux.html

これでいくつかはインスコできるようになりますが、DBD::mysql がエラー。

私の場合は、C/C++からmysql参照するAPIがなく。
http://blogs.yahoo.co.jp/take_low_6/23542159.html


yum -y install mysql-devel

これでDBD::mysql通った。

あと perl --version でたしか5.10.XXだったのでModule::Pluggableはインスコいらなかった。

ためしに perl -e "use Module::Pluggable;" してみてエラーなかったらインスコいらんぽい。

■apache + mod_perl インストール

で、次は apache + mod_perl のインスコ。

これはふつうに yum -y install httpd mod_perl した。

Redhat系OSならIncludeディレクティブはいらない。
http://futuremix.org/2004/05/mod_perl

もし気になるようなら /etc/httpd/conf.d/perl.conf コメントアウトして /etc/httpd/conf/httpd.conf に。

ただどちらにしても次の設定は必要。

Include /home/cicindela/etc/httpd/modperl.conf

この設定によって、http://hostname:80/cicindela/ 以下にアクセスすると perl スクリプトが実行されるようになる。

あと、deamontools はインスコしなかった。

ログは touch と chmod して、ログローテの記述を足した。

これでインスコOK。


■デモの確認

デモを動かしつつほんとにインスコOKなのか確認します。

デモ
http://code.google.com/p/cicindela2/wiki/Demos

デモソースを svn switch で。

cd /home/cicindela/misc
 perl create_init_sql.pl --db_name=cicindela_clip_db | /usr/local/mysql/bin/mysql -uroot

私はmysqlでいつもの調子でパスワードの設定していたので
perl create_init_sql.pl --db_name=cicindele_clip_db | mysql -u root -p

で実行した。

次のデータインポートで問題が。

DBD::mysql::st execute failed: The table 'item_similarities' is full [for Statement "
insert into item_similarities (item_id1, item_id2, score)
...


なにこれ?
ぐぐると先人はおりますもので。

mysqlサーバのメモリ不足。。。
microの600MBサーバにapache + mysql やっちゃってるよってことで、smallにインスタンスタイプ変更。

で、service mysqld start したらエラー。

tail -f /var/log/mysql/error.log 見ると

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes

InnoDB: than specified in the .cnf file 0 268435456 bytes!

こんな感じのエラーがね。
http://teketeke55.hatenablog.com/entry/2011/12/04/125227

おっしゃるとおりにやってみる。

/var/lib/mysql/mysql
ib_logfile0
ib_logfile1

上記をmvする。

mysql起動したら正常に立ち上がった。

もう一度データインポートしたら今度はちゃんとつっこめたみたい。

次に設定の_common.pm で datasouce => ["", "", ""]  の2つ目ユーザ名と3つ目パスワードを自分のサーバ設定に変更。

で、batch.pl を起動。

うおーい!
モジュールたらんぞ!

これCPANからインスコ。
http://isann0330.tumblr.com/post/30788996849/vps-1g-centos6-2-unixbench

で、もっかい。
やったー動いたー!

apache 起動してURL叩いたらなんかそっけいない数字の羅列が。

どうやらこれでOKぽい。

まああとはこのリコメンド結果のIDを自サイトのコンテンツと紐付けてかっこよく表示してやればリコメンドの出来上がり!ってわけで。

設定は大変でした。

おわり。