2009年5月29日金曜日

今日のブックマーク 05/29/2009


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

2009年5月28日木曜日

Redmineのリポジトリで表示するソースの文字コードに対応

スズキです。

Redmineは様々なSCMのリポジトリを閲覧する機能を持っています。
しかし、ソースの文字コードも様々なので、今までは、
ブラウザの文字エンコーディング設定で、都度、調整していました。

しかし、こちらの情報に習って、
http://redmine.jp/faq/repository/shift_jisutf-8/

管理者でログインし、

「管理」→「設定」→「リポジトリ」
リポジトリのエンコーディング: utf-8,shift_jis,euc-jp

と設定することで、日本語文字コードの自動判別が行われるようになり、
文字化けしないようになりました。

でも、日本語の入力がまだ化ける...

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

Redmine & Passenger & Bazaar

スズキです。

RedmineをPassengerを使ってApacheで公開し、
Bazaarのリポジトリを指定して、リポジトリを確認しようとしたら、
エラーが発生してしまいました...

エラーログ見ると下記のように、bzrコマンドが見つからない、
と怒っています。

sh: bzr: command not found

ということで、config/environment.rbの先頭に、

ENV['PATH'] = "#{ENV['PATH']}:/usr/local/bin"

と記述して、Apacheを再起動すると、無事、Bazaarのリポジトリが確認できるようになりました。
(bzrコマンドは"/usr/local/bin"にあります)

でも、まだ、エラーログに下記が出力されてしまう...
No handlers could be found for logger "bzr"

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

今日のブックマーク 05/28/2009


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

2009年5月27日水曜日

EC2(CentOS)でEBSの利用

スズキです。

EC2でEBSを利用してみました。

まずはElasticfox(Firefox)の「Volumes and Snapshots」で新しいVolumeを作成します。
Volumeの作成はサイズ(G)とゾーンを指定します。
ここで注意点ですが、EC2インスタンスと同じゾーンに作成しないと、
アタッチすることができません。

次に、インスタンスにアタッチです。
アタッチするときは、アタッチ先のインスタンスと、
アタッチしたときにデバイス(/dev/sdbなど)を指定します。

すると、インスタンス上に、デバイス(/dev/sdb)が現れるので、
下記のようにマウントまで行います。

# yes | mkfs -t ext3 /dev/sdb
# mkdir /vol
# mount /dev/sdb /vol

これで、EBSがCentOSで利用できるようになりました。

# df -k
...
/dev/sdb 1032088 89640 890020 10% /vol

定期的にスナップショットとるスクリプトも書こう。

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

RedmineでLDAP認証

スズキです。

Redmine側は、管理者でログインして、
「管理」 → 「設定」 → 「認証」 → 「LDAP認証」
とたどって、下記のように入力すればOKです。

名前 : Staff
ホスト : 127.0.0.1
ポート : 389
アカウント : cn=Manager,o=aws,dc=suz-lab,dc=com
パスワード : xxxxxxxx
Base DN : cn=Staff,o=aws,dc=suz-lab,dc=com

ログイン : uid
名前 : givenName
苗字 : sn
メールアドレス : mail

当然、上記に対応するLDAPエントリも必要です。
phpLDAPadminで作成する場合、"User Account"でのエントリ作成時、
デフォルトではmailの入力までありません。

ですので、改めてmail属性を追加する必要があるので、要注意です。

これで、消える前まで戻ったぞ... バックアップイメージもとったし...

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

FirefoxでグローバルIPアドレスを確認(external IP)

スズキです。

以前、グローバルIPアドレスを確認するサイトを紹介しましたが、
http://suz-lab.blogspot.com/2008/12/ip.html

Firefoxのプラグインで確認できるものがありました。
http://www.ermodev.se/visa_firefoxExtensions.htm

こちらで紹介されて、早速試してみました。
http://mff2.blog109.fc2.com/blog-entry-317.html

インストールすると、Firefoxの右下に、自分のグローバルIPが表示します。

たまには、Firefoxのアドオンもチェックしないと...

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

Compositeパターン説明サイトのまとめ

スズキです。

Compositeパターンは、
「ディレクトリなどのような、木構造を伴う再帰的なデータ構造を表現」
に利用できます。

▼Composite パターンデザインパターン[モデリング] -TECHSCORE-
http://www.techscore.com/tech/DesignPattern/Composite.html

▼Composite パターン - コンポジットパターン - オブジェクト指向設計
http://www.syboos.jp/sysdesign/doc/20080611165909478.html

▼Composite パターン - Wikipedia
http://ja.wikipedia.org/wiki/Composite_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

▼サルでもわかる 逆引きデザインパターン 第2章 逆引きカタログ ロジック編 Composite(コンポジット)
http://www.nulab.co.jp/designPatterns/designPatterns2/designPatterns2-4.html

