2009年4月30日木曜日

CentOSにphpMyAdmin

スズキです。

ノリで導入できそうだったので、してみました。

# yum install phpMyAdmin

後は、Apacheをリスタートして、"http://localhost/phpmyadmin"にアクセスすると、
Basic認証になるので、MySQLに作成済みの、ユーザー/パスワードを入力すれば
ログインできます。

本当にノリでできた...

--
http://suz-lab.blogspot.com/

CentOSでLDAP(OpenLDAP)

スズキです。

LDAPはずっと苦手だったのですが、Redmineの認証をLDAPでやりたかったので、
がんばってみました。

インストールは、いつもの通りです。(OpenLDAPを利用します)

# yum install openldap-servers

そして、起動です。

# service ldap start
Checking configuration files for slapd: bdb_db_open:
Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2)
Expect poor performance for suffix dc=my-domain,dc=com.
config file testing succeeded [ OK ]
Starting slapd: [ OK ]

起動はするのですが、変なエラーが出ています...

ということで、エラーメッセージの指摘どおり、"/var/lib/ldap/DB_CONFIG"を作成して、
再起動です。

# cp /etc/openldap/DB_CONFIG.example /etc/openldap/DB_CONFIG
# ln -s /etc/openldap/DB_CONFIG /var/lib/ldap/DB_CONFIG

また、このままだとログが出力されず、上手くいかない場合の調査に難航してしまうので、

下記のように"/etc/openldap/slapd.conf"と"/etc/syslog.conf"を修正して,
openldapとsyslogを再起動します。

--------【slapd.conf】--------
loglevel 256
--------

--------【syslog.conf】--------
local4.* /var/log/slapd.log
--------

これで"/var/log/slapd.log"にログが出力されるようになります。

次は、phpLDAPadminでその次は、Redmineとの連携だ。

参考サイト - http://www.diigo.com/user/suz-lab/00000015
--
http://suz-lab.blogspot.com/

Redmineで生成するPDFが文字化け

スズキです。

近頃ずっと、Redmineモードです。

で、デフォルトだと、タイトル通り、出力するPDFに日本語が混じっていると、
文字化けしてしまいます。

そして、"lang/ja.yml"中の

general_pdf_encoding: UTF-8

の記述を、

general_pdf_encoding: SJIS

にすることで、解決できます。(下記を参考にしました)
http://chocoapricot.cocolog-nifty.com/blog/2008/06/redmine_445a.html

TestLinkとかも気になる...

参考サイト - http://www.diigo.com/user/suz-lab/00000023
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/30/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月29日水曜日

PHP&GDのビルドで「undefined reference to `libiconv...'」エラー

スズキです。

自家製PHPをGDが使えるように作り直さなければいけなくなり、
gd関係をyumでインストールし、いつもの通り、下記を実行しました。

# ./configure \
--enable-mbstring \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local \
--with-pdo-mysql \
--enable-pdo \
--with-gd
# make

すると、makeのときに下記エラーが出てしまいました...
ext/iconv/iconv.c:000: undefined reference to `libiconv...'

いろいろ悩んだのですが、下記のようにmakeしなおすと、解決しました。

# make ZEND_EXTRA_LIBS='-liconv'

(参考)
http://ayd.jp/p_blog/archive-200711/article-1195754575.html

自家製は、できるだけ避けて、yumでインストールするようにしよう。

参考サイト - http://www.diigo.com/user/suz-lab/00000022
--
http://suz-lab.blogspot.com/

2009年4月28日火曜日

2009年4月27日月曜日

PoundのインストールとWebサーバのPortのルール

スズキです。

忘れた頃のPoundネタです。

とりあえず、yumでインストールしていることを前提としています。
http://suz-lab.blogspot.com/2009/02/yumcentos-52pound.html

そして、Poundで、Webサーバに振り分けを行うわけですが、
近頃は適材適所で一つのマシンに、様々なWebサーバを立ち上げるようになってきました。

なので、下記のように、このWebサーバのポートは何番、ってSUZ-LABルール決めました。

80 Pound
8010 Lighttpd
8011 Lighttpd
...
8020 Apache
8021 Apache
...

このルールで、各種Webサーバを立ち上げ、
下記のように、Poundの設定ファイル("/etc/pound.cfg")も記述します。

--------【pound.cfg】--------
User "nobody"
Group "nobody"
ListenHTTP
  Address 0.0.0.0
  Port 80
  Service
    URL "/ldapadmin.*"
    BackEnd
      Address 127.0.0.1
      Port 8020
    End
  End
  Service
    BackEnd
      Address 127.0.0.1
      Port 8010
    End
  End
End
--------
※ "/ldapadmin"はApacheを使い、その他はlighttpdを使っています。

参考サイトが本ブログの記事だけだ!

参考サイト - http://www.diigo.com/user/suz-lab/00000021
--
http://suz-lab.blogspot.com/

テーブルのストレージエンジンを変更(MySQL)

スズキです。

せっかく、ndbclusterを使えるようにして、
http://suz-lab.blogspot.com/2009/04/centosyummysql-cluster.html
"default-storage-engine=NDBCLUSTER"とmy.cnfに書いておいたのですが、
redmineのデータベースを構築すると、ストレージエンジンはinnodbになってました...
http://suz-lab.blogspot.com/2009/04/centosredmine.html

ということで、下記SQLを実行して、手動でストレージエンジンを"ndbcluster"に変更です。

--------【SQL】--------
alter table attachments engine=ndbcluster;
alter table auth_sources engine=ndbcluster;
alter table boards engine=ndbcluster;
alter table changes engine=ndbcluster;
alter table changesets engine=ndbcluster;
alter table changesets_issues engine=ndbcluster;
alter table comments engine=ndbcluster;
alter table custom_fields engine=ndbcluster;
alter table custom_fields_projects engine=ndbcluster;
alter table custom_fields_trackers engine=ndbcluster;
alter table custom_values engine=ndbcluster;
alter table documents engine=ndbcluster;
alter table enabled_modules engine=ndbcluster;
alter table enumerations engine=ndbcluster;
alter table issue_categories engine=ndbcluster;
alter table issue_relations engine=ndbcluster;
alter table issue_statuses engine=ndbcluster;
alter table issues engine=ndbcluster;
alter table journal_details engine=ndbcluster;
alter table journals engine=ndbcluster;
alter table members engine=ndbcluster;
alter table messages engine=ndbcluster;
alter table news engine=ndbcluster;
alter table plugin_schema_info engine=ndbcluster;
alter table projects engine=ndbcluster;
alter table projects_trackers engine=ndbcluster;
alter table queries engine=ndbcluster;
alter table repositories engine=ndbcluster;
alter table roles engine=ndbcluster;
alter table schema_migrations engine=ndbcluster;
alter table settings engine=ndbcluster;
alter table time_entries engine=ndbcluster;
alter table tokens engine=ndbcluster;
alter table trackers engine=ndbcluster;
alter table user_preferences engine=ndbcluster;
alter table users engine=ndbcluster;
alter table versions engine=ndbcluster;
alter table watchers engine=ndbcluster;
alter table wiki_content_versions engine=ndbcluster;
alter table wiki_contents engine=ndbcluster;
alter table wiki_pages engine=ndbcluster;
alter table wiki_redirects engine=ndbcluster;
alter table wikis engine=ndbcluster;
alter table workflows engine=ndbcluster;
---------

確認は、下記MySQLのコマンドで可能です。

mysql> use information_schema;
mysql> SELECT TABLE_NAME, ENGINE FROM TABLES
mysql> WHERE TABLE_SCHEMA = 'redmine';

"ndbcluster"って、もう実用レベルなのかなー?

参考サイト - http://www.diigo.com/user/suz-lab/00000020
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/27/2009


Posted from Diigo. The rest of my favorite links are here.

CentOSにRedmineをインストール

スズキです。

以前、RedmineをWindowsにインストールしましたが、今度はCentOSです。
http://suz-lab.blogspot.com/2009/04/windowsredmine.html

まずは、yumで依存パッケージのインストールです。

# yum install gcc
# yum install zlib-devel
# yum install openssl-devel


次に、rubyのインストールです。自分でモジュールを導入する仕組みを持っているものは、
yumでは無く、makeして、"/usr/local"にインストールするようにしています。

