2007年3月14日水曜日

PostfixでOP25B対応

会社のプロバイダがOP25Bを実施したため、会社から自宅のSMTPサーバーに接続できなくなってしまった。

ググってみると、さすがPostfix、参考になるページがワンサカ出てきました。

とりあえず、一番手軽なSubmission Port(ポート:587)を利用する方法で対応することに。
自分の環境で必要な作業はmaster.cfに以下の行を追加するだけでした。


#OP25B
submission inet n - n - - smtpd  
    -o smtpd_etrn_restrictions=reject


あとはファイアウォールで587ポートを開放し、メールクライアントの設定を変更して終了です。
もちろんpostfixの再起動も忘れずに。

※2007.12.20追記
最近引越してプロバイダがJCOMになりました。で、上記の設定だけではメールが送信できなかったので、main.cfに

relayhost = [smtp.jcom.home.ne.jp]
を追加することで対応しました。

JCOMに限らず、同じような制限をしてるISPであれば指定のSMTPサーバーを使えばOKだと思います。

2007年3月7日水曜日

まるごとJavaScript & Ajax ! Vol.1

まるごとJavaScript & Ajax ! Vol.1」を読みました。
今まで読んだJavaScript,Ajax関連本の中では一番のおすすめです。特にPrototype.jsの章はすぐにコーディングに使える内容だったので非常に良かったです。
Google Web ToolkitやRuby on Railsのところはひとまず使わないので読み飛ばしましたが、それ以外の部分を読むだけでもかなりのボリュームがあります。実用的なものから、JavaScriptの可能性を探るものまで。読み応えがある一冊でした。
まるごとJavaScript & Ajax ! Vol.1


価格: 1,995円
天野 仁史
インプレスジャパン

2007年3月6日火曜日

mod_rewriteを使うには「Options FollowSymLinks」が必要

mod_rewriteが必要になったので、apacheを「--enable-rewrite」オプションをつけて再コンパイルした。

これで準備OK。さあ、リライトできるかな・・・

と思ったら、エラーが。

.htaccessに記述したんですが、該当ディレクトリ以下すべてのページで「ページが見つかりません」となってしまう。記述は間違ってないはずなんだけど、どうしてだろう。しばらく色々試してみるも、どれもうまくいかない。

そこでapacheのエラーログを見てみると、

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden

というエラーが出ていた。mod_rewriteを使うディレクトリでは「Options FollowSymLinks」が必要らしい。

さっそくhttpd.confに「Options FollowSymLinks」を追加。gracefulリスタートをかけると、今度は成功!!

何はともあれ、エラーが起こったらまずはログを見ましょう。ということですね。

2007年3月2日金曜日

windowsのphpはrequire_onceやinclude_onceで大文字小文字を区別しない

ということらしいです。
http://search.net-newbie.com/php/function.require-once.html
ローカルで開発をしているときにハマってしまい、それで気がつきました。

javascriptでの変数の型変換

javascriptの変数は文字列型と数値型がある。
それぞれ型の変換をするには以下のようにすれば良い。

■数値型→文字列型変換

hoge = 123; //数値型
hoge+=""; //空の文字列をプラスして文字列型に変換
alert(hoge+45); //結果は12345


■文字列型変換→数値型

hoge = "123"; //文字列型
hoge-=0; //マイナスゼロをして数値型に変換
alert(hoge+45); //結果は168


※プラスゼロではダメで、マイナスゼロでないといけないらしい。

※追記
関数を使って明示的にやる方法もあるようです。こっちのほうがわかりやすいですね。
http://blog.goo.ne.jp/kori39/e/03d9ce6a3180e9a553644a763fc42542

※追記2011/08/14
parseInt関数を使って変換する場合、parseInt("08",10)という具合に、第二引数に10進数を指定すると良い。
もしくはNumber関数が一番シンプルでわかりやすいかも。

2007年3月1日木曜日

JavaScriptで連動する2つのセレクトメニューを作る

よく見かけるアレです。例えば不動産系のサイトで、沿線を選択すると駅が選択可能になる、みたいなやつです。

今回はアレをJavaScriptで作ってみました。なお、配列の代わりにJSONを、ライブラリはprototype.jscommon.jsを使ってます。

そして、完成してから気がついたんですが、これってPearのHTML_QuickFormのhierselectを使うと一瞬で作れるんですね。

phpをお使いなら断然そっちを薦めます。自分も結局JavaScriptのはやめてhireselectのにしましたから。。

一応、作ったものをアップしときます。

まだJavaScriptにあまり慣れてないので、かなり手間取ってしまいました。


<html>
<head>
<title>JavaScriptで連動する2つのセレクトメニューを作る</title>
<script type="text/javascript" src="common/prototype.js"></script>
<script type="text/javascript" src="common/common10.js"></script>
</head>
<body>
<script type="text/javascript">
var menuItem = {
        1: [
            {"code": 1, "name": "東京"},
            {"code": 2, "name": "大阪"},
            {"code": 3, "name": "名古屋"}
          ]
        ,
        4: [ 
            {"code": 5, "name": "ニューヨーク"},
            {"code": 6, "name": "ワシントン"},
            {"code": 7, "name": "ロス"}
          ]
        ,
        8: [ 
            {"code": 8, "name": "ロンドン"},
            {"code": 8, "name": "マンチェスター"},
            {"code": 9, "name": "リヴァプール"}
          ]
        };
addEvent(window,'load',init,false);
function init()
{
  addEvent($("form1").country, 'change', setMenuItem, false);
}
function setMenuItem()
{
  //初期化
  var option_cnt = $("form1").city.options.length;
  for(var i=0; i<option_cnt; i++)
  {
    $("form1").city.remove(0);
  }
  var n = $F("country");
  for(var i=0; i<menuItem[n].length; i++)
  {
    $("form1").city.options[i] = new Option(menuItem[n][i]["name"],menuItem[n][i]["code"]);
  }
}
</script>
<form name="form1">
<select name="country">
<option value="1">日本</option>
<option value="4">アメリカ</option>
<option value="8">イギリス</option>
</select>
<select name="city">
</select>
</form>
</body>
</html>

FireBugとFireBugLite

ここ最近話題のJavaScriptのデバッグツール、FireBug。自分も愛用してます。
導入は非常に簡単なので、javascripterならとりあえずインストールしておくといいです。
FireBug
http://www.getfirebug.com/
IEやOperaにはFireBug Liteが使えます。FireBugよりは多少機能的に劣りますが、これがあるとだいぶ楽になります。
FireBug Lite
http://www.getfirebug.com/lite.html
昔はひたすらalertでデバッグしてました(今もしますが)けど、こういうツールがあるとホント助かります。