XFS on LVM (on Amazon EC2)

Amazon EC2 で、XFS を LVM で使おうとしたけど、EBS のスナップショット機能があることを考えると、LVM は余計だった。ということで、意味は薄れたけど、以下、メモ。

■ LVM の設定
○ 物理ボリュームをつくる
# pvdisplay
# pvcreate /dev/sdg
 Physical volume "/dev/sdg" successfully created
# pvdisplay
 "/dev/sdg" is a new physical volume of "100.00 GB"
 --- NEW Physical volume ---
 PV Name               /dev/sdg
 VG Name
 PV Size               100.00 GB
 Allocatable           NO
 PE Size (KByte)       0
 Total PE              0
 Free PE               0
 Allocated PE          0
 PV UUID               G8RURy-DVjh-h6Vv-Fjh4-oKnn-3Bwj-VyO3l1

RMySQL でデータを取得すると Windows版 R が落ちる

Windows版の R で、RMySQL を使って MySQL からデータを取得するときに R が必ず落ちるという現象に見舞われた。少量のデータだと取得できるのに、ちょっと多くなると、落ちる。

ローカルの Windows PC に MySQL 5.1 をインストールし、リモートの Linux の MySQLサーバにつないで使おうとした。でも、落ちる。ローカルの Windows PC にインストールする MySQL のバージョンと、RMySQL のバージョンを正しく対応させないといけないようだ。

MySQL 5.0系なら CRAN でインストールできるものでよく、MySQL 5.1系の場合は、RMySQL_0.7-4.zip を自分でダウンロードして、インストールすればいい。

install.packages('RMySQL_0.7-4.zip')

http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL

in

phplist-2.10.10

phplist-2.10.10 をインストールした。

  1. アーカイブを展開する。
  2. public_html/lists/* を Web の公開ディレクトリへ置く。
  3. config/config.php の内容と整合性のあるように、MySQL の DB とユーザを作成する。
  4. http://xxxxxxxx/phplist/admin にアクセスすると、DB が無いよ、初期化しなさい、と言われる。
  5. 初期化すると、Database error 1071 while doing query Specified key was too long; max key length is 1000 byte というエラーが発生する。UTF-8 だと、バイト数の問題でオーバーしてしまうらしい。http://forums.phplist.com/viewtopic.php?p=27343 を参考に、email フィールドの長さを 255 から 100 にしてみる。
  6. DB を一度 drop して再度作り直し、もう一度初期化。今度はテーブルの生成に成功した。
  7. これでとりあえず動いているらしい。

ec2-bundle-vol を ruby 1.9 で使えるようにする

Amazon EC2 上の CentOS5 で使っていた ruby-1.8.5 を、ソースからビルドした ruby-1.9.1 に入れ替えたら、ec2-bundle-vol が動かなくなった。

元はといえば、gem の ruby-aaws を使いたくてインストールしようとしたら、ruby 1.8.7 以上を要求してきたことに始まる。hpricot-0.8.1 が 1.9 以上を要求していたはずだから、ついでに 1.9 にしてしまおうとしたのが運の尽き、amitools が動かなくなった。

Copying / into the image file /mnt/image1-20090621-0223...
Excluding: 
         /proc
         /sys
         /dev/pts
         /proc/sys/fs/binfmt_misc
         /dev
         /media
         /mnt
         /proc
         /sys
         /vol
         /mnt/image1-20090621-0223
         /mnt/img-mnt
1+0 records in

CentOS5 に ruby-1.9.1 を rpm でインストールする

gem でライブラリをインストールしようとすると、いろんなものが ruby 1.8.7 とか ruby 1.9 を要求してくる。今まであきらめていたけど、奮起?して ruby 1.9 をインストール。

$ sudo yum install checkinstall
$ sudo yum install rpm-build
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p129.tar.gz
$ tar zxvf ruby-1.9.1-p129.tar.gz
$ cd ruby-1.9.1-p129
$ ./configure --prefix=/usr
$ make
$ sudo /usr/sbin/checkinstall --fstrans=no
$ sudo -e --nodeps ruby ruby-irb ruby-rdoc ruby-devel
$ sudo rpm -ivh /usr/src/redhat/RPMS/i386/ruby-1.9.1-p129.i386.rpm

これで ruby-aaws とか hpricot-0.8.1 が使えるようになる♪

in

makeshop の売上を毎日自動集計してメールで送る

EC の ASP 「makeshop」の売上を毎日自動集計して携帯に送るスクリプトを書いた。

#!/bin/sh
 
#
# 設定
#
# MySQL のユーザには FILE permission が必要。
#  grant file on *.* to makeshop@localhost;
#
 
MAKESHOP_CREDENTIAL="-d id=shopid -d passwd=shoppw -d submanager=ok -d
etclogin=ok"
MYSQL_CREDENTIAL="-umakeshop -pmakeshop"
 
RECIPIENTS="shop1@fooshop.com, shop2@fooshop.com"
 
 
#
# Makeshop からデータをダウンロードする
#
function download_from_makeshop {
 
 local year=$1
 local month=$2
 local day=$3
 local file=$4
 
 local COOKIE=cookie.txt
 local NULL="-o /dev/null"

in

TexShell2 で UTF-8 のファイルを扱えないとき

メニューバーの「設定」→「TeX→DVI」→「追加するオプション」に --kanji=utf8 オプションをつける。デフォルトでは SJIS で動作する。

in

ec2-bundle-volume で特定のディレクトリを除く

ec2-bundle-volume で /tmp をバンドルしないようにしたら、起動後のインスタンスの /tmp ディレクトリのパミッションがおかしくなっていた。

■ -e で exclude
ec2-bundle-vol -d /mnt --fstab /etc/fstab.bundled -k $EC2_PRIVATE_KEY -c $EC2_CERT -e /vol,/tmp -u $ACCOUNT_NUMBER -r $ARC -p $IMAGE_NAME

■ /tmp をバンドルからはずしたら
drwxr-xr-x  4 root root   4096 Jun  9 12:49 tmp
 
■ 本当はこうなっていて欲しい
drwxrwxrwt  7 root root  12288 Jun  9 12:24 tmp

なので、/etc/rc.d/rc.local の最後に、パミッション変更処理を加えてみた(CentOS 5)。

chmod 1777 /tmp

MySQL のストアドプロシージャで日付ディメンションテーブルをつくる

--
-- 日付ディメンションテーブル
--
drop table if exists dates;
 
create table dates (
 id    integer primary key auto_increment,
 date  date,
 year  integer,
 month integer,
 day   integer,
 week  integer,
 index date(date),
 index year(year),
 index month(month),
 index day(day),
 index week(day)
);

drop procedure if exists update_dates_table;
 
delimiter //
create procedure update_dates_table()
begin
 declare currentdate date default '2008-12-01';
 truncate dates;
 while currentdate <= curdate() do

in

CentOS5 に mechanize をインストールした

# gem install mechanize
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.2.1
Successfully installed mechanize-0.9.2
2 gems installed
Installing ri documentation for nokogiri-1.2.1...
Installing ri documentation for mechanize-0.9.2...
Installing RDoc documentation for nokogiri-1.2.1...
Installing RDoc documentation for mechanize-0.9.2...

libxml2 が無いといわれる場合、libxml2, libxml2-devel をインストールする

checking for #include <libxml/parser.h>
... no

Syndicate content