Delphi2007がやってきた

2007年3月27日(火)

Delphi2007
ついに手元にDelphi2007がやってきました(ほんとはDelphiForPHPの方が楽しみだったんだけど)。
我々の会社は基本的にWindowsアプリはほとんどDelphiで開発を行っています。でもずっとDelphi6でした。時は流れVistaがリリースされたのを機に、さすがに徐々に移行していくことにしました。

まだインストールもしていないので書くことがない....

Xen3.0による仮想サーバーの構築シリーズ その2

2007年3月23日(金)

ということで(?)、その2、起動編

ドメイン0用の設定をします(ドメイン0ってなに?って人は入門書をあたってみてね、でもまだあんまりいい本ないんだよね、苦労しました)

initrd の作成
# depmod 2.6.16.33-xen
# mkinitrd /boot/initrd-2.6.16.33-xen.img 2.6.16.33-xen
※作る位置は環境によって違うかも

起動時にXenカーネルで立ち上がるようにgrub.conf を書き換えます

# vi /etc/grub.conf
以下を追加
title CentOS-4.4 with Xen (2.6.16.33-xen_3.0.3.0)
root (hd0,1)
kernel /xen-3.0.4-1.gz
module /vmlinuz-2.6.16.33-xen_3.0.3.0 ro root=/dev/vm/Domain0
module /initrd-2.6.16.33-xen_3.0.3.0.img

追加した位置によって、default= の値を変えます(0オリジン)

書き換えたら自動起動の設定をして再起動

# chkconfig xend on
# chkconfig xendomains on
# reboot

再起動されたOSは見事Xenカーネルになって、xendもたちあがっています(多分)
で、ファイアーウォールが動いたままだとドメインUの動きにいろいろ不具合があったし、どうせドメイン0の表のNICは殺してしまうのでファイアーウォールも切りました。

# service iptables stop
# chkconfig iptables off

で、あとはばりばりドメインUを動かすサーバー起動編に続く...(いつ書くかわからないけど...)

Xen3.0による仮想サーバーの構築シリーズ その1

2007年3月21日(水)

データセンターにサーバーをごろごろ並べるのも、見栄え的にはかっこよくて良いのですが、コストがかかってしょうがないし、大体そんなアクセスのあるサーバーはないので最近話題のXenでトレンドに乗ってみよう、というのでXenを始めました。今では2台のサーバーに8つの仮想サーバーが仲良くかつ元気に同居しています。

ということで「その1」はインストール編
ちなみに、このシリーズはVT対応のXenについてのお話になります
例によってCentOS4.xです(Xeon3GHz・デュアルでHT込みで見た目8CPUという構成です)

まずは最新版のダウンロード(2007/3/21現在)・解凍
# wget http://bits.xensource.com/oss-xen/release/3.0.4-1/bin.tgz/xen-3.0.4_1-install-x86_64.tgz

# tar xzf xen-3.0.4_1-install-x86_64.tgz

インストーラは解凍した中のdistディレクトリに有ります

# cd dist

# ./install.sh

とやると、うちの標準セットのインストール状態ではブリッジ関係のライブラリがないと怒られます
Checking check_brctl:
*** Check for the bridge control utils (brctl) FAILED

ということで、あらかじめインストール
# yum install -y bridge-utils

で、気を取り直して再度インストーラ起動
# ./install.sh

Installing Xen from ‘./install’ to ‘/’…
- installing for hotplug-based system
- modifying permissions
All done.
Checking to see whether prerequisite tools are installed…
Xen CHECK-INSTALL 2006年 12月 1日 金曜日 15:06:34 JST
Checking check_brctl: OK
Checking check_hotplug: OK
Checking check_iproute: OK
Checking check_python: OK
Checking check_zlib_lib: OK
All done.

で、無事インストールは終了
「その2」はドメイン0起動編の予定

postfixでサブミッションポートを使えるように設定

2007年3月20日(火)

最近、うちのお客様の使用しているプロバイダーが徐々に自社メールサーバー以外のポート25を通さなくなってきて、突然「メールが出せなくなったんだけど」とかの電話がやってくるようになりました。
最初は原因がわからず焦ったのですが、メールサーバでサブミッションポートをサポートするようにして、クライアントのSMTPサーバーの指定を変えるだけで問題なくなるようになり一安心。
(仕方ないんだろうけど、プロバイダーももう少しアナウンスをわかりやすくして欲しいねぇ、契約しちゃった後はプロバイダーのホームページなんて見ないしね、まぁプロバイダのメールサーバー使えよ、ってことかな)

