PHPで文字列の桁埋め

2008-09-30
このエントリーをはてなブックマークに追加

「sprintf」を使うか「str_pad」を使うかが悩みどころです。今までは大して気にしてなかったのですが、どうやら「str_pad」の方が早いらしい。

ということで検証したのですが、あんまり変わんない。。。

まぁ所詮20万回程度のループだと大して差は出ないかな。とはいえ、実開発でそこまで大きな処理させるとも思えないし、ここはどっち使っても差はないということにしておきましょう。

使いやすい方でいいや。

str_pad使って「$_counter」という文字列を10桁に「0」で桁埋め。左側を埋める。

str_pad($_counter,10,’0′,STR_PAD_LEFT)

sprintfを使って「$_counter」という文字列を10桁に「0」で桁埋め。

sprintf(“%010d”,$_counter)

Tags:

MySQLの最適化

2008-09-17
このエントリーをはてなブックマークに追加

mysqlcheck -o DB名

これだけです。ドキュメントを読む限り、内部的にcheck table、repair table、analyze table、optimize tableを呼んでいるようです。

「対象はmyisamだけ」みたいなこともどこかで読んだのですが、公式ドキュメントにはそういう記述はなし。4.xの話なのでしょうか。あ、ハセテツは5.0を利用してます。

必要なのはanalyze table、optimize tableだけで、これらはinnodbにも対応しているから特に問題はないでしょう。

Tags:

C#で四捨五入

2008-09-08
このエントリーをはてなブックマークに追加

2.0以降専用です。

Math.Round(対象数字,0,MidpointRounding.AwayFromZero);

二つ目の引数は、「第何位まで求めるか」です。上記例だと0なので整数値にしてくれます。1.1では四捨五入はなかったので、自作した覚えがあります。

便利になったもんですね。

三つ目の引数を「MidpointRounding.ToEven」にすると丸めてくれます。これは普通に「Math.Round」でもいいと思うので、四捨五入用と思ってもいいのかもしれません。

Tags:

PostfixとDovecotを利用してVirtualMailBoxが利用できるメールサーバを構築する

2008-09-03
このエントリーをはてなブックマークに追加

メールサーバは構築したけど、メールアカウントごとにUNIXアカウントを作りたくない、一台のサーバで複数のドメインを管理したい、そういうニーズは多いはず。

というわけでがんばってみました。

PostfixとDovecotはyumでインストール。

yum -y install postfix
yum -y install dovecot

こんなのは簡単。それぞれの設定や起動等はきちんと丁寧に説明してくれている方々が多くいらっしゃるので割愛。あ、この段階ではドメインはひとつだけ(例としてhoge.comとしておきましょう)、という設定でいいです。アカウントを作る必要もなし。iptables等でFWを構築している場合はSMTPやPOPのポートを開いておくことを忘れずに。

 VirtualMailBoxを利用するには、Postfixのmain.cfに

virtual_mailbox_domains = $myhostname,foo.com
virtual_mailbox_base = /var/spool/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

を追記。「mydestination」は空白にしておくことを忘れずに。例として追加したドメインはfoo.comです。

/etc/postfix/vmailbox

にアカウントを追加していく。

hoge@hoge.com hoge.com/hoge/
foo@foo.com foo.com/foo/

という感じで、「メールアドレス ドメイン/アカウント/」という記述になる。これは、先ほど指定した「virtual_mailbox_base 」が保存先ディレクトリになっていて、そこから「ドメイン/アカウント/」というパスでVirtualMailBoxが作成されるということです。

で、必要なメールアドレスを記述したら

postmap /etc/postfix/vmailbox

でデータベースの更新をしておきましょう。これをしておかないとvmailboxへの変更が反映されません。vmailbox.dbの更新日時が変わっていることを確認しておきましょう。また、メールボックスは自動では作られないので、自分で作成しておきましょう。/var/spool/mail/vhosts/ドメイン/アカウント/以下に「cur」「new」「tmp」が必要です。所有者は5000にしておきましょう。

Postfix側の設定はコレで終わりです。ただ、SMTP認証やPopBeforeSmtp等の認証機能は追加しておきましょう。SPAMの踏み台にされるのも不愉快なものです。

ハセテツはSMTP認証を利用しているため、

saslpasswd2 -u ドメイン名 -c ユーザ名

も必要になります。SMTP認証用のユーザとメールアカウントは別々にしてあります。

Dovecotに関しては

/etc/dovecot-passwd

にアカウントとパスワードを記載します。

hoge@hoge.com:パスワード
foo@foo.com:パスワード

という感じで書きます。パスワードはopenssl passwdで出力作成されたものを記載しましょう。

書き終わったらサービスをリスタートして完成。実際に送受信して試してみましょう。

実際の自分の設定ファイルを読みながら記憶をたどりながら書いているのでもしかしたら抜けがあるかもしれません。おかしな箇所があったら指摘していただけるとうれしく思います。

Tags: ,