平成24年7月26日木曜日

Watir installation With headless

1.Binary yum install Xvfb yum install firefox 2.Ruby lib gem install headless gem install selenium-webdriver gem install watir-webdriver 3.Sample $ irb > require "rubygems" => true > require "watir-webdriver" => true > browser = Watir::Browser.new :ff => #

平成23年5月8日日曜日

create the account and group in mac os

dseditgroup -o create -i 80000 -n /Local/Default selfgroup
dscl . -append /Groups/lepton GroupMembership selfname

平成22年11月11日木曜日

Highchartの画像モジュールインストール手順

1.必要のソフト
①java jre 1.4(1.6兼用性の問題で、使えないです。。)
②php
③hightchartのexporting-serverフォルダー下のindex.php
④Batik

2.javaインストール
①http://java.sun.com/j2se/1.4.2/ja/download.htmlでrpm版をダンロードします。
②./j2re-1_4_2_19-linux-i586-rpm.bin
③rpm -ivh j2re-1_4_2_19-linux-i586.rpm

3.phpのインストール
yum install php

4.phpのapache設定
yumでインストールしましたので、/etc/httpd/conf.d/php.confを参考してください。

5.Batikのインストール
①cd /usr/local/src
②wget http://ftp.kddilabs.jp/infosystems/apache//xmlgraphics/batik/batik-1.7.zip
③unzip batik-1.7.zip
④mv batik-1.7 /usr/local/
⑤ln -s /usr/local/batik-1.7 /usr/local/batik

6.index.phpの修正
①Batikのパスの設定
define ('BATIK_PATH', '/usr/local/batik/batik-rasterizer.jar');
②linuxのjavaの特別対応
68行を編集します。
変更前:
java -jar
変更後:
java -Djava.awt.headless=true -jar

7.highchartのところにURLを自分のサーバに設定すれば、作業完了

平成22年6月7日月曜日

MySQL Partitionsの応用ーー①作成編

Partitionsメリット:
①パフォーマンス:
×1年間のclickデータを全て「click」というテーブルに入ったら、5月のデータ中になんとか検索したい場合、以下のSQLを使います
select * from click where created >= '2010-05-01 00:00:00' and created <= '2010-05-31 00:00:00' and user_info = 'hoge'

その場合、もしindexを使いたいなら、まずindex(created,user_info)を作らないといけないです。そして、一年間のデータが数百万がある場合、index自体も大きくて、insert時のパフォーマンスに影響があります。

★この時Partitionsを使ったら
・検索範囲が5月のPartitionだけです(月単位でPartitionする場合)ので、indexがなくても、データ量が少ないので、相対早くなります。
・indexはPartition単位で作ってますので、一年間のデータのindexより軽い。(Partition単位でindexファイル設定できますので、推計した結果)

②管理
・同じファイルを複数のファイルで分けれるので、テーブルの大きさの制限がなくなります。
・旧いデータを削除場合、旧いPartitionを削除すれば、OKです
ALTER TABLE employees DROP PARTITION p0


では、早速テーブルを作りましょう

CREATE TABLE action (
action_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
created DATETIME NOT NULL,
updated DATETIME NOT NULL,
deleted TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY (action_id,created),
index(created)
)ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_bin
PARTITION BY RANGE (TO_DAYS(created))
(PARTITION p201005 VALUES LESS THAN (734289) ENGINE = InnoDB,
PARTITION p201006 VALUES LESS THAN (734319) ENGINE = InnoDB);


この作成用のSQLに幾つかの注意点があります。
①PRIMARY KEY (action_id,created)
Partitionのキーワード(ここはcreatedは必ず全てのPrimary Key,Unique Keyのカラムの一部分)
②検索時、Partitionのキーワードを見て、該当Partitionだけ検索するFuncはTO_DAYSとYEARだけです
↑の意味は分かりにくいかもしれないので、例で見てみましょう。
explain partitions select * from click where created >= '2010-05-01 00:00:00' and created <= '2010-05-31 00:00:00'

このSQLは検索の範囲とindex状況を見れます
・PARTITION BY RANGE (TO_DAYS(created))場合
検索の範囲はPARTITION p201005