ということで、postfixの設定です。
例のごとく、master.cf を修正

# vi /etc/postfix/master.cf

※以下の設定を有効にする
submission inet n - n - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

postfixを再起動
# postfix reload

postfix/postfix-script: refreshing the Postfix mail system

ファイアーウォールの設定で submissionポート(tcp:587) を通すようにする

で、メールクライアントのSMTPサーバーのポートを587に変更して万事解決。

Firebird1.5.xをCentOS4.xにインストール(ビルド)

2007年3月19日(月)

うちの会社では小・中規模システムやWebアプリのデータベースにFirebirdを使うことが多いのですが、なぜかFedoraCore3ベース以降(CentOS4.xはこれですね)はインストーラではうまくインストールできないのでソースからビルドしています。
ちなみに、Firebird これ良いですよ、なぜもっとメジャーにならないのか不思議です。

最新版はここでチェック
http://www.firebirdsql.org/index.php?op=files

最新ソースコードを取得して解凍(2007/3/19現在これが最新)
# wget http://prdownloads.sourceforge.net/firebird/firebird-1.5.4.4910.tar.bz2
# bunzip2 firebird-1.5.4.4910.tar.bz2
# tar xf ~/download/firebird-1.5.4.4910.tar

ビルド(SuperServerにしています)
# ./autogen.sh –enable-superserver
# make
# make install

※最後に下記のような入力指示が表示されるので[Eter]キーを押す
Press Enter to start installation or ^C to abort
Extracting install data
Starting Firebird server: [ OK ]

#管理者パスワードを入力
Please enter new password for SYSDBA user: hoge

これで、下記のプロセスが起動しています。
4876 pts/0 S 0:00 /opt/firebird/bin/fbguard -f
4877 ? S 0:00 /opt/firebird/bin/fbserver

インストーラが使えると1分かからないでインストールできるのですが、ビルドするとそれなりにかかりますね。
デフォルトの設定では /usr/local/firebird にインストールされます。

nkfによる文字コードの一括変換

2007年3月17日(土)

最近、文字コードに煩わされる頻度が増えてますねぇ、ホントはあんまりこのあたりに煩わされたくないのですが、Web系開発の仕事が増えてくると避けて通れないところですね。

で、nkfです。ファイルの内容を指定した文字コードに変換してくれるというものですね。
webalizer(和)の出力を変換する必要が出たためのご登場です。
まずはダウンロード、私は下記のURLから持ってきました。

http://osdn.dl.sourceforge.jp/nkf/19481/nkf206a.tar.gz というファイルを持ってきました。

でもって解凍
# wget http://osdn.dl.sourceforge.jp/nkf/19481/nkf206a.tar.gz
# tar xvf nkf206.tar

コンパイルします。

# cd nkf206/
# make

cc -O -Wall -c utf8tbl.c
cc -O -Wall -o nkf nkf.c utf8tbl.o

この手順で、nkf という実行ファイルが生成されます。
これをパスの通ったディレクトリへコピー(そのまま使っても良いですが)
これで準備終了です。

nkf 実行例
# nkf -s usage_200701.html.euc > usage_200701.html.sjis

で、usage_200701.html.sjis というShiftJISファイルがGet!できました。
これで適当なスクリプトを作ってディレクトリの内容を一括変換とかできますね。

mb_encode_mimeheaderの罠

2007年3月16日(金)

調べてみると意外とポピュラーな話らしいのですが、mail()関数で subject に値を設定する時にmb_encode_mimeheader()関数をずっと使っていたのですが、internal_encodingの設定内容によっては不可解な現象が発生するようです、簡単に言えば文字化けですね。