次は、Adapterパターン。

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

PassengerでRedmineをサブディレクトリに公開

スズキです。

Redmine(Ruby on Rails)はPassengerを利用しApacheで動作させることができます。
http://suz-lab.blogspot.com/2009/05/phusion-passengerapacheredmine.html

上記では、ドキュメントルートにpublicフォルダを指定して、
"/"が、いきなりRedmineになるように設定しています。

しかし、サブディレクトリの"/redmine"がそのようになって欲しいことも多々あります。
今回は、PassengerでRedmineをサブディレクトリに公開するための方法です。

まずは、httpd.confにPassengerの設定です。
("/etc/httpd/conf.d/passenger.conf"にしています)

--------【passenger.conf】--------
LoadModule passenger_module
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2
PassengerRuby /usr/local/bin/ruby
--------

次に、ドキュメントルート下に、Redmineのpublicディレクトリを
公開したい名前でシンボリックリンクします。

# ln -s /opt/redmine/public /var/www/html/redmine

最後に、上記をサブディレクトリとして認識させるため、httpd.confに下記を記述します。
("/etc/httpd/conf.d/redmine.conf"にしています)

--------【redmine.conf】--------
RailsBaseURI /redmine
--------

以上で、Apacheを再起動することにより、下記URLにてRedmineを利用することができます。
http://xxx.xxx.xxx/redmine

詳しくは、こちらです。
http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri

次は、LDAP認証。

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

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


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

2009年5月26日火曜日

PHPを使うための"httpd.conf"の設定

スズキです。

今さらって感じですが... 以下のような記述が必要です。
とりあえず、"/etc/httpd/conf/php.conf"としています。

--------【php.conf】--------
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
--------

自分メモ...

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

phpMyAdminでMySQLの管理

スズキです。

Redmineをインストールする前に、MySQLのユーザやらデータベースやらを
作成しないといけないので、先に、phpMyAdminをインストールして、
http://www.phpmyadmin.net/home_page/index.php
上記の作業を行えるようにします。

まずは、phpMyAdminを利用できるようにするために、PHPのリビルドです。

# yum install mysql-devel
# yum install libmcrypt-devel
# yum install libtool
# yum install libtool-ltdl-devel
# cd /usr/local/src/php-5.2.9
# ./configure --with-apxs2 --with-ldap --with-gettext --with-mysql
--with-mcrypt --enable-mbstring
# make
# make install
# libtool --finish /usr/local/src/php-5.2.9/libs

次にphpMyAdminをダウンロードして、/opt/phpmyadminで見えるように、
展開&シンボリックリンクです。

# cd /opt
# curl -OL http://nchc.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-3.1.5-all-languages.tar.gz
# tar xvzf phpMyAdmin-3.1.5-all-languages.tar.gz
# ln -s phpMyAdmin-3.1.5-all-languages phpmyadmin

そして、スーパーユーザー的なアカウントを予め作成しておきます。

# mysql -u root
> GRANT ALL PRIVILEGES ON *.* TO mysql@'localhost' IDENTIFIED BY 'mysql!23'WITH GRANT OPTION;

最後に下記のような、"/etc/httpd/conf.d/phpmyadmin.conf"をおいてApacheの再起動です。

--------【phpmyadmin.conf】--------
Alias /phpmyadmin/ /opt/phpmyadmin/
<Location /phpldapadmin>
  order deny,allow
  deny from all
  allow from all
</Location>
--------

これで、下記URLに
http://xxx.xxx.xxx/phpmyadmin/index.php
上記で作成したユーザー(mysql/mysql!23)でログインすることができます。

ようやく、次こそは、Redmineだ。

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

今日のブックマーク 05/26/2009


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

2009年5月25日月曜日

OpenLDAP & phpLDAPadmin

スズキです。

以前導入したOpenLDAPを
http://suz-lab.blogspot.com/2009/04/centosldapopenldap.html
phpLDAPadminで管理してみます。
http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page

まずはopenldapの設定です。以下のように"/etc/openldap/slapd.conf"を調整します。

--------【slapd.conf】--------
suffix "dn=aws,dn=suz-lab,dn=com"
rootdn "cn=Manager,dn=aws,dn=suz-lab,dn=com"
rootpw suz!23
--------

そして、下記のように初期データ(LDIF)を投入します。

# yum install openldap-clients
# ldapadd -x -h 127.0.0.1 -D "cn=Manager,dn=aws,dn=suz-lab,dn=com" -w
suz!23 -f init.ldif

--------【init.ldif】--------
dn: o=aws,dn=suz-lab,dn=com
objectclass: organization
o: aws

dn: cn=Manager,o=aws,dn=suz-lab,dn=com
objectClass: organizationalRole
cn: Manager
--------

