2013年2月28日木曜日

[CoffeeScript]booleanリテラル

CoffeeScriptでは、下の値をbooleanリテラルとして使うことができます。
  • trueとなるリテラル
    • true
    • on
    • yes
  • falseとなるリテラル
    • false
    • off
    • no

// CoffeeScript
true1 = true
true2 = on
true3 = yes

false1 = false
false2 = off
false3 = yes

// コンパイルされたJavaScript
true1 = true;
true2 = true;
true3 = true;
false1 = false;
false2 = false;
false3 = true;

onやoffを見たりしても、悩んでしまう気がするので積極的に使う必要がない気がしています。

2013年2月23日土曜日

[CoffeeScript]式展開

CoffeeScriptでもRubyと同じように、#{}を使用した式展開ができます。

式展開の例

Rubyと同じように、展開したい式を#{}の中に入れてます。
str = "文字列"
console.log("str = #{str}")
console.log("計算 = #{3 + 4}")
console.log("比較 = #{str == '文字列'}")

上のコードを実行すると、コンソールには以下の結果が出力されます。それぞれ、式の結果が出力されているのがわかります。
str = 文字列
計算 = 7
比較 = true

compileした結果のJavaScriptは下のようになります。
#{}で式展開された箇所は、「+」で文字列連結されているのがわかります。
// Generated by CoffeeScript 1.4.0
(function() {
  var str;

  str = "文字列";

  console.log("str = " + str);

  console.log("計算 = " + (3 + 4));

  console.log("比較 = " + (str === '文字列'));

}).call(this);

2013年2月11日月曜日

play2でhtml5の数値テキスト

input type=numberな入力エリアは以下のコードで生成できる。

@helper.input(bookForm("count")) { (id, name, value, args) =>
  
}

inputNumberとかhelperにあってもよさそうなんだけど。

2013年2月3日日曜日

css3のinvalidとvalid

invalid、validを使用すると、入力要素の形式が無効か有効かによってスタイルを簡単に切り替えることができる。

// 入力要素が不正な場合は背景色を変える。
:invalid {
  background-color: #FFD4D4;
  border: 1px solid maroon;
}

// 入力要素が有効な場合は、スタイルを適用しない
:valid {
}

必須項目で値が入力されていない場合・・・




必須項目で値が入力されている場合・・・

2013年2月2日土曜日

[Oracle]multi insert

multi insertをつかうと、1つのSQL文で複数テーブルに一括でデータ登録ができるようになります。
これにより、各テーブルに対してinsertする時と比べてトラフィックが削減できパフォーマンス向上が見込めるのではないかと思います。

例1

各テーブルに対して値を指定して挿入
  1  insert all
  2  into test1 (id, name) values (1, 'name1')
  3  into test2 (id, name) values (1, 'name2')
  4* select * from dual

2 rows created.

JDBCを使用した場合は、バインド変数を使用して挿入する値を埋め込んであげると良い。
        PreparedStatement statement = connection.prepareStatement("INSERT ALL"
                + " INTO test1 VALUES (?, ?)"
                + " INTO test2 VALUES (?, ?)"
                + " SELECT * FROM dual");
        statement.setInt(1, 1);
        statement.setString(2, "あいうえお");
        statement.setInt(3, 1);
        statement.setString(4, "かきくけこ");
        int count = statement.executeUpdate();

例2

副問い合わせの結果に応じてinsert先テーブルを切り替えるにはwhen句と組み合わせると良い。
  1  insert all
  2  when mod(id, 2) = 0 then
  3    into test1
  4  else
  5    into test2
  6* select id, name from test3

5 rows created.