フォーカスすると消える灰色の説明文付テキストフィールドを作るjQueryプラグイン

(function(){
    jQuery.fn.inputlabel = function(value, cls){
        var input = this;
        if( value == undefined ) value = input.attr('name');
        if( cls == undefined ) cls = 'inputlabel';
        this.val(value).addClass(cls);

        this.focus(function(){
            input.removeClass(cls);
            if(input.val() == value)
                input.val('');
        });

        this.blur(function(){
            if(input.val() == '')
                input.val(value).addClass(cls);
        });

        if( this.parent('form') )
            this.parent('form').submit(function(){
                if(input.val() == value)
                    input.val('');
            });
    };
})(jQuery);

jQueryプラグインです。

$('input#id').inputlabel(label)

とすることで、説明文付テキストフィールドを作れます。
labelを省略した場合はname属性が使用されます。
説明文はcssクラスinputlabelに設定されているので、
css側で、input.inputlabel{ color: gray }のようにすれば灰色にできます。

WindowsのVirtualBox上でubuntuサーバを動かしsshで接続する

これまで、ノートPCで作業するときは家においたサーバにssh(putty)で接続してemacsでいろいろ書く、というスタイルを取っていました。
ただ、これだとオフラインでは作業できずWindowsXPノートにLinux環境が欲しいなあとずっと考えていました。
で、最初にcoLinuxに挑戦したのですが、いろいろとややこしくて降参。 そこでもう少し簡単な方法はないかなあと探してVirtualBoxを使うことにしました。
タイトルの通り、WindowsVirtualBoxを入れて、そのVirtualBox上でUbuntuサーバを動かし、そのサーバにホストOSであるWindowsからsshで接続をする、という手順を書きたいと思います。
ウェブ上に情報はいっぱいあるのですが、「WindowsVirtualBox上でubuntuサーバを動かしsshで接続する」方法をまとめて説明したサイトはなかったので自分用のメモもかねて。

準備

VirtualBox2.1.2, ubuntu server8.10, WindowsXP SP3という環境で行いました。
とりあえず、VirtualBox, ubuntu server8.10をダウンロードしてきて、VirtualBoxをインストールします。

ubuntuのインストール

VirtualBox仮想マシンを作成し、ダウンロードしたイメージから普通にubuntuをインストールします。
仮想マシンのネットワークの設定はNATを使います。

動かない

インストールが終わると再起動しますが、この途中で「Unable to boot - please use a kernel appropriate for your CPU」というメッセージがでてubuntuが起動しません。
http://d.hatena.ne.jp/ksaito11/20080510#1210436271 の「 Ubuntu 8.04 ServerがVirtualbox上で動かない問題」の通りの作業で起動するようになります。

ポートフォワーディングの設定

これで無事VirtualBox上でubuntuが動くようになりましたが、このままではホストOSであるWindowsからゲストOSのubuntuに接続することが出来ません。
ssh等での接続を可能にしるためにポートフォワーディングの設定を行います。
これはホストOSのポートnへの接続をゲストOSのポートmへ転送するようにするという設定です。
http://d.hatena.ne.jp/masaking/20080823/1219501272 を参考に。
WindowsVirtualBoxをインストールしたフォルダで以下のコマンドを実行します。
ホストOSの22番をゲストOSの22番へ転送しています。 (vmnameは仮想マシン名に置き換え)

> cd "C:\Program Files\Sun\xVM VirtualBox"
> VBoxManage setextradata "vmname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
> VBoxManage setextradata "vmname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
> VBoxManage setextradata "vmname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 22

これにより、Windowsからlocalhost:22にsshで接続することによってubuntuにアクセスできるようになります。

VirtualBoxをバックグラウンドで走らせる

これでWindowsVirtualBox上でubuntuサーバを動かしsshで接続できるようになりました。
次は、画面の表示は必要ないので(操作はsshで行うため)ゲストOSをバックグラウンドで動くようにします。
"C:\Program Files\Sun\xVM VirtualBox\VBoxHeadless.exe" -startvm "vmname"へのショートカットを作成します。
このショートカットから起動すればディスプレイ無しで起動します。
ただ、バックグラウンドといってもコンソールがでちゃいます。
完全に常駐アプリっぽく動かす方法はわかりません。

なんで外人の先生が苦手か

外人の先生が苦手です。
ちょっと考えてみたのですが、知らず知らずのうちに持っているコンプレックスが原因な気がします。
どういうコンプレックスかというと
「どうせ、『日本人の大学生(なぜか自分に限定せず一般化してる気がします)まじ頭わりぃwwwつんぼかよwwww』とか思ってんだろ」
みたいな。

自分は片言日本語を聞いてても別に「こいつ(ら)頭わりぃwww」とは思わないわけで、たぶん外人の先生も上のような事は思ってないんでしょう。

ただ、こういうのは実際にどう思ってるかが問題なわけじゃなくてバカだと思われるかもと考えているのがまずい。

つくづく(まじめな)留学する人ってすごいと思います。

DBIC&JSON(メモで独り言)

DBICのデータ->ハッシュ->JSONという手順でJSONを作る。
ハッシュを作るのにDBIx::Class::AsFdatを使ったんだけど、belongs_toまわりで期待通りじゃない。
いろいろみて

15行目
OUT: $fdat->{$column} = $self->$column;
IN : $fdat->{$column} = $self->get_column($column);

でうまく行った。

はてなダイアリーのコメント通知が変わった?

メールの内容も冗長になったし、送信元のアドレスもフィルターかけ難くなってる。
その上今までは自分のコメントは無視だったのにこれもメールしてくるようになってる。
改悪。

読み方とか

今まではネットでしかコンピュータ関連の話をすることがなかったのであんまり気にならなかったんですが、
バイトを始めて他人になにかを説明しようという時に、なんて発音すればいいんだ?と一瞬つまる場面が結構あります。
同じく説明を聞いてて、相手がなにか言ったときにそれが自分の脳内読み方と違っていた場合すごい戸惑うというのも。

リストアップしてようと思ったら意外に思いつきませんでした。

メニューは右か左か

JJX2008-10-16

ブログなんかのデザインで、だいたい左右どっちかに最近のエントリーの一覧とかカレンダーとかのメニューがある。
で、これは絶対右に置かれるべきなはず。
理由は左にあると記事を読むとき横スクロールしなきゃいけなくなる可能性が高いから。