次に、phpLDAPadminのインストールです。
まずは下記のように、ダウンロード&展開&調整です。

# cd /opt/
# curl -OL http://nchc.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.1.0.7.tar.gz
# tar xvzf phpldapadmin-1.1.0.7.tar.gz
# ln -s phpldapadmin-1.1.0.7 phpldapadmin
# cd phpldapadmin/config/
# cp config.php.example config.php

そして以下の"/etc/httpd/conf.d/phpldapadmin.conf"作成します。

--------【phpldapadmin.conf】--------
Alias /phpldapadmin/ /opt/phpldapadmin/htdocs/
<Location /phpldapadmin>
  order deny,allow
  deny from all
  allow from all
</Location>
--------

この状態で、ApacheとOpenLDAPを再起動して、
http://xxx.xxx.xxx/phpldapadmin/index.php
にアクセスし、
Login DN: cn=Manager,o=aws,dn=suz-lab,dn=com
でログインできるはずです。

次はRedMineのLDAP認証。

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

CentOSにPHPのインストール(ソースから)

スズキです。

LDAPのWEB管理UIであるphpLDAPadminを利用するため、
http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page
まずはPHPをインストールする必要があります。

モジュール追加機能を独自で持っているもの(php、ruby、perl、...)は
ソースからインストールするようにしているので、yumは用いずに、
下記のようにインストールしました。

# yum install gcc
# yum install libxml2-devel
# yum install gettext-devel
# yum install httpd-devel

# cd /usr/local/src
# curl -OL http://jp2.php.net/get/php-5.2.9.tar.gz/from/jp.php.net/mirror
# tar xvzf php-5.2.9.tar.gz
# cd php-5.2.9
# ./configure --with-apxs2 --with-ldap --with-gettext
# make
# make install

※phpLDAPadminで"--with-ldap --with-gettext"が必要です。

そして、httpd.confに下記を追加です。

--------【httpd.conf】--------
...
LoadModule php5_module modules/libphp5.so
...
AddType application/x-httpd-php .php
...
--------

ようやく次は、phpLDAPadminのインストールだ。

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

"CentOS 5.3"&"FreeBSD 7.2"の"Virtual PC"のイメージ

スズキです。

以前、FreeBSDの"Virtual PC"のイメージ(Virtual Hard Disk)を作成&公開しましたが、
http://suz-lab.blogspot.com/2009/05/virtual-pcfreebsd72.html
あると便利なので、"CentOS 5.3"のものも作成しました。

Coreのインストールのみと、下記のようにepel、remi、rpmforgeの
yumリポジトリの追加まで行っています。

# yum install curl

# cd /usr/src

# curl -OL http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
# rpm -Uvh epel-release-5-3.noarch.rpm

# curl -OL http://rpms.famillecollet.com/el5.i386/remi-release-5-7.el5.remi.noarch.rpm
# rpm -Uvh remi-release-5-7.el5.remi.noarch.rpm

# curl -OL http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

以下は利用できるリポジトリです。

* epel: ftp.kddilabs.jp
* contrib: rsync.atworks.co.jp
* rpmforge: fr2.rpmfind.net
* remi: rpms.famillecollet.com
* updates: rsync.atworks.co.jp
* base: rsync.atworks.co.jp
* centosplus: rsync.atworks.co.jp
* addons: rsync.atworks.co.jp
* extras: rsync.atworks.co.jp

"Virtual Hard Disk"は下記よりダウンロードできます。
http://vpc-suz-lab.com.s3.amazonaws.com/centos-5.3.1-i386-core.vhd
適当に"Virtual Machine"を作成し、それにダウンロードした"Virtual Hard Disk"を指定すると
すぐに"CentOS 5.3"が利用できます。(root/root!23でログインできます)

あと、FreeBSDの"Virtual Hard Disk"のダウンロードも下記のように変更しました。
http://vpc-suz-lab.com.s3.amazonaws.com/freebsd-7.2.1-i386-minimum.vhd
同様に、"Virtual Machine"を作成し、それにダウンロードした"Virtual Hard Disk"を指定すると
すぐに"FreeBSD 7.2"が利用できます。(rootのパスワードは設定していません)

Enjoy!

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

2009年5月24日日曜日

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


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

2009年5月23日土曜日

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


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

2009年5月20日水曜日

ついに「フォトリーディング集中講座」を受講(予定)

スズキです。

ずっと、受講したいと思いつつ、日程、予算、気持ちの関係上、見送り続けてきた
「フォトリーディング集中講座」ですが、思いきって、下記を受講することにしました。
https://www.lskk.jp/order/form/2158/

