2005年9月30日金曜日

Apache2で静的HTMLページが文字化け

Apache2が入ってるサーバーで静的HTMLページが文字化けする、という現象が発生。IE、FireFoxは問題ないが、OperaやMacIEなどで化けまくり。
で、ググってみたら「AddDefaultCharset」の設定で回避できるということを発見。
で、httpd.confを編集し、
AddDefaultCharset off

にしてApache再起動。。。変化無し。
で、もうちょっと調べてみたら、Apache2の場合はoffではなくnoneを使うとのこと。
AddDefaultCharset none

で再度再起動。。。直った!

2005年9月18日日曜日

スタイルシートでのFirefox対応の注意

「IEではちゃんと表示されるけど、Firefoxでは表示が崩れてしまう」
ということがよく起こります。自分の場合主にその原因は、IEとFirefoxでの「padding」の認識の違い
たとえば、こういうスタイルシートがあった場合、
hoge {
width:100px;
padding: 10px;
}
◆IEの場合→横幅は100pxとして認識しされる
◆Firefoxの場合→横幅は120px(左padding+右padding)として認識される
この違いのせいで、Firefoxでガタガタになってしまうことがよくあります。
対策は、「paddingを使わない。marginを使う」など。かなり不便だが、どうしようもない。よく注意して、あとで困らないよう先手先手で対応するよう心がけましょう。。

期限切れで失効したドメインを再取得するまで

「ドメインのレジストラを移したい。」
「でも手続きが面倒だ。」
「お、ちょうどタイミングよくドメインの有効期限が切れる。」
「じゃあこのまま有効期限切れにして、新しいレジストラで新規取得すればいいや。」
ということを思いつき、実行しました。
そして、最終的にそのドメインを新しいレジストラで新規取得できたのは約2ヵ月後でした。。
なぜ2ヶ月も時間がかかったか。それは下記のページに詳しく書かれています。
http://www.nic.ad.jp/ja/dom/gtld-policy/rgp.html
昔はドメインの有効期限が切れるとすぐに新規取得できる仕組みだったようですが、それだと
「おっと、ドメイン更新するの忘れてた、いけね。」
「うおおお、ウチのドメインがエロサイトに転送されてる!!」
ということが頻繁に発生し問題になったため、有効期限が切れてから失効するまでにかなりの猶予期間をもたせるようにしたらしいです。ちなみにドメイン保有者が猶予期間中にドメインを請戻しするにはレジストラに多額のお金を払わないといけません。なので猶予期間があるといっても基本的にはきちんと更新しないとダメってことです。
とまあこんな感じで、いろいろと勉強になりました。
結局、レジストラを移したいと思ったら普通にレジストラ移管手続きをするのが一番の早道ってことみたいです。自分のように変な考えは起こさないようにしましょう。
ちなみに無事再取得できたドメインは、『バリュードメイン』にて取得しました。
バリュードメインはまずドメイン取得費用が安く(.comで790円)、またダイナミックDNSなども無料で利用できるのでなかなか便利です。
とりあえず、時間はかかってしまいましたが無事当初の目的が遂げられてよかったです。ふぅ。。

2005年9月13日火曜日

MTのトラックバックのタイムアウトを設定する

自分のブログに来るトラックバックPINGがよくタイムアウトでエラーになってしまうので、「じゃあApacheのTimeoutを長くしてみるか」と思ってやってみたが効果なし。んで、ググってみたらmt.cfgでTimeoutの設定ができるのを知りました。
http://www.aivy.co.jp/BLOG_TEST/nagasawa/archives/000611.html
まだ実際にトラックバックしてないのでわかりませんが、たぶんうまくいってるんじゃないかと。

phpでheader関数やsetcookie関数を使うときの注意

phpでheader関数やsetcookie関数を使うとき、先にヘッダが出力されていると「Cannot modify header infomation」というエラーが出てしまいます。
header関数やsetcookie関数を使う前にechoを使ったり、<?phpの前にHTMLタグなどを入れると当然ヘッダが出力されてしまうので上記のエラーが出てしまいます。
require()でファイルを呼び出している場合も同様で、今回それでハマりました。requireするファイルのオシリが ?> の後に改行が2つ入っており、その影響でヘッダが出力されてしまっていました。かなーり見つけにくいエラーでした。。。

2005年9月5日月曜日

Amazon webサービスの勉強

この週末、Amazonウェブサービスのお勉強をしました。

勉強というよりほとんど実作業でして、これまで使っていたSOAPによるデータ取得をやめ、RESTと呼ばれる方式に変更しました。

簡単に言うと、RESTはhttpでAmazonサーバーにリクエストを送り、リクエストのパラメータに応じてXMLでデータを返してくれる、というもの。ちなみにこのREST方式は、SOAP方式の6倍も速いそうです。

さらにさらに、SOAPとRESTでは、アマゾンサーバーから返ってくる値がビミョーに違うんです。ごく一部ですが、トップセラー情報とかがSOAP方式で取得したデータとREST方式で取得したデータで違ってます。SOAPのほうが古い情報のようです。

また、Amazonは今後のWebサービスはRESTをメインで考えてるそうなので、このままSOAPを使っててもいいことは何もなさそうだ。と思ってこの週末を使ってRESTの勉強をしました。

この辺のドキュメントが役に立ちました。



今回は司馬遼太郎を読むの書籍情報をAmazonウェブサービスで表示する部分をSOAPからRESTに移行しました。

ITMediaの記事のサンプルスクリプトをベースに、他のドキュメントのパラメータ情報を参照しながら作りました。なお、ITMediaのサンプルスクリプトはphp5じゃないと動かないようです。最初php4で一生懸命動かそうとして、1時間ほど時間を無駄にしてしまいました。

とりあえず、RESTの第一歩が踏み出せたので良かったです。時間があれば勉強するところはいくらでもありそうなので、今度はブラウズノードやらキーワード検索やら、いろいろ勉強していきたいと思います。

2005年9月4日日曜日

MTをアップグレードした

アップグレードといっても3.151から3.171へのアップグレードなのでほとんど変わらないのですが、3.171で実装された確認・保存ボタンをエントリ編集画面の上と下両方に設置できるのが便利なので、ためしにアップグレードしてみました。
アップグレードは簡単。ファイルをアップして、mt-upgrade[バージョン名].cgiを実行するだけ。
唯一の注意点は、mod-perlを使っている場合、アップグレードが終わったあとにApache再起動が必要なところ。再起動しないとバージョンが古いままメモリにキャッシュされてしまうので、旧バージョンのままで動いてしまいます。

2005年9月2日金曜日

phpスクリプトに拡張子なしでアクセスするためには

やり方は2通り。

〓1.ForceType を使う〓
.htaccessを設置して、
<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

と書く。

phpファイルは、たとえば「test.php」だったら「test」にリネームする必要がある。
この方法はYomi-searchのphp版静的化関連の情報ページでよく見かけました。

〓2.Content Negotiation を使う〓
httpd.confの拡張子なしにしたいファイルがあるディレクトリに

Options MultiViews

の記述を追加する。

phpスクリプトのリネームは必要なし。
Content Negotiationのほうがお手軽ですが、レスポンスが少し悪くなるようです。