2007年3月30日金曜日

mysqlでbigintを使う

現在担当している案件で、11桁の整数をデータベースに入力するという機能があります。
で、int型のフィールドに「12345678901」という数値をinsertすると、登録される値は「2147483647」になってしまう。
調べてみたら「2147483647」はint型の限界なので、bigint型を使う必要があることが分かりました。
以下のページに一覧表があって分かりやすいです。
http://www.javadrive.jp/mysql/datatype/index1.html

2007年3月17日土曜日

21-domainのBハウジングサービス(激安専用サーバー)

21-domainという、激安ドメインレジストラがあります。
http://21-domain.com/
ここはバリュードメインに乗り換える以前に利用していたことがありました。久しぶりにこのサイトを訪れたんですが、Bハウジングサービスというの専用サーバーサービスをやってることを知りました。
http://21-domain.com/html/m2011.html
実は家庭の事情で今年の12月に引越しする予定で、引越し後は現在使っている自宅サーバーが使えなくなってしまうのです。(※引越先のマンションは全戸強制的にJCOMプロバイダーを利用させられることになってます。JCOMは自宅サーバー禁止)
そんなわけで、12月までに安い専用サーバーを契約して移行を済ませておかなくてはいけません。
今のところ第一候補はさくらインターネットの専用サーバーサービス。
お値段は「初期¥29,800、月額¥6,800」です。
他にも安いところはないか探してはいるんですが、専用サーバーはどこも高い。
安くても¥9,800くらいなので検討の余地もほとんどないという状態。なので、さくらでほぼ決まりかな、、、と思っていました。
そこで偶然見つけたこのBハウジングサービス。
お値段は「初期¥5,980、月額¥5,980」。さくらを上回る安さだ!!
OSがWindowsかFreeBSDしか選べないという制限はあるものの、約¥1,000の差は大きい!これは一躍最有力候補になるか?!
・・・と思ったんですが、よくよく見てみると、、、
UPS経由による電源供給は月額1,000円プラスとなります。尚、本体無料貸出サーバではUPS経由により月額は6,980円となります。

とのこと。
結局のところ、さくらとあまり変わらない。初期費用は高いけれど実績を考えてるとさくらのほうがいいかな、、、と思っています。
省電力サーバーを持ち込めれば¥1,000のプラスはなくなるみたいですが、持ち込みだといろいろ面倒そう。まだ時間はあるので、じっくり調査&検討しようと思います。

LIKE検索より断然高速なお手軽日本語全文検索

http://www.tatamilab.jp/rnd/archives/000390.html
こんな手法があるそうです。
「全文検索=LIKEでやるもの」と当たり前のように思っていたので、このやり方は勉強になります。記事中に書かれているように「INSERT/UPDATE処理が遅くなる」という副作用があるのは注意が必要ですが。
ま、自分が作るアプリは小~中規模ばかりなので、LIKEで十分かも。
将来必要になるかもしれないので、念のためメモっておきます。

phpMyAdminの自動ログアウト時間を長くする

phpMyAdminをクッキー認証で使っていると、ログイン状態で何もしない状態がしばらく続くと自動でログアウトされる仕様になっています。この自動ログアウト時間、デフォルトでは1800秒、つまり30分に指定されています。
この30分という時間がなかなか微妙。コーディングをしている時などは30分くらいすぐ経過してしまうので、phpMyAdminでデータを操作する際にはいちいちログインしなおさないといけません。
なので、config.inc.phpに以下の行を追加して自動ログアウトになる時間を延ばしました。
$cfg['LoginCookieValidity'] = '18000';

上記の設定だと18000秒=300分=5時間で自動ログアウトとなります。
お好みで秒数を変えて使えるので、個々の環境にあわせて設定することができます。

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でデバッグしてました(今もしますが)けど、こういうツールがあるとホント助かります。