とりあえず、購入したフォトリーディング本は復習しておこう。
▼あなたもいままでの10倍速く本が読める
http://www.amazon.co.jp/gp/product/4894511193?tag=iretsuzusblog-22
▼図解! あなたもいままでの10倍速く本が読める
http://www.amazon.co.jp/gp/product/4894511959?tag=iretsuzusblog-22
▼考える力がつくフォトリーディング
http://www.amazon.co.jp/gp/product/4569701450?tag=iretsuzusblog-22

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

"Seasar Conference 2009 Spring"に参加予定

スズキです。

今回は、参加できそうです。なので、先に、自分の予定をブロックです。
http://event.seasarfoundation.org/sc2009spring/

まだ、セッションは決まってないようです
http://event.seasarfoundation.org/sc2009spring/Session

そろそろ、イベントへの参加も積極的にしていこう。

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

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


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

XML宣言のPHPファイルへの記述は要注意

スズキです。

ちょっと、はまりました。

当然、下記はApacheで正しく表示します。

--------【test.xml】--------
<?xml version="1.0" encoding="UTF-8" ?>
<test />
--------

でも、PHPファイル(拡張子をphp)にすると、正しく表示されません。

--------【test.php】--------
<?xml version="1.0" encoding="UTF-8" ?>
<test />
--------

たぶん「<?」がPHPのロジック記述ブロックと認識されて、おかしくなっているのでしょう。

とりあえず、XML宣言とって対応してしまった…

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

SIOSの"Google Apps 導入を検討されている企業向けセミナー"に参加予定

スズキです。

ちょうど、社内に"Google Apps"の導入を検討していたところ、
ちょうどいいセミナーを見つけました。当然、参加です。
http://www.sios.com/product/si/integration-g/seminar.html

内容は下記のとおりです。

【セッション1】
ビジネスの効率を上げる!Google Apps の利用方法をご紹介

【セッション2】
Google Apps 導入のためのイロハ

【セッション3】
サイオスのGoogle App Engine への取り組み

セッション3の"Google App Engine"も、今、いろいろと試しているところなので、
非常に楽しみです。

久しぶりのセミナーだなー。

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

FlashDevelop 3.0.0 RC4 リリース

スズキです。

"FlashDevelop 3.0.0 RC4"がリリースされています。
http://www.flashdevelop.org/community/viewtopic.php?f=11&t=4775&start=0

いつもと同様、ポータブル環境用に"standalone mode"でインストールして、アップデートです。

そろそろ、プラグインとか作ってみたくなってきたなー。(下記に沿って作ればいいのか?)
http://blog.seyself.com/2009/01/post_2009012615.html

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

2009年5月19日火曜日

PHPで特殊文字をHTML エンティティに変換(htmlspecialchars)

スズキです。

データベースのデータなどを、XMLとして出力するときに、
データベース内の「<」や「>」などの文字をそのまま利用すると、
XMLが壊れてしまいます。

こういうときは、PHPの場合、htmlspecialchars関数を利用することで、
上記の文字をHTML エンティティ(「&lt;」や「&gt;」)に変換することができ
XMLも正しい状態で出力できます。

こういう、よくある、バグになりそうなことは、チェック項目として、まとめておきたいなー。

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

2009年5月16日土曜日

FreeBSDでZFS(ちょっとだけ)

スズキです。

FreeBSDも用意できたので、簡単にZFSを試してみます。
http://suz-lab.blogspot.com/2009/05/virtual-pcfreebsd72.html

まずは現状の確認です。

# zpool status
no pools available

当然、プールはありません。

次にプールを作ってみます。

# zpool create pool /dev/ad1

"Virtual PC"はハードディスクを三つつけることができ、"/dev/ad0"はFreeBSDの
インストールに利用しているので、"/dev/ad1"をZFSのプールに利用してみました。

そして再度、状態の確認です。

# zpool status
...
ad1 ONLINE 0 0 0

プールができ、ディスクが追加されていることが確認できます。

dfコマンドを使うと、/poolの存在も確認できます。

# df -k
...
pool 16385920 0 16385920 0% /pool

次に、プールにディスクを追加します。

# zpool add pool /dev/ad3

そして、また、状態を確認すると。ad3のディスクが追加されていることが確認できます。

# zpool status
...
ad1 ONLINE 0 0 0
ad3 ONLINE 0 0 0

もう一度dfコマンドの出力を確認します。

# df -k
...
pool 32771968 0 32771968 0% /pool

すると、/poolが追加したディスクの容量だけ増えています。

ということで、ZFSの動的に容量を追加できる機能が確認できました。

EC2のEBS増設とかでうまく使えないかなー?

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

今日のブックマーク 05/16/2009


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

2009年5月15日金曜日

"Virtual PC"に"FreeBSD(7.2)"をインストール

スズキです。

