2006年9月29日金曜日

Windowsの不要なサービスを削除する


WindowsマシンにApacheやらMySQLやら、開発用にサーバー系ソフトをインストールするとWindowsのサービスとしてそれらを起動することになります。



このサービスですが、ソフトによってアンインストールしても消えずに残ってしまい、キモチワルイことがしばしばあります。



そんなときはコマンドプロンプトから、



C:\Documents and Settings\Administrator>sc delete Apache2



みたいな感じで、「sc delete サービス名」とやるだけで簡単に消えます。



どうってことはないんですが、気分的にさっぱりします。

2006年9月22日金曜日

サムネイル画像作成支援クラス「Thumbnail.inc.php」


phpにはデフォルトでイメージ関数があり、それを使って画像のリサイズ等の加工ができますが、使いこなすのがちょっと大変で、ソースコードがわかりにくくなってしまうという難点がありました。
そうした問題を解決してくれるのがクラス。



http://www.gen-x-design.com/projects/php-thumbnailer-class/



少し試してみましたがかなり使えそうです。

2006年9月21日木曜日

mod_rewriteでアクセスごとに処理を振り分ける


今回やったことは、



hoge.example.com へアクセスがあった場合 /home/homepage/public_html/hoge に



ahe.example.com へアクセスがあった場合 /home/homepage/public_html/ahe に



それぞれ処理を振り分ける、というもの。もちろん「hoge」と「ahe」だけじゃなくて「ufu」でも「oho」でもなんでもあり、/home/homepage/public_html以下にディレクトリが存在していればそちらに処理を振り分けます。



mod_rewriteを使い、httpd.confに以下のように記述します。



    ServerAdmin root@example.com
    DocumentRoot /home/homepage/public_html
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog logs/example-error_log
    CustomLog logs/example-access_log combined

    RewriteEngine On
    #RewriteLog logs/test-rewrite.log
    #RewriteLogLevel 3
    RewriteCond %{HTTP_HOST}  ([^\.]+).*
    RewriteRule ^(.*)$ /%1/$1 [L]



※当然ですが、apacheの設定以前にDNSにワイルドカードで登録しておく必要があります。



以上で完了です。なお、mod_rewriteを使わずにphp等でスクリプトを書いて処理を振り分けるやり方もいいと思います。今回は勉強がてらmod_rewriteを使ってみました。 



参考
http://www.net-newbie.com/trans/mod_rewrite.html
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
http://www.kobarin.jp/blog/MT3/archives/2005/01/virtualhost_www.html
http://webcraft.jp/asy/linux/mod_rewrite.htm

2006年9月12日火曜日

Smartyテンプレートで直接getやpost、cookieなどの値を参照する


$smartyという特殊変数を利用することで、いちいちphpスクリプト側でassignせず、smartyテンプレート側の記述のみで直接get、post、session、cookieなどの値を参照することができます。






































php

smarty

$_GET[hoge]

{$smarty.get.hoge}

$_POST[hoge]

{$smarty.post.hoge}

$_REQUEST[hoge]

{$smarty.request.hoge}

$_COOKIE[hoge]

{$smarty.cookies.hoge}

$_SESSION[hoge]

{$smarty.session.hoge}

$_ENV[hoge]

{$smarty.env.hoge}

$_SERVER[hoge]

{$smarty.server.hoge}


この機能、これまでずっと知らずいっつもassignしてました。。。

2006年8月25日金曜日

windows版mysqlのmy.iniはインストールパス直下に置く


タイトルの通り。



「C:\windows」とか「C:\windows\system32」あたりに置くもんだと思って少しハマってしまった。



ちなみにmysqlのバージョンは5.0.24です。

2006年8月16日水曜日

設定ファイルを使わず、設定値をDBに格納する


今やっている案件は、DBサーバー1台に対し、ウェブサーバーが複数台あるという構成。
ウェブサーバーは、



・一般ユーザー向けwwwサーバー1号
・一般ユーザー向けwwwサーバー2号(1号とは別のコンテンツを設置)
・管理者向けサーバー
・決済処理用サーバー



となっている。
一応負荷対策ということになっているけどほとんど意味はなく、開発の手間になっているだけという状態。
これら4つのサーバーそれぞれにphpスクリプトが置かれて、稼動しています。



それぞれコンテンツは別物で、スクリプトやテンプレートなどは別々に管理しています。これはまあ問題ないんですが、基本となる設定ファイルはかなりかぶるところが多い。



たとえば、設定ファイルに



$pref = array("01"=>"北海道","02"=>"青森県","03"=>"以下略");



みたいな配列を用意し、各スクリプトから呼び出して使ってます。(もちろん都道府県以外にもいろいろあります)
こうした値が完全に固定なら問題ないんですが、開発中や運用中に増えたり減ったりすることがよくあります。そうなった場合、各サーバーにある設定ファイルをそれぞれ更新しなくちゃいけなくてかなり面倒。



「あー、メンドクセー」なんて思ってたんですが、あるとき「DBは一個だけなんだから、設定はDBに格納しとけばいいんじゃないか?」ということに気がつきました。



今の案件に関しては今からDB格納方式にしてたらものすごい時間かかっちゃうのであきらめますが、今後こういうサーバー沢山案件(あるかな?)が出てきたときはなるべくDBに格納するよう、気をつけようと思います。



忘れないようにメモ。