# curl -L -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
# tar xvzf ruby-1.8.7-p72.tar.gz
# cd ruby-1.8.7-p72
# ./configure
# make
# make install

そして、rubygemsのインストールです。
このあたりから、Windowsでのインストールとやり方は同じになります。

# curl -L -O http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz
# tar xvzf rubygems-1.3.2.tgz
# cd rubygems-1.3.2
# ruby setup.rb

その後、Railsのインストールです。

# gem install rails --include-dependencies

ここで、今回はデータベースをMySQLにしたので、一旦、その準備になります。

--------【my.cnf】--------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
ndbcluster
ndb-connectstring=127.0.0.1
default-storage-engine=NDBCLUSTER
default-character-set=utf8
--------

# mysql
> GRANT ALL PRIVILEGES ON *.* TO redmine@localhost IDENTIFIED BY 'redmine'
> GRANT ALL PRIVILEGES ON *.* TO redmine@'%' IDENTIFIED BY 'redmine';
# mysql -u redmine -p
> CREATE DATABASE redmine DEFAULT CHARACTER SET utf8

最後に、ようやくredmineです。

# curl -L -O http://rubyforge.org/frs/download.php/54503/redmine-0.8.3.tar.gz
# tar xvzf redmine-0.8.3.tar.gz
# cd redmine-0.8.3

データベースの設定ファイル"config/database.yml"は、
下記のようにmysqlになるようにしておきます。

--------【database.yml】--------
production:
adapter: mysql
database: redmine
host: 127.0.0.1
username: redmine
password: redmine
encoding: utf8
--------

次のようにテーブルの作成と初期データのインポートを行い、

# rake db:migrate RAILS_ENV="production"
# rake load_default_data RAILS_ENV="production"

下記コマンドでWebサーバを立ち上げると、"http://127.0.0.1:3000/"で確認できます。

# ruby script\server -e production

残りは、lighttpd、openldapとの連携か…

参考サイト - http://www.diigo.com/user/suz-lab/00000018
--
http://suz-lab.blogspot.com/

"curl"でリダイレクトされたページまで取得("-L"オプション)

スズキです。

近頃、"wget"から"curl"を使うようにしています。

"wget"では気にならなかったのですが、"curl"をデフォルトの状態で使うと、
ページがリダイレクトされてるとき、リダイレクト先までは取得しないようになっています。

で、当然、リダイレクト先まで取得する方法も容易されてるわけで、それが"-L"オプションです。

使い方はこんな感じです。

# curl -L -O http://xxx.xxx.xxx/xxx.tar.gz

今日中に、"redmine & openldap"の連携まで、調整しときたいなー。

参考サイト - http://www.diigo.com/user/suz-lab/00000019
--
http://suz-lab.blogspot.com/

2009年4月26日日曜日

CentOS(yum)で"MySQL Cluster"

スズキです。

久しぶりにMySQLをCentOSにインストールする機会があり、
せっかくなので、yumで"MySQL Cluster"あるかなー、と「ダメもと」でチェックしたところ、
なんと、remiリポジトリにありました。
▼yumのリポジトリに"epel"と"remi"を追加(CentOS 5.2)
http://suz-lab.blogspot.com/2009/03/yumepelremicentos-52.html

ということで、下記のようにインストールです。

# yum install mysql-server
# yum install mysql-cluster


そして、MySQLの設定ファイル"/etc/my.cnf"とNDBの設定ファイル"/var/lib/mysql-cluster/config.ini"
を下記のように修正&作成します。

--------【my.cnf】--------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
ndbcluster
ndb-connectstring=127.0.0.1

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[ndbd]
ndb-connectstring=127.0.0.1
--------

--------【/var/lib/mysql-cluster/config.ini】-------
[NDBD DEFAULT]
NoOfReplicas: 1
DataDir: /var/lib/mysql-cluster

[MGM DEFAULT]
PortNumber: 1186

[NDB_MGMD]
Id: 1
HostName: 127.0.0.1
ArbitrationRank: 1

[NDBD]
Id: 11
HostName: 127.0.0.1

[API]
Id: 21
HostName: 127.0.0.1
--------

準備が整ったので、下記コマンドで、各サーバを起動します。

# service ndb_mgmd start
# service ndbd start
# service mysqld start

確認は、"ndb_mgm"で可能です。

# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 127.0.0.1:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 1 node(s)
id=11 @127.0.0.1 (Version: 5.1.34, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (Version: 5.1.34)

[mysqld(API)] 1 node(s)
id=21 @127.0.0.1 (Version: 5.1.34)

次は、ようやくredmineだ。

参考サイト - http://www.diigo.com/user/suz-lab/00000017
--
http://suz-lab.blogspot.com/

2009年4月24日金曜日

Eclipseでログの監視(NTail)

スズキです。

とりあえず、EclipseのプラグインはPleiadesが対応しているものを選ぶようにしています。
http://sourceforge.jp/projects/mergedoc/wiki/Pleiades%E5%AF%BE%E5%BF%9CEclipse%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%B8%80%E8%A6%A7

探してみると、

- LogWatcher
- Logfile View
- NTail

と該当するものが出てくるのですが、更新日が一番新しい「NTail」を利用することにしました。
http://www.certiv.net/projects/ntail.html

そういえば、「Logfile View」についても書いてたなー...
http://suz-lab.blogspot.com/2008/10/eclipselogfile-viewer.html

参考サイト - http://www.diigo.com/user/suz-lab/00000016
--
http://suz-lab.blogspot.com/

"ifcfg-eth0"を"dhcp"から"static"へ

スズキです。

まあ、Linux(CentOS)のネットワーク(IP)の設定を、DHCPから固定に変更するって話です。

DHCPの場合は、下記のようになってると思います。

--------【dhcp】--------
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:00:00:00:00:00
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes
--------

そして、固定の場合は下記のようになります。

--------【static】--------
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:00:00:00:00:00
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes
IPADDR=192.168.3.230
NETMASK=255.255.255.0
NETADDR=192.168.3.0
BROADCAST=192.168.3.255
GATEWAY=192.168.3.1
--------

詳細はこちらに書かれています。
http://www.server-memo.net/server/linux-setting/ifcfg-eth

近頃、DHCPばかりで、固定の設定はやってなかったなー...

参考サイト - http://www.diigo.com/user/suz-lab/00000015
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/24/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月23日木曜日

「SUZ-LAB謹製 CentOS AMI」サポートスレ

スズキです。

まったく使ってない掲示板(BBS)ですが、
下記にSUZ-LABで作成している、CentOSのAMIをサポートするスレを作っておきました。
http://jbbs.livedoor.jp/bbs/read.cgi/computer/41921/1240456398/

当面は、TODOメモ、リリースアナウンスなど、自作自演が続くでしょう...

AMIを利用してみた方は、上記スレで、ご意見いただけると幸いです。
(ブログのコメントでもOKです)

--
http://suz-lab.blogspot.com/

"/srv"ディレクトリ(CentOS)

スズキです。

CentOSのAMI作ってるときに、"/srv"という見慣れないディレクトリがあって、
lighttpdをyumでインストールしたら、/svr/www/lighttpd"っていうフォルダが作成されて、
そこがlighttpdのドキュメントルートになってました。

調べてみると、FHS標準のもののようです。
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-filesystem-fhs.html

> このディレクトリは FTP、WWW、 あるいは CVS などの特定のサービス用の
> データファイルの場所をユーザーに与えて くれます。

とのことです。

これも、sda2に移動して、シンボリックリンクにしないと。

参考サイト - http://www.diigo.com/user/suz-lab/00000013
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/23/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月22日水曜日

"/home"と"/var"を"/mnt"(/dev/sda2)に移動したAMI

スズキです。

EC2のdfの結果は下記のようになっています。

# df -k
Filesystem  1K-blocks  Used  Available  Use%  Mounted on
/dev/sda1  10321208  956984  8839936  10%  /
none  870472  0  870472  0%  /dev/shm
/dev/sda2  153899044  1525024  144556396  2%  /mnt

つまり、マシンに10G(/dev/sda1)と150G(/dev/sda2)のHDがくっついてる感じです。

AMIのイメージを作成するときは、sda1のみがイメージ化の対象になっており、
イメージからインスタンスを起動すると、当然、そのイメージはsda1のみに展開されます。

ですので、データがどんどん増える傾向のある"/home"や"/var"もsda1(10G)の
ディレクトリということになり、「Disk Full」になるのは時間の問題です。
遅かれ、早かれ、いつかは、sda2に移す(&シンボリックリンク)するはずです。

なら最初から、"/home"と"/var"はsda2に移しておこうと思い、rc.localにその旨、記述をしました。

--------【rc.local】--------
# move to /mnt
mv /home /mnt/home
ln -s /mnt/home /home
mv /var /mnt/var
ln -s /mnt/var /var
--------

※ 当然インスタンスをイメージ化しても、このままだと"/home"と"/var"は含まれません。

いろいろ、更新してきましたが、ここまでが、とりあえずの
suz-lab謹製AMI(CentOS)の最終形としておきます。(Manifestは下記です)

ami-suz-lab.com/ami-centos-core-5.3.4.img.manifest.xml

Enjoy!

参考サイト - http://www.diigo.com/user/suz-lab/00000010
--
http://suz-lab.blogspot.com/

yumリポジトリを増やしたAMIの作成

スズキです。

"ami-suz-lab.com/ami-centos-base-5.3.3.img.manifest.xml"をリリースしました。

"ami-suz-lab.com/ami-centos-base-5.3.2.img.manifest.xml"に対して、
http://suz-lab.blogspot.com/2009/04/amazon-ec2-ami-tools.html
下記の追加/変更を行っています。

1. 以下のyumリポジトリの追加

▼ epel, remi
http://suz-lab.blogspot.com/2009/03/yumepelremicentos-52.html
▼ rpmforge
http://suz-lab.blogspot.com/2009/02/yumcentos-52pound.html
※ rpmforgeのRPMが下記に移動していたので、注意です。
http://rpmforge.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

yum実行すると、下記のリポジトリをサポートしていることがわかります。

epel
remi-test
epel-testing
remi
rpmforge
contrib
base
updates
centosplus
addons
extras

2. キー取得のスクリプトを"/usr/local/sbin/get-credentials.sh"に保存して、

rc.localから呼び出していましたが、そのスクリプトを直接rc.localに記述。
http://suz-lab.blogspot.com/2009/04/centos53ami.html

Enjoy!

次は、"home, var"を/mnt以下にコピーして元ディレクトリをシンボリックリンクするようにしよう。

参考サイト - http://www.diigo.com/user/suz-lab/00000008
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/22/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月21日火曜日

"Amazon EC2 AMI Tools"を入れたイメージの再作成

スズキです。

"ami-suz-lab.com/ami-centos-base-5.3.1.img.manifest.xml"を作成したばかりですが、
http://suz-lab.blogspot.com/2009/04/centos53ami_20.html
"ami-suz-lab.com/ami-centos-base-5.3.2.img.manifest.xml"(バージョンアップ)のお話です。

今回のバージョンアップのポイントは下記2点です。

1. "Amazon EC2 AMI Tools"を導入する。
2. インスタンス上で自分のイメージを作成する。

まず、"Amazon EC2 AMI Tools"のインストールですが、詳細は下記の通りです。
http://suz-lab.blogspot.com/2009/04/centos53ami_19.html

実は、CentOSのCoreでのインストールには"wget"は含まれておらず、
そして"curl"は別途導入済みのため、RPMのダウンロードは下記のように行いました。

# curl -O http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm

そして次に鍵と証明書をEC2インスタンスに転送し、下記コマンドにて、
登録用イメージファイルを作成します。

# ec2-bundle-vol -r i386 -d /mnt
-c /mnt/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
-k /mnt/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
-u 000000000000 -p ami-centos-base-5.3.2.img

そうすると、こんなエラーが発生してしまいます。

mount: Could not find any loop device. Maybe this kernel does not know
about the loop device?
(If so, recompile or `modprobe loop'.)
ERROR: execution failed: "mount -o loop /mnt/ami-centos-base-5.3.2.img
/mnt/img-mnt"

"mount -o loop /mnt/ami-centos-base-5.3.2.img /mnt/img-mnt"を実行しろってことなので、
実行してみます。

# mount -o loop /mnt/ami-centos-base-5.3.2.img /mnt/img-mnt

今度は、こんなエラーが発生しました。

mount: Could not find any loop device. Maybe this kernel does not know
about the loop device?
(If so, recompile or `modprobe loop'.)

"modprobe loop"を実行しろってことなので、実行してみます...

# modprobe loop

今度は、こんなエラーが発生しました...

FATAL: Could not load /lib/modules/2.6.16-xenU/modules.dep: No such
file or directory

これはさすがに何していいかわからないので、Google先生に聞いてみました。
http://blog.livedoor.jp/matssaku/archives/cat_10014551.html
上記にしたがって、下記を実行です。

# cd /
# curl -O http://s3.amazonaws.com/ec2-downloads/modules-2.6.16-ec2.tgz
# tar xvzf modules-2.6.16-ec2.tgz
# depmod -a
# modprobe loop

そして、もう一度、登録イメージの作成です。(念のためhistoryのキャッシュも削除します)

# history -c
# ec2-bundle-vol -r i386 -d /mnt
-c /mnt/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
-k /mnt/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
-u 000000000000 -p ami-centos-base-5.3.2.img

登録イメージのアップロード/登録/公開は、こちらを参照です。
http://suz-lab.blogspot.com/2009/04/centos53ami_19.html
http://suz-lab.blogspot.com/2009/04/centos53ami_20.html

実際のManifestは下記となります。
ami-suz-lab.com/ami-centos-base-5.3.2.img.manifest.xml

Enjoy!

参考サイト - http://www.diigo.com/user/suz-lab/00000009
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/21/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月20日月曜日

CentOS(5.3)のAMIを公開

スズキです。

いよいよ、AMIの公開です。

AMIの公開をするには、"Amazon EC2 API Tools"が必要となります。
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351&categoryID=88

ちなみに、Javaで作られているようなので(Javaが動けば動くので)、ダウンロードして、
Windowsのポータブル環境としてセッティングしました。

そして、以下のように環境変数をセットします。

--------【BAT】--------
set EC2_HOME=S:\sbin\ec2
set EC2_PRIVATE_KEY=S:\etc\ec2\suz-lab\pk-XXXXXXXX.pem
set EC2_CERT=S:\etc\ec2\suz-lab\cert-XXXXXXXX.pem
set JAVA_HOME=S:\sbin\java\1.6.0
set PATH=C:\Windows\System32;S:\sbin\ec2\bin;S:\sbin\java\1.6.0\bin;
--------
※ 環境変数の意味は下記の通り
EC2_HOME : "Amazon EC2 API Tools"をインストールした(置いた)フォルダ
EC2_PRIVATE_KEY : Private Key File ("Access Identifiers"ページから取得)
EC2_CERT : X.509 Certificate file ("Access Identifiers"ページから取得)

そして、以下のコマンドを実行すると、指定したAMIが公開(public)になります。

>ec2-modify-image-attribute ami-0b57b062 --launch-permission -a all

※第一引数が"AMI ID"です。

これで誰でも、SUZ-LAB謹製CentOS(5.3)AMIが利用できるようになりました。
suz-labで検索すると出てくる下記Manifestが該当するAMIです。是非、使ってみて下さい!

ami-suz-lab.com/ami-centos-base-5.3.1.img.manifest.xml

Enjoy!
(これ、言ってみたかった)

参考サイト - http://www.diigo.com/user/suz-lab/00000006
--
http://suz-lab.blogspot.com/

AMIは「chroot」して確認!

スズキです。

AMIの登録も終わり、インスタンスを起動し、
http://suz-lab.blogspot.com/2009/04/centos53ami_19.html
さあ、sshでログイン、というところで、どうしてもログインがはじかれ、
解決に、かなりの時間を費やしてしまいました。

問題は、下記を参考に作成した、"get-credentials.sh"でした。
http://vkgtaro.jp/2008/11/10/amazon_ec2_centos5

このスクリプトは、"ec2-add-keypair"で作った公開鍵を取得するもので、
起動時に実行されるよう、"rc.local"から呼び出されるようにしているものです。

そして、このスクリプト中に、"curl"コマンドが使われており、
BaseでのインストールのみのCentOSには、このコマンドが無く、そこでエラーになっていました。

スクリプトは実際に起動して動作確認はしたのですが、イメージを作成しているOS(CentOS)には
"curl"が導入されており、そこ時点での発見には至りませんでした…

なので、この問題を回避するには下記のように"chroot"でマウントしたイメージのファイルシステムを
ルートにした状態で上記のコマンドをテストする必要があります。

# chroot /mnt/fs-centos-base-5.3 /usr/local/sbin/get-credentials.sh

当然この時点で"curl"が無い旨のエラーが出るはずなので、下記のようにインストールすることで、
sshでログインできるイメージに仕上げることができます。

# yum -c yum-centos-base-5.3.conf
--installroot=/mnt/fs-centos-base-5.3 install curl

次は、ようやく、AMIの公開だ。(長かった…)

参考サイト - http://www.diigo.com/user/suz-lab/00000007
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/20/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月19日日曜日

CentOS(5.3)のAMIを登録

スズキです。

AMIの作成が終わったので、
http://suz-lab.blogspot.com/2009/04/centos53ami.html
今度はAMIの登録です。

【依存rpmのインストール】
"Amazon EC2 AMI Tools"を使って登録するのですが、
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368
rsyncとrubyに依存しているので、下記のように、
あらかじめyumにてインストールしておく必要があります。

# yum install rsync
# yum install ruby

【"Amazon EC2 AMI Tools"のインストール】
下記のようにrpmにてインストールします。

# wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
# rpm -Uvh ec2-ami-tools.noarch.rpm

【登録用イメージ作成】
下記パラメータをあらかじめ準備しておきます。
-k : pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem("Access Identifiers"ページから取得)
-c : cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem("Access Identifiers"ページから取得)
-u : Account Number("Access Identifiers"ページ右上の数字からハイフンをとったもの)

# ec2-bundle-image -i ami-centos-base-5.3.1.img \
-k pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem \
-c cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem \
-u 000000000000

【登録用イメージのアップロード】
「登録用イメージ作成」で/tmp以下にファイル一式(xxx.manifest.xmlも含む)が作成されます。
パラメータは下記となります。
-b : アップロード先となるS3のバケット名
-a : Access Key ID
-s : Secret Access Key

# ec2-upload-bundle -b ami-suz-lab.com \
-m /tmp/ami-centos-base-5.3.1.img.manifest.xml \
-a XXXXXXXXXXXXXXXXXXXX \
-s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

【AMIの登録】
"Elastic Fox"のImagesタブにて、"Machine Images"の領域で右クリックし、
「Register a new AMI」を選択することで登録できます。
選択時には、下記のようにバケット名からのxxx.manifest.xmlの入力が要求されます。
ami-suz-lab.com/ami-centos-base-5.3.1.img.manifest.xml

後は今までどおり、登録したAMIでインスタンスが起動("Elastic Fox"などで)できれば成功です。

次はAMIをパブリックにしてみんなが利用できるようにしよう。

参考サイト - http://www.diigo.com/user/suz-lab/00000005
--
http://suz-lab.blogspot.com/

CentOS(5.3)のAMIを作成

スズキです。

先週、今週は"AWS Week"、今週、来週は"Redmine Week"っぽいです。

基本的に下記サイトの記述にしたがって作業すればOKです。
http://vkgtaro.jp/2008/11/10/amazon_ec2_centos5

【空イメージの作成】
Coreのみのインストールなので、サイズは1Gにしています。
ファイルシステムはext3にしています。

# cd /mnt
# dd if=/dev/zero of=ec2-centos-core-5.3.img count=1024 bs=1M
# mke2fs -F -j img-core.ec2.iret.co.jp.img

【イメージをマウント】
上記イメージを"/mnt/fs-centos-core-5.3"にマウントします。

# mkdir fs-centos-core-5.3
# mount -o loop ec2-centos-core-5.3.img fs-centos-core-5.3

【デバイスファイルの作成】
"/mnt/fs-centos-core-5.3/dev"以下におなじみのデバイスファイルを作成します。

# mkdir fs-centos-core-5.3/dev
# for i in console null zero; do /sbin/MAKEDEV -d
/mnt/fs-centos-core-5.3/dev -x $i; done

【fstabの作成】
下記のようなfstabを作成します。

# mkdir fs-centos-core-5.3/etc
# cat fs-centos-core-5.3/etc/fstab
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

【procファイルシステムのマウント】
おなじみのprocファイルシステムをマウントします。

# mkdir fs-centos-core-5.3/proc
# mount -t proc none fs-centos-core-5.3/proc

【yumでCoreグループをインストール】
下記の通りCentOS-Base.repoの"$releasever"が展開されないので、
http://blogs.yahoo.co.jp/yohei0511/1869211.html
実際のバージョンに書き換えたconfファイルを作成してyumを使用します。

cp /etc/yum.conf ./yum-centos-core-5.3.conf
cat /etc/yum.repos.d/CentOS-Base.repo >> yum-centos-core-5.3.conf
# cat /etc/redhat-release
CentOS release 5.3 (Final)
# sed -i 's/$releasever/5.3/g' yum-centos-core-5.3.conf
# yum -c yum-centos-core-5.3.conf
--installroot=/mnt/fs-centos-core-5.3 -y groupinstall Core

【ネットワークの設定ファイルを作成】
おなじみの"network"と"ifcfg-eth0"を下記のように作成します。

# cat fs-centos-core-5.3/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
# cat fs-centos-core-5.3/etc/sysconfig/network
NETWORKING=yes

【fstabに追記】
fstab下記、最後の2行を追記します。

# cat fs-centos-core-5.3/etc/fstab
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda2 /mnt ext3 defaults 0 0
/dev/sda3 swap swap defaults 0 0

【キー取得スクリプトの仕込み】
キーを受け取るスクリプトを作成して、起動に実行されるようにします。
これがないとsshでログインすることができません。

# vi fs-centos-core-5.3/usr/local/sbin/get-credentials.sh
# chmod a+x fs-centos-core-5.3/usr/local/sbin/get-credentials.sh
# cat fs-centos-core-5.3/etc/rc.local
touch /var/lock/subsys/local
/usr/local/sbin/get-credentials.sh

【アンマウント】
作業が終了したら、マウントしたファイルシステムをアンマウントします。

# umount fs-centos-core-5.3/proc
# umount fs-centos-core-5.3

次はAMIの登録とインスタンスの起動だ。(Xenも学習しないとやばいなー…)

参考サイト - http://www.diigo.com/user/suz-lab/00000004
--
http://suz-lab.blogspot.com/

今日のブックマーク 04/19/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月17日金曜日

今日のブックマーク 04/17/2009


Posted from Diigo. The rest of my favorite links are here.

AS3のSocketクラスで発生するイベント

スズキです。

AS3でSocketクラスを使うときに、処理すべきイベントの一覧です。

下記は リファレンスガイドからの引用とイベントリスナー登録のサンプルです。
http://livedocs.adobe.com/flex/2_jp/langref/flash/net/Socket.html#eventSummary
※ var socket:Socket = new Socket("localhost", 10000); // 全体

▼close(Event.CLOSE)
> サーバーによりソケット接続が閉じられたときに送出されます。
socket.addEventListener(
  Event.CLOSE, function(event:Event) { ... }
);

▼connect(Event.CONNECT)
> ネットワーク接続が確立されたときに送出されます。
socket.addEventListener(
  Event.CONNECT, function(event:Event) { ... }
);

▼ioError(IOErrorEvent.IO_ERROR)
> 入出力エラーが発生して送信またはロード操作が失敗したときに送出されます。
socket.addEventListener(
  IOErrorEvent.IO_ERROR, function(event:IOErrorEvent) { ... }
);

▼securityError(SecurityErrorEvent.SECURITY_ERROR)
> Socket.connect() の呼び出しによって、呼び出し元のセキュリティサンドボックスの外にある
> サーバーや 1024 未満のポート番号に対して接続しようとしたときに送出されます。
socket.addEventListener(
  SecurityErrorEvent.SECURITY_ERROR, function(event:SecurityErrorEvent) { ... }
);

▼socketData(flash.events.ProgressEvent.SOCKET_DATA )
ソケットがデータを受信したときに送出されます。
Ex. socket.addEventListener(
  ProgressEvent.SOCKET_DATA, function(event:ProgressEvent) { ... }
);

ネットワークプログラミングは奥が深い…

参考サイト - http://www.diigo.com/user/suz-lab/00000001
--
http://suz-lab.blogspot.com/

WindowsでRedmineとBazaarとの連携

スズキです。

何かプラグインのような拡張を別途する必要があるのかと思ってましたが、
最新のRedmineではデフォルトで対応しているようです。(下記参照)
http://www.redmine.org/wiki/redmine/RedmineRepositories

管理者でログインして、上部メニューから
「管理」→「設定」→「リポジトリ」でBazaarにチェックがついていることを確認して、
プロジェクト(SCM未設定)のページから
「設定」→「リポジトリ」の画面で、SCMにBazaarを選択すると
"Root directory"が指定できるようになります。

実際、Bazaarお利用するには、Bazaarのコマンド群にPATHが通ってないといけないので、
下記のようなバッチファイルで起動するようにしました。

--------【redmine.bat】--------
@echo off
set PATH=C:\Windows\System32;S:\sbin\bazaar;\sbin\ruby\bin;S:\lib\dll;
cd S:\sbin\redmine
ruby script\server -e production
--------

んー、家のVISTA(64bit)だと起動に失敗してしまう、何故だろう…

参考サイト - http://www.diigo.com/user/suz-lab/00000000
--
http://suz-lab.blogspot.com/

2009年4月16日木曜日

CentOS(5.3)でNTPを利用した時刻合わせ

スズキです。

実験用サーバの時刻がずれまくってたので…

下記サイトで詳しく解説されています。
http://centossrv.com/ntp.shtml

▼ntpのインストール
# yum install ntp

▼とりあえず時刻あわせ(ntpサーバはntp.nict.jpを指定)
# ntpdate ntp.nict.jp

▼定期的に時刻あわせするようにサービスを起動
# service ntpd start

これでFTPのファイルが表示しない問題も解決か!?

参考サイト - http://www.diigo.com/user/suz-lab/00000002
--
http://suz-lab.blogspot.com/

SBM(ソーシャルブックマーク)の使い方

スズキです。

ブログと違って、未だSBM(ソーシャルブックマーク)が上手く使えていません...
(ちなみに僕はDiigo - http://www.diigo.com - を使っています)

気になった記事をブックマークしたりしなかったり…
ブックマークしたものは見直さないし… その前にGoogleで検索してしまう…
ブログへの自動登録もとりあえずだし…

いっそ、やめたほうがいいくらいでしょう…

で、いろいろ考えたのですが、ブログの記事を書くための
参考文献集みたいに使って見ることにしました。

具体的には、まず書こうとするブログ記事に番号(00000001など)をつけ、
その記事を書くために参考にしたページを番号をラベルとしてブックマークします。

そしてブログを投稿するときに、記事の最後にフッターぽく、
参考サイトとして上記のラベルのブックマーク一覧のURLを記載します。

とりあえず、次の記事から実施してみます。(これでダメだったら、あきらめよう...)

--
http://suz-lab.blogspot.com/

WindowsにRedmineをインストール

スズキです。

Railsもインストールできたので、いよいよRedmineです。
http://suz-lab.blogspot.com/2009/04/windowsrails.html

まず、準備として、iconv, openssl, sqlite3モジュールを使えるようにしなければいけません。

【iconv】

下記で紹介されている、
http://www.garbagecollect.jp/ruby/mswin32/ja/documents/install.html
iconv-1.8.win32.zipのiconv.dllをruby.exeのフォルダにコピーです。

【openssl】

下記で紹介されている、
http://www.limber.jp/?Software%2FOpenSSL%20for%20Windows
openssl-0.9.8k-win32-bin_dynamic.zip の
libeay32.dllとssleay32.dllをruby.exeのフォルダにコピーです。

【sqlite3】

下記で紹介されている、
http://www.sqlite.org/download.html
sqlitedll-3_6_13.zipのsqlite3.dllをruby.exeのフォルダにコピーです。

そして次の記事の内容を参考に、下記のコマンドを実行します。
http://d.hatena.ne.jp/GARAPON/20081022/1224657975

>gem install sqlite3-ruby --version '= 1.2.3' --include-dependencies
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you list
Successfully installed sqlite3-ruby-1.2.3-x86-mswin32
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.3-x86-mswin32...
Installing RDoc documentation for sqlite3-ruby-1.2.3-x86-mswin32...

※ 最終的には、上記のdllとRailsをインストールするときに導入したzlib.dllは
ruby.exeと同じフォルダにコピーするのではなく、"S:\lib\dll"にまとめ、
このフォルダにPATHを通して、ruby関係のコマンドを実行するようにしています。

準備が整ったら、ようやくRedmineの導入です。

今回はDBにsqlite3を利用するので、"config/database.yml"を下記のようにします。

--------【database.yml】---------
production:
  adapter: sqlite3
  dbfile: S:\var\sqlite\redmine.db
--------

そして下記コマンド群を実行すると、Redineが利用できるようになります。

>rake db:migrate RAILS_ENV="production"
>rake load_default_data RAILS_ENV="production"

実際に、下記コマンドでWebサーバを立ち上げて、

>ruby script\server -e production

ブラウザで"http://localhost:3000/"にアクセスすると、Redmineのページが表示されます。

次は、Bazaarとの連携だ。

--
http://suz-lab.blogspot.com/

2009年4月15日水曜日

WindowsにRailsをインストール

スズキです。

RubyGemsの次は、Railsです。
http://suz-lab.blogspot.com/2009/04/windowsrubygems.html

下記のようにRubyGemsを用いてインストールします。(簡単すぎです)

>gem install rails --include-dependencies
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you list
Successfully installed rake-0.8.4
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
7 gems installed
Installing ri documentation for rake-0.8.4...
Installing ri documentation for activesupport-2.3.2...
Installing ri documentation for activerecord-2.3.2...
Installing ri documentation for actionpack-2.3.2...
Installing ri documentation for actionmailer-2.3.2...
Installing ri documentation for activeresource-2.3.2...
Installing RDoc documentation for rake-0.8.4...
Installing RDoc documentation for activesupport-2.3.2...
Installing RDoc documentation for activerecord-2.3.2...
Installing RDoc documentation for actionpack-2.3.2...
Installing RDoc documentation for actionmailer-2.3.2...

ここで注意点ですが、実際RubyGemsを利用するには、"zlib.dll"が必要になります。
下記の"zlib-1.1.4-1-mswin32.zip"をダウンロードして、
http://jarp.does.notwork.org/win32/
展開フォルダのbin下の"zlib.dll"をruby.exeと同じフォルダにコピーすればOKです。

※ zlib以外にもdllが別途必要になるものがあります。(下記にまとめられています)
http://www.garbagecollect.jp/ruby/mswin32/ja/documents/install.html

次は、ようやく、"redmine"だ!

--
http://suz-lab.blogspot.com/

2009年4月14日火曜日

WindowsにRubyGemsをインストール

スズキです。

WindowsにRedmineをインストールするために、
それには、Railsが必要で、RailsのインストールにRubyGemsを使うので、
まずはRubyGemsのインストールです。

インストールは簡単で、下記より"rubygems-x.x.x.zip"をダウンロードして、
http://rubyforge.org/frs/?group_id=126

展開フォルダ中で下記コマンドを実行するだけです。
# ruby setup

次は、Railsか...

--
http://suz-lab.blogspot.com/

AS3で一定の間隔毎の処理(Timerクラス)

スズキです。

Timerクラスが使えます。
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/utils/Timer.html

使い方は、下記のような感じです。

--------【AS3】--------
var timer:Timer = new Timer(3000);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
timer.stop();
function timerHandler(event:TimerEvent):void {
  trace("3秒ごとに実行");
}
--------

ネットワークは生き物みたいだ...(実装が難しい...)

--
http://suz-lab.blogspot.com/

2009年4月13日月曜日

CentOS 5.2 から 5.3 へ

スズキです。

知らないうちにCentOSの最新版が、5.2から5.3になってました。
http://wiki.centos.org/Manuals/ReleaseNotes/CentOS5.3/Japanese

5.2からのアップデートは下記のようにyumで一発です。(時間はかかりますが…)

# yum update

そして、CentOSのバージョンを確認すると、ちゃんと5.3になっています。

# cat /etc/redhat-release
CentOS release 5.3 (Final)

早く、"Amazon EC2"で"CentOS 5.3"やりたいなー。

--
http://suz-lab.blogspot.com/

Javaで日付を「ISO 8601」形式で出力

スズキです。

Javaで日付を「ISO 8601」形式(2007-06-28T06:30:35+09:00)で出力する方法です。

こちらも、"Commons Lang"を利用すると簡単に実現することができます。
利用するクラス/メソッドはDateFormatUtilsクラスの定数、
ISO_DATE_TIME_ZONE_FORMATから取得できるFastDateFormatクラスの
formatメソッドとなります。
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/time/DateFormatUtils.html#ISO_DATE_TIME_ZONE_FORMAT
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/time/FastDateFormat.html#format(java.util.Date)

具体的なコードは下記のような感じになります。

--------【Java】--------
FastDateFormat format = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT;
format.format(new Date());
--------

"Commons Lang"はどっかで、しっかり、全クラス、メソッド、目を通しておこう。

--
http://suz-lab.blogspot.com/

Javaでリスト/配列中の文字列を連結

スズキです。

"Commons Lang"のStringUtilsクラスのメソッドjoinが便利です。
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/StringUtils.html#join(java.util.Collection,%20java.lang.String)

下記はPOSTパラメータを作成する場合のサンプルです。

--------【Java】--------
// マップに"key"と"value"をセット
Map<String, String> map = new HashMap<String, String>();
map.put("timeline_key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
map.put("timeline_id" , "3887");
// "key=value"の形でリストに保存
List<String> params = new ArrayList<String>();
for(Entry<String, String> entry : map.entrySet()) {
  params.add(entry.getKey() + "=" + entry.getValue());
}
// "key=value&key=value"の形でリストの内容を連結
StringUtils.join(params, "&")
--------
※第二引数で、連結時の間の文字を指定できます。

"Commons Lang"、便利すぎる…

--
http://suz-lab.blogspot.com/

"Google App Engine Java"で"@nifty TimeLine API"を利用

スズキです。

"Google App Engine Java"から"@nifty TimeLine API"を利用して、
タイムラインに「できごと」を投稿してみました。(APIの仕様は下記です)
http://webservice.nifty.com/timeline/v1/articles/create.htm

実際にはGAEから"@nifty TimeLine API"のURLにアクセスして、…
といった機能を実装するわけですが、
これは、GAEの"URL Fetch"の"Low-level API"を利用しています。
http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/urlfetch/package-summary.html

--------【Java】--------
// "ISO 8601"形式の日付情報
FastDateFormat format = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT;

// "Timeline API"のURL
URL url = new URL("http://api.timeline.nifty.com/api/v1/articles/create");

// "TimeLine API"のパラメータを設定
Map<String, String> map = new HashMap<String, String>();
map.put("timeline_key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
map.put("timeline_id" , "3887");
map.put("title" , URLEncoder.encode("タイトル", "UTF-8"));
map.put("description" , URLEncoder.encode("説明", "UTF-8"));
map.put("start_time" , format.format(new Date()));
map.put("end_time" , format.format(new Date()));
map.put("grade" , "12");

// POSTパラメータの作成
List<String> params = new ArrayList<String>();
for(Entry<String, String> entry : map.entrySet()) {
  params.add(entry.getKey() + "=" + entry.getValue());
}

// "Time1Line API"の実行
HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
request.setPayload(StringUtils.join(params, "&").getBytes());
URLFetchService fetchService = URLFetchServiceFactory.getURLFetchService();
HTTPResponse response = fetchService.fetch(request);

// XMLの結果をそのまま出力
resp.setContentType("text/xml");
resp.getOutputStream().write(response.getContent());
--------

「"Time1Line API"の実行」の部分が、
GAEの"URL Fetch"の"Low-level API"を利用したコードになっています。

次は"DatastoreService"やろう。

--
http://suz-lab.blogspot.com/

2009年4月10日金曜日

FlashDevelopのASDocGenは単体でも利用可能

スズキです。

下記でも書いたのですが、FlashDevelopでASDOCを作成する場合は、
http://suz-lab.blogspot.com/2009/03/flashdevelopairasdoc.html
上部メニューの「Tools」→「Flash Tools」→「Documentation Generator」から
ASDocGenというツールを立ち上げ、そのツールで行います。

このツールは、"Tools\asdocgen"下の"ASDocGen.exe"で単独でも起動することができます。

なので、拡張子が"docproj"のファイルを、上述したツールに関連付けておくと、
何かと便利です。

でも、ASDOCは勝手に自動生成するようにしたいなー。

--
http://suz-lab.blogspot.com/

Linuxでファイルの日付を変えるには

スズキです。

touchコマンドで可能です。

下記のように"-t"オプションの後に、"YYYYMMDDhhmm.ss"の形式で指定できます。

# touch -t 200106071112.55 test1.txt
# touch -t 200904091112.55 test2.txt
#
# ls -la
-rw-r--r-- 1 root root 0 6月 7 2001 test1.txt
-rw-r--r-- 1 root root 0 4月 9 11:12 test2.txt

これくらいは、脊椎反射でできるようにしたいなー。

--
http://suz-lab.blogspot.com/

今日のブックマーク 04/10/2009


Posted from Diigo. The rest of my favorite links are here.

「Book」ラベル「Review」ラベルの整理

スズキです。

下記のようにラベルを整理しました。(「書評」ラベルはなくしました)

「Book」ラベル: 本に関係ある内容
http://suz-lab.blogspot.com/search/label/Book

「Review」ラベル: 本も含めた商品レビューの内容
http://suz-lab.blogspot.com/search/label/Review

「自己啓発」と「Lifehack」も整理したいなー…

--
http://suz-lab.blogspot.com/

(書評) 小飼弾の 「仕組み」進化論

スズキです。

「決弾」に続き、今回は「小飼弾の 「仕組み」進化論」です。
http://www.amazon.co.jp/gp/product/4534045220?tag=iretsuzusblog-22

まずは目次です。(Amazonより)
--------
Part0 仕組み作りが仕事になる
Part1 仕組みの仕組み 仕組みを作る前に知っておきたいこと
Part2 仕組みを作り直す 目の前の仕事を20%の力でこなす仕組み
Part3 仕組みを使う 仕組みのコストとテストを考える
Part4 仕組みを合わせる チームで仕組み合うために
Part5 仕組みと生物 「新しい仕組み」を作るヒント
Part6 仕組みの未来
--------
http://www.amazon.co.jp/gp/product/toc/4534045220?tag=iretsuzusblog-22

本書は、生物やプログラミングなど、いろいろな事例を紹介しながら
「仕組み」について考察された内容になっています。

この「仕組み」を作るには、当然、「新しい仕組みを見つけるためのチャレンジ」
を行っていく必要がありますが、本書では、下記のような配分で行うことをすすめています。

20%: 既存の仕組みを回す仕事
80%: 新しい仕組みを見つけるためのチャレンジ

遊びの時間も含めて15時間くらい使えるとしたら、3時間で自分ノルマ分の金を稼いで、
残りの時間で、実験や調査などいろいろやるって感じでしょうか…

また「仕組み」自体は、さらに「テコ」と「奴隷」に分けられており、
下記のようなものとされています。

テコ: 自分の力を別の形に変換する道具(公式やマニュアルなど…)
奴隷: 他から借りてきた自分以外の力(判断能力を持つ)

この分解のしかたは、現状の仕組みを考え直すときなどにも、
是非使ってみたいと思います。(フレームワークみたいだ)

ここでの僕的なポイントは「奴隷」が判断能力を持つものとして
とらえられていることです。

それゆえ、ゴールを示すことの重要性は非常に納得がいきます。
ゴールまでの道のりを「見える化」することで、さらなる効率化が
可能になるのではないのでしょうか?

最後に、「仕組み」づくりの留意点についてですが、
「遠くを見過ぎない」と「仕掛品を作っておく」が挙げられています。

自分の手が伸ばせる範囲で、準備できることは可能な限りしておき、
チャンス(最後の1ピース)がきたら、すぐに実施できるよう心がけておく、
という感じでしょか?

よく考えると、今までの自分のスタイルが、なんとなくこんな感じだったのでは、と思うのですが、
本書を読むことで、もっと、意識して心がけていこうと思います。

明日は「なぜユニクロだけが売れるのか」です。(どこまで連続でできるかなー)
http://www.amazon.co.jp/gp/product/4827204462?tag=iretsuzusblog-22

--
http://suz-lab.blogspot.com/

2009年4月9日木曜日

AWSの"ItemLookup"は"ItemId"を複数指定できる

スズキです。

昔、AWS(Amazon Associates Web Service)の簡単な使い方として、"ItemSearch"を紹介しましたが
http://suz-lab.blogspot.com/2008/11/amazon-associates-web-service.html
今回は、"ItemLookup"に関してです。

具体的には下記のようなリクエストを行うことで、
"ItemId"に指定した商品情報を取得することができます。

--------【API】--------
http://ecs.amazonaws.jp/onca/xml
?Service=AWSECommerceService
&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX
&Operation=ItemLookup
&ItemId=4757216564,4534045220

--------

今まで、ずっと、"ItemId"は一つしか指定できないと思っていたのですが、
上記のように複数指定できるようです。
http://docs.amazonwebservices.com/AWSECommerceService/2009-02-01/DG/index.html?ItemLookup.html
> For more than one ID, use a comma-separated list of up to ten IDs.
「一つ以上のIDをカンマ区切りで最大10個まで指定できます」

次はレスポンスのJSONP化だ。

--
http://suz-lab.blogspot.com/

今日のブックマーク 04/09/2009


Posted from Diigo. The rest of my favorite links are here.

(書評) 決弾 最適解を見つける思考の技術

スズキです。

不定期になってしまいましたが、書評です。

今回は、「決弾 最適解を見つける思考の技術」です。
http://www.amazon.co.jp/gp/product/4757216564?tag=iretsuzusblog-22

本書は、以下の目次(Amazonより)にあるテーマに対してQ&A方式で
著者が意見の展開していく形になっています。
--------
Chapter00 決弾 determination
Chapter01 男女 affection
Chapter02 親交 communication
Chapter03 楽習 education
Chapter04 仕事 occupation
Chapter05 育児 cultivation
Chapter06 人生 from conception to termination
Addition 対弾 v.s.勝間和代
--------
http://www.amazon.co.jp/gp/product/toc/4757216564?tag=iretsuzusblog-22

さまざまなQ&Aがあるのですが、特に印象的だったのは下記の三つです。

【勉強しないといけないのに、ついついゲームをやってしまう。】
→ 「ゲームをクリアして作業机からどかす。」

と言っても、ゲームのクリアに時間がかかっていたら試験が終わってしまうので、
気になったことは、集中してすぐにクリアできる能力/環境がポイントになるのかなー?
もっと意識しよう。

【会社に箔をつけたい】
→ 「会社の価値は、財務諸表で示せ。」

んー、言ってることはわかるけど、具体的なイメージが難しいなーって状態です。
財務諸表を楽習しなおそう。

【持ち家か賃貸か。】
→ 「持ち家が選択肢になるのは、バランスシートで考えれるようになってから。」

おおー、弾言の考え方だったなー。
http://suz-lab.blogspot.com/2008/09/blog-post_26.html
やはり、会計の知識が重要だなー。楽習、楽習。

と言うことで、会計の重要性を再認識した一冊でした。会計、がんばろう…

明日は、「小飼弾の 「仕組み」進化論」、書きます。

--
http://suz-lab.blogspot.com/

2009年4月8日水曜日

"Google App Engine SDK for Java"を試してみた

スズキです。

先ほど存在を知り、ブログでメモした"Google App Engine SDK for Java"ですが、
http://suz-lab.blogspot.com/2009/04/google-app-engine-java.html
早速、Eclipseのプラグインベースでの開発(開発サーバへの公開まで)を試してみました。

まずは下記より"Google App Engine SDK for Java"のダウンロードです。
http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Java
展開して、適当に配置(S:\sbin\appengine)しておきます。

次に下記アップデートサイトより、Eclipse(3.4)のプラグインを導入します。
http://dl.google.com/eclipse/plugin/3.4
とりあえず、"Google Plugin for Eclipse"のみ導入しました。
("Google App Engine SDK for Java"は上記で別途導入しているので)

そして、Eclipseの設定です。
「ウィンドウ」 → 「設定」 → 「Google」 → 「AppEngine」、とたどり、"追加"ボタンで、
"Google App Engine SDK for Java"のパスを設定します。

この状態で新規に"Web Google Application"プロジェクトを作成すると、
以下で示されている、フォルダやファイル群が作成されます。
http://code.google.com/appengine/docs/java/gettingstarted/creating.html

既に下記のようなサンプルServletが作られています。

--------【Java】--------
package test;
import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class testServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
    resp.setContentType("text/plain");
    resp.getWriter().println("Hello, world");
  }
}
--------
※ コンパイラー準拠レベルが1.5じゃないと"@SuppressWarnings"がエラーになります。

最後にプロジェクトを右クリックして、「実行」 → 「Web アプリケーション」で開発サーバが立ち上げ、
(コンソールには下記が出力されます)
The server is running at http://localhost:8080/
実際に、このURLにアクセスするとサンプルServletの出力が確認できます。

Pythonのときのアカウントでアップロード(公開)できるのかなー?

--
http://suz-lab.blogspot.com/

Google App Engine Java

スズキです。

"Google App Engine"でjavaが使えるようになったようです。
http://code.google.com/appengine/docs/java/overview.html

とりあえず、SDKいじってみよう。

--
http://suz-lab.blogspot.com/

"Command Prompt Portable"の活用(再び)

スズキです。

以前(一年前くらい)、"Command Prompt Portable"について書きました。
http://suz-lab.blogspot.com/2008/02/command-prompt-portable.html

そして、バージョンが2.0あたりになったときに、また少し使い始めて、
そのあと、もう、ほとんど使っていない状態になっていました...
http://suz-lab.blogspot.com/2009/02/command-prompt-portable-20.html

近頃(昨日)、WindowsでのBazaar環境を整備して、再度コマンドラインを使う生活に
なってきました。なので、同時に、この"Command Prompt Portable"も復活です。
(今後は積極的に使っていこう...)

ということで、現状のcommandprompt.batです。
("Data\Batch"以下にある"Command Prompt Portable"起動時実行されるコマンド群です)

--------【commandprompt.bat】--------
@echo off
color 07
prompt $p$g
title Command Prompt Portable
set PATH=C:\Windows\System32;S:\sbin\bazaar;
set BZR_HOME=S:\etc
doskey cat=type $*
doskey ls=dir $*
doskey rm=del $*
doskey pwd=cd
doskey vi=vim $*
cls
ver
cd \home
--------
※今回はBazaar関係の環境変数をセットしています。

Synergy使うとコマンドプロンプトのウィンドウのフォーカスがおかしくなる…
同じ症状の人、いるみたいだなー...
http://plaza.rakuten.co.jp/cineword/diary/200703030002/
"Alt+Tab"使えってことか…

--
http://suz-lab.blogspot.com/

2009年4月7日火曜日

Bazaarでバージョン管理

スズキです。

順番ばらばらですが、引き続きBazaarメモです。

以前、"プロジェクトに必要なフォルダ"をまとめたのですが、
http://suz-lab.blogspot.com/2009/01/blog-post.html
これらをBazaarでバージョン管理していきたいと思います。

ちなみに"プロジェクトに必要なフォルダ"は、現在、多少バージョンアップしており、

【0_雛形】
文字通りです。

【1_受発注】
契約書、見積書、発注書、...。

【2_納品物】
先方への納品物一式です。先方へはこのフォルダをzipして提出します。

【3_成果物】
作成した成果物です。IDEなどのワークスペースも含み、作業領域でもあります。

【4_EEE、5_FFF、6_GGG】
未定。

【7_先方より】
先方よりいただいたものをすべて置きます。以下のフォルダ構成も先方のものそのままにします。

【8_参考資料】
先方からいただいたもの以外の参考資料を置きます。

【9_その他】
上記に当てはまらないものを、とにかく置きます。

といった感じです。

特に【3_成果物】には、次のようにIDEごとのワークスペースフォルダをおいています。
eclipse, flashdevelop, visualstudio, editor(左記IDE以外のワークスペースです)

話は戻って、上記のフォルダ(ファイル)群をBazaarでバージョン管理するわけですが、
【0_雛形】、...、などがあるフォルダ(プロジェクト直下)に行き、下記コマンドを実行します。

# bzr init // リポジトリの作成
# bzr add // フォルダ・ファイルの追加
# bzr commit -m message // フォルダ・ファイルのコミット

そういえば、FlashDevelopのair、binフォルダまでコミットしちゃったなー...
次は無視設定関係をしっかりやろう。

--
http://suz-lab.blogspot.com/

"bzr-svn"で"Google Codes"(SVN)と連携

スズキです。

Windows版のBazaarには、"bzr-svn"プラグインがデフォルトで導入されているので、
https://launchpad.net/bzr/+download
("bzr-nonadmin-x.x-x.exe"をポータブル環境!?として使っています)

下記コマンドにて、ブランチを作成することができます。

# \bin\bazaar\bzr branch
svn+https://suz-example-s2.googlecode.com/svn/trunk/ suz-example-s2

※"svn+"はdeprecatedと言われますが、"svn+"が無いとエラーになってしまいました...

不思議なことに、user/pass情報を入力しなくても、pull/pushまでできてしまいました...

この辺はよく調べないと...

--
http://suz-lab.blogspot.com/

Bazaarの設定ファイルのフォルダを変更

スズキです。

ようやく、Bazaarネタです。

Bazaarの設定ファイルは、デフォルトで下記フォルダに保存されるようになっています。

Linux/Unix: $HOME/.bazaar on
Windows XP: C:\Documents and Settings\<username>\Application Data\Bazaar\2.0
Windows Vista: C:\Users\<username>\AppData\Roaming\bazaar\2.0

しかし、Windows(Vista)のPortable環境で使っている関係上、上記のフォルダではなく、
ポータブル環境下のフォルダに保存したいところです。

そして、設定ファイルのフォルダの変更は、環境変数"BZR_HOME"を設定することで
実現できます。具体的には、

set BZR_HOME=S:\etc

とすることで、"S:\etc\bazaar\2.0"に設定ファイルが保存されるようになります。
その他の環境変数は、こちらに詳しく書かれています。
http://doc.bazaar-vcs.org/latest/en/user-reference/bzr_man.html#environment-variables

ローカルにしかない、各種プロジェクト(ソース)は、とりあえず、すべてBazaar化しよう。

--
http://suz-lab.blogspot.com/

PortableAppsアプリの起動スプラッシュを消す

スズキです。

下記でつぶやいていたことですが、
http://suz-lab.blogspot.com/2009/04/vlc-portable-099-released.html
こちらでやり方が紹介されていました。
http://moewe.xrea.jp/tips/070606_portableapps.html

VLCPortableの場合、同様に"\Other\Source"下にVLCPortable.iniがあるので、
それを、VLCPortable.exeと同じ場所にコピーし、下記のように
DisableSplashScreen=true
とします。

--------【VLCPortable.ini】--------
[VLCPortable]
VLCDirectory=App\vlc
SettingsDirectory=Data\settings
VLCExecutable=vlc.exe
AdditionalParameters=
WaitForVLC=false
DisableSplashScreen=true
--------

他のPortableAppsアプリも全部消しておこう。

--
http://suz-lab.blogspot.com/

2009年4月6日月曜日

yumパワーアップ

スズキです。

下記情報に従い、SUZ-LAB実験用CentOS5.2サーバのyumをパワーアップしました。

▼Cent OSをインストールした後、「yum update」を行う前に必ず「yum install yum-fastestmirror」すること
http://d.hatena.ne.jp/gamella/20090405/1238920311
> こいつをインストールすると勝手に一番早いサーバから
> パッケージを取得してくれるのでちょっとハッピーです。

▼yum-protect-packagesもオススメ
http://d.hatena.ne.jp/Kiske/20090406/1238983357
> yum関連のパッケージや指定パッケージの依存関係を
> 壊さないように保護できるプラグインです。

実際のインストールはこんな感じです。(紹介するまでもありませんが...)

# yum install yum-fastestmirror
# yum install yum-protect-packages

っていうか、Bazzarリポジトリ作らないと...

--
http://suz-lab.blogspot.com/

2009年4月3日金曜日

VLC Portable 0.9.9 Released

スズキです。

近頃全然使っていませんが、VLCのポータブル版が0.9.9になっています。
http://portableapps.com/news/2009-04-02_-_vlc_media_player_portable_0.9.9

いつもの通り、何が良くなったかはわかっていませんが、とりあえずアップデートです。

そういえば、PortableAppsアプリの起動スプラッシュは消せるらしいなー。

--
http://suz-lab.blogspot.com/

ポータブル解凍ソフトは"Universal Extractor"に落ち着く

スズキです。

今まで、"7-Zip → PeaZip"と乗り換えてきたポータブル環境での解凍ソフトですが、
"Universal Extractor"が一番しっくりくるなー、と思うようになってきました。
http://www.legroom.net/software/uniextract

ということで、とりあえず"Universal Extractor"をSUZ-LAB標準解凍ソフトということで、
落ち着きます。

今まで、かなり、いろいろ調べたなー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 04/03/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月2日木曜日

改行コードの統一(AS3)

スズキです。

今さら何言ってんだよ、って話ですが、下記のようにOSごとに改行コードは異なります...

LF(\n) : UNIX系
CR(\r) : Mac
CR(\r) + LF(\n) : Windows

なので、こんな感じで、改行コードを統一しておくと幸せになるかもしれません。

--------【AS3】--------
var lines:String = "改行コードのあるテキスト";
lines = lines.replace("\r\n", "\r").replace("\n", "\r")
--------

そろそろ、イベントがんばらないと。

--
http://suz-lab.blogspot.com/

今日のブックマーク 04/02/2009


Posted from Diigo. The rest of my favorite links are here.

2009年4月1日水曜日

AS3のparseIntの挙動

スズキです。

AS3にはparseIntという文字列を整数値に変換する関数があります。
こんな感じに使います。

--------【AS3】--------
var text:String = "10";
var num:Number = parseInt(text);
--------

引数の文字列が整数値に変換できるものであるならば、
問題ないのですが、"suz-lab"などの、そうでない場合は"NaN"が返ってきます。

また、0.1などの小数などの場合は整数部分(0)が返されます。

まとめると、下記のような感じです。

parseInt("10"); // → 10
parseInt("10.1"); // → 10
parseInt("010"); // → 10
parseInt("suz-lab"); // → NaN

イベントの部分もしっかり時間をとって勉強したいなー...

--
http://suz-lab.blogspot.com/

AS3でtrim

スズキです。

ここでのtrimとは、下記のように文字列の両脇の空白を取り除く機能を指しています。
" suz-lab " → "suz-lab"

この機能は、Javaの場合、Stringクラスのインスタンスメソッドとして提供されています。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/String.html#trim()

しかしAS3の場合では、Stringクラスのメソッドにはなく、"mx.utils"パッケージのStringUtilクラスに、
クラスメソッドとして用意されています。
http://livedocs.adobe.com/flex/2_jp/langref/mx/utils/StringUtil.html#trim()

利用例はこんな感じです。

--------【AS3】--------
import mx.utils.StringUtil;
...
var before:String = " suz-lab ";
var after:String = StringUtil.trim(before);
--------

今月前半で、AS3を第二外国語程度にはしたいなー。

--
http://suz-lab.blogspot.com/

Eclipse3.4.2にアップデート

スズキです。

ちょっと遅いですが、Eclipseを3.4.2にアップデートしました。
http://www.eclipse.org/downloads/

アップデートするたびに、今回はプラグインどうしようか吟味するのですが、
まずは下記を導入しています。

▼ Pleiades
> Eclipseプラグイン日本語化プラグインです。
http://mergedoc.sourceforge.jp/index.html#/pleiades.html

▼ JStyle
> Eclipse のエディタで全角空白、半角空白、タブ、改行(LF、CRLF、CR)を
> 表示可能にするプラグインです。
http://mergedoc.sourceforge.jp/index.html#/jstyle.html

▼ Subversive
> バージョン管理システムSubversionをEclipseで使うためのプラグインです。
http://www.eclipse.org/subversive/

▼ m2eclipse
> EclipseとMavenを統合させるプラグインです。
http://m2eclipse.codehaus.org/

Maven統合に関しては、最初はq4mを試したのですが、
http://code.google.com/p/q4e/
使い方が良くわからなかったので、使い慣れているm2eclipseに戻しました...

あと、"Launchpad"はよくわからず、結局"Google Code"にしたので、
Subversiveです...

--
http://suz-lab.blogspot.com/