ZFSを試してみたくなって、OpenSolarisをインストールしようとしたのですが、
うまくいかず、FreeBSDで試すことにして、そのインストールです。

といっても、FreeBSDのサイトからDVDのイメージを落としてきて、
それ使って、"Virtual PC"にインストールするだけです。
(今回は、minimumでインストールしたので、ファイルは500M程度です)

下記が作成したバーチャルマシンとバーチャルハードディスクです。
http://vpc-suz-lab.com.s3.amazonaws.com/freebsd-7.2-i386-minimum.vmc
http://vpc-suz-lab.com.s3.amazonaws.com/freebsd-7.2-i386-minimum-0.vhd

"Virtual PC"がインストールされている状態なら、
バーチャルマシンのバーチャルハードディスクを自分のパスにすれば、
すぐに利用できると思います。

そして、ZFSが利用できるように、"/etc/rc.conf"に
zfs_enable="YES"
と記述しています。

次は、実際にzpoolコマンドを使ってzfsを作っていこう。

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

EC2とS3のデータ転送量(OUT)に関する価格は同じ

スズキです。

タイトルの通りです。どちらも下記のようになっています。

First 10 TB per Month $0.17 per GB
Next 40 TB per Month $0.13 per GB
Next 100TB per Month $0.11 per GB
Over 150 TB per Month $0.10 per GB

▼S3の料金表
http://aws.amazon.com/s3/#pricing

▼EC2の料金表
http://aws.amazon.com/ec2/#pricing

とりあえず、S3で公開するのが、お手軽かな?

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

"PHP Excel Creator library"を使ってみた

スズキです。

本当はPHPExcelを使ってみたかったんだけど、PHPが5.1系なので、
"PHP Excel Creator library"の方を使うことにしました。
http://pizzaseo.com/php-excel-creator-class

とりあえずこんな感じに使えます。(日本語も大丈夫そうです)

--------【PHP】--------
require_once("Writer.php");
$workbook = new Spreadsheet_Excel_Writer();
$worksheet = $workbook->addWorksheet('My first worksheet');
$workbook->send('report.xls');
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(1, 0, 'John Smith');
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);
$workbook->close();
--------

まあ、PearのSpreadsheet_Excel_Writerがもとになっているので、詳しい使い方はこちらから。
("PHP Excel Creator library"はPearには依存していませが)
http://pear.php.net/package/Spreadsheet_Excel_Writer/docs

近頃、効率悪いなー...

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

2009年5月14日木曜日

Google App Engine SDK for Java 1.2.1 リリース

スズキです。

近頃、まったく試さなくなってしまった、"GAE for Java"ですが...
SDKが1.2.1にアップデートされました。
http://googleappengine.blogspot.com/2009/05/java-sdk-version-121-now-available.html

早速、下記よりダウンロードして、こちらの環境もアップデートです。
http://code.google.com/appengine/downloads.html

"Amazon EC2"が落ち着いたら、"GEA for Java"にもどろう。

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

今日のブックマーク 05/14/2009


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

2009年5月13日水曜日

Linuxのdateコマンドで"yyyymmddHHMMSS"形式の日付を取得

スズキです。

下記で可能です。(自分メモ)

date '+%Y%m%d%H%M%S'

詳しくは、こちらです。
http://www.geocities.jp/geo_sunisland/date.html

この辺、Google先生に聞かなくてもいいレベルにしたいなー。

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

"FlashDevelop 3.0.0 RC3"の日本語化

スズキです。

今朝、FlashDevelopをRC3にして、日本語化ファイルまだかなー...と思っていたら、
タイムリーに、こちらからRC3用の日本語化ファイルがダウンロードできるようになりました。
http://www.logicalyze.net/blog/?p=2273
(毎度毎度ありがとうございます)

ダウンロードして、展開フォルダ内のファイル群を、Settingsフォルダの下におけば、
問題なく日本語化できました。

夜は、AS3、がんばろう。

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

シェルスクリプトで設定ファイルの読み込み

スズキです。

下記のような、シェル変数の設定を羅列した設定ファイルの読み込みを、

--------【aws.conf】--------
ACCOUNT_NUMBER=000000000000
ACCESS_KEY=XXXXXXXXXXXXXXXXXXXX
SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PRIVATE_KEY=/mnt/tmp/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
CERTIFICATE=/mnt/tmp/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
AMI_VERSION=5.3.7.1
AMI_IMAGE=ami-centos-core-$VERSION.img
AMI_BUCKET=ami-suz-lab.com
--------

下記のようなシェルスクリプトで行い、

--------【load_conf.sh】--------
#bin/sh
if [ -f $1 ]; then
  . $1
else
  echo "can't find $1"
  exit 1
fi
--------

下記のように、実際に利用する、

