2007年7月5日木曜日

Tableのソート

Railsを使って、DBのテーブルの中身を表にする時に
列名でソート出来るように作るにはどうすれば良いか?

パッと考え付くのは、Actionを追加しlink_to_remoteを使って
行なうというくらい。(私の技量の問題はおいておいて。)

ということで、以下の流れをユーザーに提供する手段を探していました。
1、普通のFormを使って、条件を設定し合致するテーブルを生成
2、検索結果をソートする
なお、2のソートの時に通信が発生しない方が私の会社の環境を
考えると良い様に感じました。(海外拠点の回線がかなり細い為。)

そこで見つけたのが「tablesort.js」です。

<使い方>
form_remote_tagを使って、Formを構成する。
検索結果を表示するテーブルをXHTMLで書くこと。
(Rails自体は元々XHTMLを使うことが前提なのですが)

<table>
<thead>
<tr>
<th>No</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody id="list">
</tbody>
</table>

このように、最初tbodyは空にしておいて、form_remote_tagで
listをupdateするようにする。
つまり、ユーザのForm入力がAJAXの動きでサーバに届き、
サーバのActionで<tr><td>---</td></tr>を送り返せば
tbodyの中に結果が入ってきて表示されるようになる。
(AJAXが使えるようになるまでは、FormとTableを別フレームに切り
 検索が実行されてもFormが消えないようにしていたが、
 この方法なら部分的に書き換えられるだけなのですっきりする。)

さて、これでAJAXを利用して結果を表示するテーブルを
作れるのだが、
tablesort.js」をどう使うか。
作った最初は、Tableタグの外側でdivを切っておいて
tablesort.js」の
読み込みタグを含む形で送信するRHTMLを書いたが
ソートのリンクが機能しなかった。
結果、一番最初にユーザーに送る段階で列名(th)を定義し、
tbodyの中を差し替えるようにしたところ、ちゃんと動作した。

ということで、
tablesort.js」を使う上でのコツとしては
1、XHTMLのtableを使い、theadに列名を入れておいて事前に
  ユーザーに送信しておくこと。
2、formはAJAXを利用して、tbodyに結果を送るようにすること。
になります。

なお、具体的な
tablesort.js」の設定方法はリンクを参考にして下さい。
tablesort.js : リンク



2007年6月19日火曜日

Rails Formまとめ

いつも忘れるので、軽くまとめ。

<基本パターン>
controller
@members = Member.find(:all, :select => "id, name").collect{|m| [m.name, m.id]}

view
<%= select(:members, :id, @members, :include_blank => true) %>
include_blankで先頭に空白を入れられる。

<その他>
こっちにまとめられているので、参照のこと。

HowtoUseFormOptionHelpers

2007年6月13日水曜日

Emacs Dired

いつも忘れるので、軽くまとめておく。

d 削除マーク
u 削除マーク解除
x 削除マーク実行

# 自動保存ファイルに削除マーク
~ バックアップファイルに削除マーク

f ファイルを今のバッファで開く
o ファイルを別バッファで開く

c コピー
r リネーム
m モード変更

g 表示の更新
s 表示ソート(時刻と名前)

i サブディレクトリの内容を表示する
k サブディレクトリの削除

サブディレクトリの作成って、コマンドでやるのでしょうか?

参考元
GNU Emacs マニュアル

2007年6月12日火曜日

仮想PCのディスク作成

VMPlayerを利用してLinuxなどをインストールするために、仮想のディスクを作成する必要があります。
VMPlayerの製造元のページでは、直ぐに使えるディスクイメージを配布していますが、自分で好きなOSをインストールしたい場合は作らないとダメです。
幾つかの方法があり私はVMXBuilderというツールを使っていますが、こちらも良さそうです。

EasyVMX!: Virtual Machine Creator

2007年6月9日土曜日

emacs-railsまとめ

別の環境を作り、最短ステップでのRails環境構築とEmacs準備をしてみた。
以下にまとめておく。
OS : Ubuntu7.04
インストールされるもの(概要)は以下のとおり。
Ruby1.8.5
Rails1.2.1
gem0.9.0
Emacs22系

<手順>
1、普通にUbuntuをインストールする。
2、インストール後に、Synapticパッケージ・マネージャにてemacs-snapshotをインストール
  "emacs-snapshot"で検索をかけて表示されたパッケージを全て。
3、同じく"ruby"で検索をかけて、以下のものをインストール。
  eruby irb libruby rails rake rdoc ruby-elisp rubygems
適応を押して追加されるものは、そのままインストールする。
  (rubyとruby1.8があるので、一応両方入れました。)
4、インストール後に再起動。
  再起動後にメニューを見るとEmacs-snapshotが追加されているので
  ちゃんと使えるか確認する。
5、よしだメモを参考に、ほとんど同じことを実行する。
  変更点:emacs-railsの最新版にした。(0.5.99.5にしました)
6、日本語入力でAnthyを利用する場合は、
  パッケージマネージャでanthy-elをインストールする。
  SCIMの設定で、キーボードの「ctrl+space」を外す。
  
以上にて、Railsの環境とEmacsの設定が終わりです。
まだ完全にテストしていないので、これで良いかは別途検証してみます。

2007年6月8日金曜日

Railsのサーバ

Railsの実行環境メモ

<現在>
Lighttpd : 負荷分散用に使用。proxyを使ってバックを呼び出す。
Mongrel : mongrel_clusterを使って、サイトを複数立ち上げる。

FastCGIを利用するのも良いが、複数サイトを立ち上げる時に
サイト毎のサービス停止が難しい。
そこで、フロントにApache2を使ってもMod_proxyを利用して振り分けを行ないたかったけれども、公開環境にてRPMがまだ提供されていなかった。という経緯から、Lighttpdを使うことに。
(考えてみると、Lighttpdも正式サポートではないので、状況は変わらないんですが。)

<気になる環境>
1、Apache2(mod_proxy) + Mongrel_cluster
  最終的にはこの環境がサポート面からも良いかと。
2、JRuby + rails-asyncweb
  記事で発見。
  将来、Javaのサーバ環境の方が利点が多いと
  判断したら切り替えると良いかもしれない。
  Railsの技術者がまだまだ少ないが、Javaの技術者は多いので、
  開発者によってJavaを使うかRailsを使うかを選んでもらえる方が
  会社としては人員確保しやすくて良い気がする。

英語配列キーボード

英語配列のキーボードが良いと感じた。
日本語配列より、記号の並びが良いし、キートップがすっきりしていて見た目も良い。ということで、前に買っておいたキーボードを設置してUbuntuで利用している。

配列の設定ですが、システム>設定>キーボードでおこなう。
CapsとCtrlの入れ替えも、対応出来るのでConfをいじらなくて良いから楽チン。

なお、はまったのは以下のとおり。
型式: Generic 104-key PC
型式は、幾つかあるうち一番標準的なものを選んでおけば
とりあえずうまく行きそう。
レイアウト: U.S. English
最初、この「U.S.English」という部分がメニュー上選択出来ると
思っていなかったので、その配下のものを選択してたので、”や’が入力出来なくてかなり困った。

ということで、現在は普通に使えています。