こいつに出くわし、解決に結構時間をとられてしまった。
結局のところは下記の修正で解決
〔変更前〕
mb_encode_mimeheader(mb_convert_encoding($subject, ‘SJIS-WIN’, ‘UTF-8′, ‘ISO-2022-JP’)

〔変更後〕
“=?ISO-2022-JP?B?”.base64_encode(mb_convert_encoding($subject, ’SJIS-WIN’, ‘UTF-8′)).”?=”

うーん、 mb_encode_mimeheaderは使わない方がよいかな...

CentOS4にDell SeverAdministrator をインストール:後編

2007年3月15日(木)

【インストール作業1】
□Dellサイトより最新バージョンをダウンロード
http://support2.jp.dell.com/jp/jp/filelib/search.asp から使用機種を選択して検索(共通っぽくて最近の機種なら全部同じもの)
ファイル
「Dell OpenManage Server Administrator Managed Node (Application)」の
“OMI-50-MN-LX_A01.tar.gz”

【 インストール作業2】
□インストール

ここまでの結論を導き出すために結構試行錯誤しました(^^;)
(マニュアル読んでもよくわからん何とかしてくれ->Dell)

# cd {解凍したディレクトリ}/linux/supportscripts/

# ./srvadmin-install.sh -x

オプション-xをつけないと、対話式にインストールするプログラムを選択する

経験上インストールするOS/32,64bitの違いによって、インストールされるプログラムが17~19の間で異なる

【Server Administrator の起動】

# ./srvadmin-services.sh start

ファイアーウォールの設定で、TCPのポート1311を開ける

【動作確認】

ブラウザで http://{サーバーURL}:1311/ をブラウズするとユーザID/パスワードを聞いてくるので、rootの ユーザID/パスワード入力する

これで、めでたくブラウザ上に SeverAdministratorが表示されました

CentOS4にDell SeverAdministrator をインストール:前編

2007年3月14日(水)

Dell のPowerEdge1950にCentOS4.Xをインストールすると当然ですがサポート対象外なので付属のOSインストーラは使えないので、ServerAdministratorを一緒にインストールできませんねぇ、ということでインストールします(これがないとRAIDの状態とかチェックできないのでRAIDにしている意味が半分なくなってしまう)。
(同様の手順でインストールした機種2850,2950,750,850,840)

※もしかしたら重要な注意事項
RAID5構成のPowerEdgeでServerAdministratorを常駐させておくと58日間隔でOSがフリーズする事態が複数のサーバで発生!
使用するときだけ起動した方が良いみたい、Dellのサポートに問い合わせても原因は不明。

※もしかしたらどってことなかったのか...(2007/4/5追記)
Dellのサイトに知らないうちに(って気づかなかっただけか)Storage Management version 5.1.0 パッチなるものがあるのでこれをあてれば良いのかも。でもお客さんのサーバで試す気はないので真相がわかるのはかなり先のことかな

【準備1】
□CentOS4に自分はRHEL4だと思いこませる呪文

こうしないとOracleなんかと同様にインストーラが正しく動作しない

# cd /etc;cp redhat-release redhat-release.org

# echo ‘Red Hat Enterprise Linux AS release 4 (Nahant)’ > redhat-release

※必要ならインストール後に元に戻す

【準備2】
□必要ライブラリのインストール
以下のライブラリでインストールされていないものをインストール

# yum -y install compat-libstdc++-296
# yum -y install compat-libstdc++-33
(CentOS4 x86_64では以下がインストールされていなかった)
# yum -y install ncurses
# yum -y install pam
# yum -y install libxml2

後編に続く...

JpGraph(Pro版)に付属のライブラリでQRコードを表示:プログラム編

2007年3月13日(火)

プログラム編というほど大げさではないですが。

〔QRコード生成プログラム:qrgoogle.php〕

<?php
require(’{jpgraphをインストールしたディレクトリ}/src/jpgraph.php’);
require(’{jpgraphをインストールしたディレクトリ}/src/jpgraph_canvas.php’);
require(’{jpgraph_qrcodeをインストールしたディレクトリ}/src/jpgraph_qrcode.php’);

$qrcode = QRcodeFactory::Create (’http://www.google.co.jp’);
$qrcode ->Enc ();
$img = new Output_QRcodeIMAGE ($qrcode);

$img ->SetMargin ( 2 );
$img ->SetScale ( 2 );  //QRコードの大きさ:Scaleを1にするとかなり小さくなるが認識が遅くなる、2ぐらいが見た目ちょうど良いかな

$img ->Stroke ();
//$img ->Stroke(’qr.png’);  //ファイルに出力する場合は引数に出力ファイル名を指定
?>

単純にQRコードを表示させるだけなら
http://www.neo-site.jp/labo/contents/pgm/qrgoogle.php
といった感じで直接呼び出せば、下記のように表示される ので

http://www.google.co.jp

これを携帯で読み込ませれば、googleへGo !