--------【backup_ami.sh】--------
#bin/sh
CONF=/opt/suz-lab/etc/aws/aws.conf
. /opt/suz-lab/bin/common/load_conf.sh $CONF
--------

って感じです。

バックアップさえできれば... もうあんなことには...

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

(FL)ARToolKitのまとめ

スズキです。

まず、ARとはですが、「Augmented Reality (拡張現実感)」と呼ばれるもので、
具体的には、Webカメラでキャプチャした画像(動画も含む)の中に
3次元オブジェクトを上書きしたもののようなものとなります。

実際には、画像にマーカーを含ませ、そのマーカーを認識し、
その上に、3次元オブジェクトを配置する感じになります。

で、それを実現するライブラリに、C言語で実装された"ARToolKit"というものがあり、
http://www.hitl.washington.edu/artoolkit/
それをJavaに移植した、"NyARToolkit"というものもあり、
http://nyatla.jp/nyartoolkit/wiki/index.php
さらに、AS3にも移植された、"FLARToolKit"というものもあります。
http://www.libspark.org/wiki/saqoosha/FLARToolKit

とりあえず、下記のサンプル(FLARToolKit)を見ると、どんなものなのかイメージできると思います。

▼FLARToolKit demo at Adobe MAX 2009 Japan
http://saqoosha.net/2009/02/02/1694/

▼(FL)ARToolKitを使ったゲームの例
http://suz-lab.blogspot.com/2009/05/flartoolkit.html

AS3の場合、3次元オブジェクトが配置されてしまえば、
あとは、AS3(Flash)の話に持っていくことができるので、
僕的には敷居が低くなっていいなー、と感じています。

気になる点としては、マルチマーカーはどうなのかなー、といったところですが、
いろいろ調べてみると、(FLARToolKitも)問題なさそうです。
http://development.blog.shinobi.jp/Entry/1446/

とりあえず、こんな感じかな!?

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

(FL)ARToolKitを使ったゲームの例

スズキです。

探したのですが、あまり見つけられませんでした...

▼マルチマーカーをつかったドラム
http://vimeo.com/3455289

▼マーカーをゲームのコントローラーに使う
http://www.youtube.com/watch?v=cYR4RrUiqRY

▼キューブを傾けて人影をバーチャルから脱出させるゲーム
http://www.gizmodo.jp/2007/10/levelhead.html

OpenCVも調べとくか。

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

FlashDevelop 3.0.0 RC3 リリース

スズキです。

待望のFlashDevelopがRC3になりました。
http://www.flashdevelop.org/community/viewtopic.php?f=11&t=4720

早速、下記にそってインストールしなおしです。
http://suz-lab.blogspot.com/2009/01/flashdevelop.html

Flexのパスを再設定するのが面倒ですが、まあ、今までのプロジェクトは動きました。

日本語はどうしようかなー?

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

2009年5月11日月曜日

Linuxの時刻設定

スズキです。

テスト用のLinuxマシンで、ntpの時刻同期をするようにしていたのですが、
http://suz-lab.blogspot.com/2009/04/centos53ntp.html
なぜか、気がつくと、またづれているので…

と言うことで、手動の設定は、下記コマンドにて行うことができます。

# date -s "2009/05/11 10:10:00"

根本的な解決をしないとなー…
あと、ProFTPDのタイムゾーン関係もなんとかしないとなー…

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

2009年5月10日日曜日

Javaの"instanceof"はAS3では"is"だった

スズキです。

Javaで変数の型を確認したいときは"instanceof"を使いますが、
AS3は下記のように"is"で同じことが実現できます。

--------【AS3】--------
if(component is SuzFile) {
  // componentの型がSuzFileだったときの処理
} else if(component is SuzDirectory) {
  // componentの型がSuzDirectoryだったときの処理
}
--------

当面は、アルゴリズムとデータ構造とデザインパターンにこだわっていこう。

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

2009年5月6日水曜日

AS3でQueueとStackを実装してみた

スズキです。

Arrayでこと足りるのですが、まあ、お勉強もかねて、ということで…

まずはQueue/Stack共通のインターフェースです。おなじみのメソッドを定義しています。

--------【suz/lib/as3/common/Sequence.as】--------
package suz.lib.as3.common {
  public interface Sequence {
    function get size():uint;
    function push(item:*):void;
    function pop():*;
  }
}
--------

次に上記のインターフェースを実装する抽象クラス(っぽいもの)です。
ここでとりあえず、インターフェースで定義したメソッドを定義します。
子クラスの実装に任せる部分はpushImpl/popImplをオーバーライドする形にしています。

