2013年4月21日日曜日

[CoffeeScript]戻り値のないメソッドを作る方法

CoffeeScriptでメソッドを作ると、必ず最後の文の結果が戻り値として返されてしまいます。

例えば、下のメソッドの場合「2 * 5」がメソッドの最後の文なので、このメソッドは必ず「10」を結果として戻します。
method = ->
  2 * 5

このように、常に最後の文の結果が返されてしまうので、基本戻り値のあるメソッドになります。
もし、どうしても戻り値のないメソッドを作りたい場合、下のメソッドのように明示的に「undefined」を返すと戻り値のないメソッドを作れます。
method = ->
  return undefined

2013年4月11日木曜日

[Oracle]V$SESSIONに接続元を識別する情報を格納する方法

JDBCでOracleデータベースに接続した場合に、セッション情報を確認するビュー(V$SESSION)のPROGRAM列に任意の値を設定する方法。

OracleDataSourceの接続プロパティに対して、キー:v$session.program、値:接続元を示す値を設定することで、任意の値をV$SESSIONのPROGRAM列に表示出来る。
※デフォルト(thin接続の場合)の場合、'JDBC Thin Client'と表示される。

実装例

この例の場合、PROGRAM列には「任意の値」が表示される。
dataSource.setURL("jdbc:oracle:thin:@localhost:1521:hoge");
dataSource.setPassword("hoge");
dataSource.setUser("hoge");
Properties properties = new Properties();
// v$session.programをキーにして、クライアントを識別する値を設定する。
properties.setProperty("v$session.program", "任意の値");
dataSource.setConnectionProperties(properties);

2013年4月7日日曜日

[CoffeeScript]ヒアドキュメント

coffeescriptでのヒアドキュメントのまとめ。

コメント

ブロックコメントなだけなので、ヒアドキュメントではないかもしれませんが。
1 ###
2   console.logにメッセージを出力する。
3 ###

JavaScriptに変換されると
1 /*
2   console.logにメッセージを出力する。
3 */

文字列

例を見るとわかりますが、変数を展開することもできます。
1 str = "さしすせそ"
2 here = """
3 あいうえお
4 かきくけこ
5 #{str}
6 """

JavaScriptに変換されると
1 str = "さしすせそ";
2 
3 here = "あいうえお\nかきくけこ\n" + str;

正規表現

文字列と同じように変数の展開ができます。複雑な正規表現を定義するときに便利な気がします。
1 str = "い"
2 pattern = ///
3 # コメントも書ける
4 #{str} # 変数の展開もできる。
5 6 7 8 ///

JavaScriptに変換されると
1 str = "い";
2 
3 pattern = RegExp("あ" + str + "うえお");

2013年4月6日土曜日

[CoffeeScript]配列のプロパティやメソッド

CoffeeScriptの配列のプロパティやメソッドの使い方。

 1 array = [1..10]
 2 
 3 #### 配列の長さ
 4 array.length
 5 
 6 #### 要素を連結
 7 # 引数なしは、「,」で連結
 8 array.join()
 9 # 引数を指定するとその文字で連結
10 array.join('-')
11 
12 #### 指定した範囲の新しい配列を生成
13 # 開始インデックスはその値を含む(0始まり)
14 # 終了インデックスはその値を含まない
15 array.slice(2, 4)
16 
17 #### 配列同士の連結
18 array.concat [11..20]
19 
20 #### 配列の各要素の値を変更
21 # 配列の各要素を2倍
22 num * 2 for num in array
23 # 大文字に変換
24 c.toUpperCase for c in ['a', 'b', 'c']
25 
26 # 上の例と同じ事をmapメソッドで
27 array.map (n) -> n + 1
28 
29 #### フィルタをかけて新しい配列を生成
30 # 5以下の値だけを持つ配列を生成
31 num for num in array when (num <= 5)