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に格納するよう、気をつけようと思います。



忘れないようにメモ。

2006年8月14日月曜日

phpでその月の日数を出力する


echo date("t", mktime());


これで現在の月の日数が表示される。たとえば今は2006年8月なので31になる。



ちょっと応用して、こうやれば指定した月の最後の日数が出せる。




echo date("t", mktime(0, 0, 0, $month, 1, $year));




 



今まで知らなかったけどこりゃ便利だ。カレンダー系の機能を作るときに重宝しそうです。



http://php.s3.to/man/function.date.html

2006年8月4日金曜日

aタグで着メロダウンロードを実現する


着メロのダウンロードは<a>タグでカンタンに実現できる。



<a href="melody.mld" title="曲名">ダウンロード</a>


これでドコモはOK。



auとvodafoneも同じようにできる。



<a href="melody.mmf" title="曲名">ダウンロード</a>


自分の場合、auとvodafoneはこのままではうまくいかなかった。調べてみると、httpd.confもしくは.htaccessにて下記のようにファイルタイプを設定してやる必要があるらしい。



AddType application/x-smaf .mmf


これでうまくダウンロードできるようになった。



あとauの場合はファイルにCRCを付加してやる必要がある。
phpやperlでCRC付加スクリプトを書くこともできるし、また公式サイトで配布されているツールを使えばWindowsローカル環境でCRC付加ができます。
http://www.au.kddi.com/ezfactory/tec/dlcgi/dlcgi_script3.html




こうした携帯の”クセ”は、知っていればなんてことない問題だと思いますが、初めてのことだったので結構てこずってしまいました。



参考
http://mcap.symmetric.jp/document/mcap3SE/401-4.html

2006年8月1日火曜日

.htaccessで画像の直リンを禁止にする


たとえばkawama.jpにある画像ファイルを直リンク禁止にしたい場合は、下記のようなhtaccessを画像フォルダに設置すればOK。




SetEnvIf Referer "^http://kawama\.jp" ref01
order deny,allow
deny from all
allow from env=ref01




最近では「コンテンツは認証かけていたが、画像は認証かけていなくて情報が流出した」なんて話も聞きますが、この方法で直接参照を禁止することで対応もできる(と思う)。



http://www.shtml.jp/htaccess/referer.html
http://lolipop.jp/?mode=manual&state=hp&state2=htaccess_06



 



◆追記
画像呼び出し元のファイルがhttps以下に設置されている時は注意が必要。
呼び出す画像もhttpsでないとRefererが取れないらしい。詳しいことは分からないが、httpとhttpsではRefererの動作に違いがある様子。

MSSQLでの最新のシリアル番号の取得方法


SELECT IDENT_CURRENT('TABLE_NAME');



これで最新のIDENTITY値の取得が可能。よく忘れるのでメモ。