--------【suz/lib/as3/common/sequence/AbstractSequence.as】--------
package suz.lib.as3.common.sequence {
  import suz.lib.as3.common.Sequence;
  public class AbstractSequence implements Sequence {
    protected var list:Array = new Array();
    protected var length:uint = 0;
    public function AbstractSequence(length:uint = 0) { this.length = length; }
    public function get size():uint { return this.list.length; }

    public function push(item:*):void {
      if(this.length != 0 && this.list.length == this.length) { throw
new Error(); }
      else { this.pushImpl(item); }
    }

    public function pop():* {
      if(this.list.length == 0) { throw new Error(); }
      else { return this.popImpl(); }
    }

    protected function pushImpl(item:*):void { throw new Error(); }
    protected function popImpl():* { throw new Error(); }
  }
}
--------

そしてQueueです。まあ、実体はArrayのpushとshiftですが…

--------【suz/lib/as3/common/sequence/QueueSequenceImpl.as】--------
package suz.lib.as3.common.sequence {
  import suz.lib.as3.common.sequence.AbstractSequence;
  public class QueueSequenceImpl extends AbstractSequence {
    public function QueueSequenceImpl(length:uint = 0) { super(length); }
    protected override function pushImpl(item:*):void { this.list.push(item); }
    protected override function popImpl():* { return this.list.shift(); }
  }
}
--------

こちらはStackです。まあ、実体はArrayのpushとpopですが…

--------【suz/lib/as3/common/sequence/StackSequenceImpl.as】--------
package suz.lib.as3.common.sequence {
  import suz.lib.as3.common.sequence.AbstractSequence;
  public class StackSequenceImpl extends AbstractSequence {
    public function StackSequenceImpl(length:uint = 0) { super(length); }
    protected override function pushImpl(item:*):void { this.list.push(item); }
    protected override function popImpl():* { return this.list.pop(); }
  }
}
--------

最後に、使い方サンプルです。

--------【AS3】--------
//var sequence:Sequence = new StackSequenceImpl(3);
var sequence:Sequence = new QueueSequenceImpl(3);
sequence.push("test");
trace(sequence.size);
sequence.pop();
--------

エラーを発生させてるところは、ちゃんとしたエラークラスをつくらないと…手抜きだ…

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

2009年5月5日火曜日

今日のブックマーク 05/05/2009


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

AMI作成&アップロード&登録スクリプト(とりあえず版)

スズキです。

そろそろ、"SUZ-LAB謹製 CentOS AMI"を手作業でメンテナンスしていくのが
つらくなって(飽きて)きたので、可能な限り自動化していこうと思っています。

その第一歩として、自分自身のAMIを作成してアップロードして、
そして登録まで一気に行うシェルスクリプトです。
(タイトルにもあるように、まだまだ、「とりあえずノリで作ってみました」版ですが...)

--------【Shell】--------
#!/bin/sh

# とりあえず必要な値はシェル変数に
ACCOUNT_NUMBER=000000000000
ACCESS_KEY=XXXXXXXXXXXXXXXXXXXX
SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PRIVATE_KEY=/mnt/tmp/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
CERTIFICATE=/mnt/tmp/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
IMAGE=ami-centos-core-5.3.7.img
BUCKET=ami-suz-lab.com

# 環境変数の設定
export EC2_HOME=/opt/ec2-api-tools
export JAVA_HOME=/usr/java/default

# シンボリックリンクの削除
rm /home
rm /srv
rm /var

# "/mnt"から"/"に移動
mv /mnt/home /home
mv /mnt/srv /srv
mv /mnt/var /var

# イメージの作成
ec2-bundle-vol -r i386 -d /mnt/tmp \
-c $CERTIFICATE \
-k $PRIVATE_KEY \
-u $ACCOUNT_NUMBER \
-p $IMAGE

# イメージのアップロード
ec2-upload-bundle \
-b $BUCKET \
-m /mnt/tmp/$IMAGE.manifest.xml \
-a $ACCESS_KEY \
-s $SECRET_KEY

# イメージの登録
/opt/ec2-api-tools/bin/ec2-register \
-K $PRIVATE_KEY \
-C $CERTIFICATE \
$BUCKET/$IMAGE.manifest.xml

# "/"から"/mnt"に移動
mv /home /mnt/home
mv /srv /mnt/srv
mv /var /mnt/var

# "/"からに"/mnt"シンボリックリンク
ln -s /mnt/home /home
ln -s /mnt/srv /srv
ln -s /mnt/var /var
--------

オプション(引数)、環境変数、エラー処理まわりがちゃんとできたら、AMIに組み込もう。

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

"Amazon AC2 API Tools"をインストールしたCentOSのAMI(5.3.6)を作成

スズキです。

今回はイメージからのインスタンスでAMIの登録&公開までできるように、
"Amazon AC2 API Tools"をインストールしたイメージにしてみました。

Manifestはこちらです。
ami-suz-lab.com/ami-centos-core-5.3.6.img.manifest.xml

