2014年11月15日土曜日

[kdb] kdbメモ

kdb+関連メモあれこれ

・使用されているnamespaceを一覧表示
q) key `
`q`Q`h`o


・namespaceで定義したテーブルを呼ぶ
テーブルを呼ぶときは同一namespaceからでもnamespaceをつける必要がある。
一般に、namespaceはfunctionだけに使用すべきであり、tables/dataはroot namespaceに定義すべき。
cf) https://groups.google.com/forum/#!searchin/personal-kdbplus/namespace/personal-kdbplus/8ottIcH3qkk/0460pMTJR9wJ


・nullの比較
マイナスの比較をする場合、null値はマイナス扱いとなるため注意する。nullを除外するにはnegで符号を反転させるとよい
q)1 < 0
0b
q)-1 < 0
1b
q)0N < 0
1b

q)(neg -1) > 0
1b
q)(neg 0N) > 0
0b


・Browserからのアクセス(HTTP query)
変数一覧
http://host:port/

クエリ
http://host:port/?[query]
ex) http://localhost:5001/?.z.z


・"1行"の処理
1行の処理でも後ろから処理される。変数の連続代入を行う場合は気をつけて使う必要がある。
※"1行"という表現は微妙ですが、コンソールであれば次の";"までの処理です
q) i: 0 1 2
q) (i[1]:3; i[2]:i[1]+1)   / [1]に3を代入し、[2]を"[1]+1"に変更したい
3 2
q) i   / [2]が変わっていない
0 3 2

q)i: 0 1 2
q)(i[2]:i[1]+1; i[1]:3)
4 3
q)i
0 3 4   / 後ろから処理されることを意識すればOK

q) i: 0 1 2
q)(i[2]:1+i[1]:3)   / この書き方のほうが間違えが少ないかも
q)i
0 3 4

2014年11月10日月曜日

[Linux] find -exec で複数行コマンド/ユーザー定義関数を実行する

find -exec で複数行コマンド/ユーザー定義関数を実行するためのメモ
※bashのみ対象

find -execはシェルを実行せずに直接コマンドを実行しているため、シェルで定義したものは使えないらしい。
 ・UNIX/Linux の find -exec の引数にはシェルの構文を使えない.
 http://ameblo.jp/noocyte/entry-10024398713.html

そこで以下の流れで実行することにする

□複数行コマンド
(1) exec内でシェルを実行
サンプル:カレント以下のファイル名と中身をtailする
bashのシンボリックリンクであるshで実行すると、~.bashrcを読み込まない
$ find . -type f -exec sh -c "echo; echo {}; tail -3 {}" \;
$ find . -type f -exec bash -c "echo; echo {}; tail -3 {}" \;

□ユーザー定義関数
(1) 関数を定義しexportする
$ function test1() {
>     echo; echo $1; tail -3 $1;
> }
$ export -f test1

(2) exec内でシェルを実行
$ find . -type f -exec sh -c "test1 {}" \;

(3) 不要なら削除
$ unset test1

2014年11月4日火曜日

[kdb] rlwrap の CentOS7 へのインストール

コンソールでqを起動する場合は、rlwrap を使うと便利
- kxwikiより
> How do I recall and edit keyboard input?
> rlwrap l64/q -p 5001

□ インストール方法
yumでインストールできないので、ソースコードから。

(1) 公式サイトからDL
http://freecode.com/projects/rlwrap
rlwrap-0.41.tar.gz
※EPELレポジトリを追加すればyumでもインストール可

(2) 解凍→インストール?
README or INSTALL ファイルを参照
readlineのライブラリがないとのエラーがでた場合は(3)へ

(3) readlineのインストール
readline はデフォルトでインストールされているようだが、readline-develが必要らしい
cf.) http://stackoverflow.com/questions/26129623/
yum install readline-devel

(4) インストール
./configure
make
make install

(5) 確認
whereis rlwrap
  rlwrap: /usr/local/bin/rlwrap

(6) alias
使いやすいようにaliasを設定しておく
alias rq='rlwrap q'

[kdb] svnでcode.kx.comにアクセスする

svnでcode.kx.comにアクセスする方法

websvn通常のURL
http://code.kx.com/wsvn/code/

svn用URL
http://code.kx.com/svn/