2013年5月26日日曜日

[CoffeeScript]クラスメソッドとクラス変数

CoffeeScriptでは、クラス内の変数に「@」をつけて宣言するとクラスメソッドになる。

class Hoge
  #クラスメソッド
  @classMethod = (param) ->
    "param is #{param}."

  #クラス変数
  @count = 0

  constructor: ->
    # コンストラクタ内で、クラス変数の値をインクリメント
    Hoge.count += 1;

console.log Hoge.classMethod "パラメータ"

new Hoge();
console.log Hoge.count
new Hoge();
console.log Hoge.count

実行結果

param is パラメータ.
1
2

JavaScriptへの変換結果

クラスメソッドや変数は、CoffeeScriptで定義したクラスに対応するfunctionのプロパティとして宣言される。
var Hoge;

Hoge = (function() {

  Hoge.classMethod = function(param) {
    return "param is " + param + ".";
  };

  Hoge.count = 0;

  function Hoge() {
    Hoge.count += 1;
  }

  return Hoge;

})();

console.log(Hoge.classMethod("パラメータ"));

new Hoge();

console.log(Hoge.count);

new Hoge();

console.log(Hoge.count);

2013年5月18日土曜日

railsのルーティング設定をリスト表示する

rakeコマンドの引数に「routes」を指定して実行することでルーティング設定をリスト表示することができる。

%rails_project%/bin/rake routes

実行結果例

Prefix Verb   URI Pattern               Controller#Action
   users_new GET    /users/new(.:format)      users#new
       users GET    /users(.:format)          users#index
             POST   /users(.:format)          users#create

2013年5月12日日曜日

[Oracle]DATE型の計算

日付の加算/減算

NUMBER値を加算(減算)しての日付計算。
-- 現在日時の1日後
select sysdate + 1 from dual;

-- 2013/05/11の1日前
select to_date('2013-05-11') - 1 from dual;

-- 閏年も問題なし(3/1になります)
select to_date('2012-02-28') + 2 from dual;

期間値(INTERVAL)を使って日付の加算(減算)を行うこともできます。
-- 現在日時の1日後
select sysdate + to_dsinterval('P1D') from dual
select sysdate + interval '1' day from dual;

月の加算/減算

期間値(INTERVAL)を使って計算します。
-- 1ヶ月後を計算
select to_date('2012-02-28') + interval '1' month from dual;

このようにINTERVALを使うと、日付の計算を非常に簡単に行うことができます。
INTERVALのリテラル定義の方法は、以下のOracleのドキュメントを見ると良いでしょう。
http://docs.oracle.com/cd/E16338_01/server.112/b56299/sql_elements003.htm#i38598

2013年5月6日月曜日

CSSでテーブルの行の背景色を交互に変更する方法

CSSの定義のみで、テーブルの行の背景色を交互に変更する方法

IE8ではこの方法を使えないので、IE8をサポートする場合にはjQueryなどを使って回避する必要があります。
[jQuery]テーブルの行の背景色を交互に変更する方法

CSSのみでの背景色の変更は、nth-child擬似クラスを使用して行います。
下の例のように、trの何番目の子要素に対して背景色を適用するかみたいな使い方をします。
テーブルの場合、タイトル行をthで定義したりするので、tdのみに背景色を適用するようにセレクタを定義しています。
    /* 偶数行の背景色を変更 */
    tr:nth-child(even) td {
      background-color: #eee;
    }

    /* 奇数行の背景色を変更 */
    tr:nth-child(odd) td {
      background-color: #eee;
    }

    /* 任意の行数毎に背景色を変更(この例だと4nと指定しているので4行ごと) */
    tr:nth-child(4n) td {
      background-color: #eee;
    }