まずはyumにて必要なパッケージの準備です。
# yum install unzip

次に"Amazon AC2 API Tools"をダウンロードして"/opt"以下に置きます。
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351

# cd /usr/local/src
# curl -L -O http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
# unzip ec2-api-tools.zip
# mv ec2-api-tools-1.3-34128 /opt/ec2-api-tools

ここで"Amazon AC2 API Tools"はJavaアプリなので、SunのJDKもインストールしておきます。
http://java.sun.com/javase/ja/6/download.html

※ 本当は、yumでインストールできるOpenJDKにしかたっかのですが、下記エラーのため、
Sunのものにしています。

Unexpected error:
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected
error: java.security.InvalidAlgorithmParameterException: the
trustAnchors parameter must be non-empty

この状態でイメージを作成し、アップロードです。

# ec2-bundle-vol -r i386 -d /mnt/tmp/ -c /mnt/tmp/cert-XXXX.pem \
-k /mnt/tmp/pk-XXXX.pem -u 000000000000 -p ami-centos-core-5.3.6.img
# ec2-upload-bundle -b ami-suz-lab.com \
-m /mnt/tmp/ami-centos-core-5.3.6.img.manifest.xml -a XXXXXXXXXXXXXXXXXXXX \
-s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ここから、いつもWindows(Elasticfox & Amazon EC2 API Tools)でやっていた
AMIの登録と公開をそのままのLinuxで行っていきます。

とりあえず、"Amazon EC2 API Tools"を動かすために環境変数の設定です。

# export EC2_HOME=/opt/ec2-api-tools
# export JAVA_HOME=/usr/java/default

次に下記コマンドで登録です。

# /opt/ec2-api-tools/bin/ec2-register -K /mnt/tmp/pk-XXXX.pem -C
/mnt/tmp/cert-XXXX.pem \
ami-suz-lab.com/ami-centos-core-5.3.6.img.manifest.xml

すると下記のように登録イメージのIDが表示されるので、

IMAGE ami-85aa4cec

それを用いて、登録したイメージを下記コマンドで公開します。

# /opt/ec2-api-tools/bin/ec2-modify-image-attribute -K /mnt/tmp /pk-XXXX.pem \
-C /mnt/tmp/cert-XXXX.pem ami-85aa4cec --launch-permission -a all

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

2009年5月4日月曜日

2009年5月2日土曜日

"Phusion Passenger"を使ってApacheでRedmine

スズキです。

やはり、RedmineはApacheで動かしたいなー、と思い、
"Phusion Passenger"を使って、ApacheでRedmine(Rails)を動かせるようにしてみました。
http://www.modrails.com/

まずは、準備です。

# yum install apr-devel
# yum install apr-util-devel
# yum install httpd-devel
# yum install gcc-c++

そしてgemにて、"Phusion Passenger"をインストールし、
Apacheへの組み込みまで行います。

# gem install passenger
# passenger-install-apache2-module

そして、httpd.confに下記を記述し。

LoadModule passenger_module
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2
PassengerRuby /usr/local/bin/ruby

ドキュメントルートを、"/opt/redmine/public"のように設定すればO.K.です…
と言いたいところですが、下記エラーが発生です。

Error during failsafe response: closed stream
(originally Permission denied -
/opt/redmine/tmp/sessions//ruby_sess.16bee0d70f80e42c)

と言うことで、下記のようにパーミッションを変更して、Apacheを再起動すれば、
今度は、問題なく、Apache上でのRedmineが確認できます。

# chmod -R 777 /opt/redmine/tmp

しかし、現状では、ドキュメントルートをRedmineにしているので、
"http://localhost/"がRedmineです。
これを、"http://localhost/redmine/"がRedmineになるようにしたいのですが、
それは後日ということで…

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

SUZ-LAB謹製 CentOS AMI アップデート (5.3.5)

スズキです。

Manifestは下記となります。
ami-suz-lab.com/ami-centos-core-5.3.5.img.manifest.xml

以下のBBSに挙げたTODO項目に対応しています。

>>2
"/svr"ディレクトリを"/mnt"(sda2)以下に移す。
http://jbbs.livedoor.jp/bbs/read.cgi/computer/41921/1240456398/2

>>3
yumリポジトリのepel-testingとremi-testを"enable=0"にする。
http://jbbs.livedoor.jp/bbs/read.cgi/computer/41921/1240456398/3

ちなみに、AMIの登録はElasticfoxで行っていたのですが、
今日はなぜかうまくいかなかったので以下のec2-api-toolsのコマンドで行っています。

> ec2-register ami-suz-lab.com/ami-centos-core-5.3.5.img.manifest.xml
> ec2-modify-image-attribute ami-7ead4b17 --launch-permission -a all

Enjoy!

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