・PARTITION BY RANGE (unix_timestamp(created))
検索の範囲は全部のPartition

原因はまだ分からないけど、気を付けってください。

作成編が完成、今度はBenchMark編

平成22年5月25日火曜日

GO言語のインストールメモ FOR MAC

1.Go言語のソースをゲットする唯一の道はバージョン管理システムからダウンロードするみたいですので、
まずMercurialというpythonで実現したバージョンツールのクライアントをダウンロードしないいけないですけど、
ラッキのはeasy_installで簡単にインストールできそうですん。
sudo easy_install mercurial


2.環境変数の設定
~/.bashrcでいかの変数を設定します

export GOROOT=$HOME/go  ソースの場所
export GOARCH=amd64 x86-64を対応しています(パフォーマンスを結構期待できそうです)
export GOOS=darwin      Mac OS
export GOBIN=$HOME/bin インストール場所


3.ソースダウンロード
hg clone -r release https://go.googlecode.com/hg/ $GOROOT

4.インストール
$ cd $GOROOT/src
$ ./all.bash


5.プログラムのexample

$ cat >hello.go <package main

import "fmt"

func main() {
fmt.Printf("hello, world\n")
}
EOF
$ 6g hello.go
$ 6l hello.6
$ ./6.out
hello, world
$



6.Makefileのexample
cp ~/go/src/Make.cmd ./
cp ~/go/src/Make.amd64 ./
cp cmd/godoc/Makefile ./

Makefileの修正

# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

include Make.$(GOARCH)

TARG=h
GOFILES=\
file.go\

include Make.cmd


平成22年5月11日火曜日

Linuxでpkgconfigの使い、設定方法

今回syslog-ngを自分でインストールする時、以下のエラーが出ました。
checking for GLIB - version >= 2.10.1... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.
configure: error: Cannot find GLIB version >= 2.10.1: is pkg-config in path?


自分の環境確認した上で、GLibのバージョンが旧いのを判断しました
rpm -qa | grep glib
glib-1.2.10-20.el5


最初yumで自動更新してもらいたいけど、なんとyumのサイトにglib-1.2.10が最新バージョンです。。。。ショック!!

今回syslog-ngは2.10.1のglibが必要ので、glibから自分インストールするしかないです。

glibのインストールコマンド
cd /usr/local/src/
wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.5.tar.gz
tar zxvf glib-2.22.5.tar.gz
cd glib-2.22.5
./configure && make && make install


インストールは簡単ですけど、単純にインストールしても、syslog-ngインストール時、
この新しいインストールしたglibは見つからないため、また失敗しました。

このとき、エラーメッセージ中のpkg-config in pathという文字列が目に入りました。
多分pkg-configに新しいglibのpathを設定すれば、問題解決するかもしれないので、ネットで
pkg-configの使い方を調査しました。

pkg-configはプログラムをコンパイル時、必要のlibの存在パスを表示するという役があります。

たとえば、下記のコマンドを実行した結果を見てみます。
pkg-config --libs libpng12
-lpng12


結果の-lpng12はgccコンパイル時使うパラメートと思います。

今回使うのglib-2.0を探してみましょう
pkg-config --libs glib-2.0
--libs glib-2.0: unknown option

エラー出しました。

実今回のglibのインストール後、/usr/local/libのしたにpkgconfigというフォルダーが出てきました。
このフォルダー中にglibのpkgconfig情報全部入ってますので、pkg-configコマンドを/usr/local/lib/pkgconfigの内容を読み込めば、問題解決すると思います。

対応方法は実に二つがあります
pkg-configコマンドはPKG_CONFIG_PATH環境変数中のConfigファイルを読み込みますので、
以下のようなコマンドを実行すれば、glibが見つかれます
env PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/ pkg-config --libs glib-2.0
-L/usr/local/lib -lglib-2.0


もうしくは/usr/lib/pkgconfigというフォルダーがあって、pkg-configのデフォルトConfigフォルダーです。ここにglibのpkgconfigをコビーすれば、環境変数設定しなくても、glibが見つかります。
cp -a /usr/local/lib/pkgconfig/* /usr/lib/pkgconfig/
pkg-config --libs glib-2.0
-L/usr/local/lib -lglib-2.0


以上