RethinkDBのClientDriver(JavaScript)

表題の通り。先日インストールしたRethinkDBのClientDriverをインストールする。

■ 環境

  • RethinkDB 2.0.0
  • node v0.12.2
  • Mac OSX (10.9.5)

nodeは以前のエントリ『Homebrewでnodebrew』の通り、nodebrewで現時点での最新版をインストールした。

■ インストール

$ npm install rethinkdb
rethinkdb@2.0.0 node_modules/rethinkdb
└── bluebird@2.9.24

■ 動作確認

記載されているサンプルコードをそのまま使用してみる。

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
  if(err) throw err;
  r.db('test').tableCreate('tv_shows').run(conn, function(err, res) {
    if(err) throw err;
    console.log(res);
    r.table('tv_shows').insert({ name: 'Star Trek TNG' }).run(conn, function(err, res)
    {
      if(err) throw err;
      console.log(res);
    });
  });
});

これをローカルに”rethinkdb.js“として保存した。

別途rethinkdbコマンドでサーバプロセスを起動し、下記のようにサンプルコードを実行する。

$ node rethinkdb.js
{ config_changes: [ { new_val: [Object], old_val: null } ],
  tables_created: 1 }
{ deleted: 0,
  errors: 0,
  generated_keys: [ '810104c1-ac45-4b7e-aeff-26d45db9db1d' ],
  inserted: 1,
  replaced: 0,
  skipped: 0,
  unchanged: 0 }

test“データベースに”tv_shows“テーブルを作成し、データを1件挿入する事ができたようである。

コンソールはそのまま返ってこなかった。ソースを見ると、データを挿入した後に特に”close“等の処理がないからであろう。”Ctrl-C“で中断させて終わらせた。

以上。

■ 関連

awscliを複数profileで使用する

表題の通り。複数の案件をこなしていると、AWSのアカウントを複数使用するようになってくる。ManagementConsoleでの作業だけであれば、ログインするアカウントを都度変更すれば良いのだが、awscliを使うとなると毎回設定を変えるのは大変だ。そんな時に使用しているプロファイル機能。一度設定してしまえば、いつも使用しているコマンドにちょっとオプションを追加するだけで、別アカウントで実行可能なので便利だ。

■ 環境

  • awscli 1.7.18
  • Mac OSX (10.9.5)

■ 設定

awscliをインストール後、下記コマンドで設定を行ったであろう。

$ aws configure

ここで行った設定は下記ファイルに記載されているはずだ。

/Users/[user]/.aws/config

このファイルに”default“の項目に書き込まれているであろう。

$ cat /Users/withsin/.aws/config
[default]
output = json
region = ap-northeast-1
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

■ profile

前述のファイルに同様の別アカウント設定を追加する。追加する”profile“名称はわかりやすく、かつキーボードで打ちやすいものがよいだろう。自身の場合は、下記の順番で名称を決めている。

  1. 会社の略称
  2. プロジェクト名称(略称)

ちなみに”default“には普段使用している自身のアカウントを設定している。というわけで追加したところ下記のようになっている。

$ cat /Users/withsin/.aws/config
[default]
output = json
region = ap-northeast-1
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[profile aaa]
output = json
region = ap-northeast-1
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[profile bbb]
output = json
region = ap-northeast-1
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

実際に使用する時には、上記の”profile“で設定した名称をオプションで追加する。

$ aws s3 ls
2013-07-08 22:48:08 withsin
$
$ aws s3 ls --profile aaa
2012-08-12 05:35:54 projectA
2014-12-16 23:24:53 projectB
2013-12-24 22:19:25 projectC
2012-08-12 07:56:03 projectD
  :
$

以上。

■ 関連

RethinkDBをMacにインストール

表題の通り。JSON型のデータベースで、リアルタイムWebアプリケーション向けだそうだ。気になる。”2.0“がリリースされたとの事なのでインストールしてどんなものか使ってみたい。

■ 環境

  • RethinkDB 2.0.0
  • Mac OSX (10.9.5)
  • Homebrew

■ インストール

公式ページにはパッケージもあるが、Homebrewでインストール可能なのでこちらで行う。

$ brew update
$ brew info rethinkdb
rethinkdb: stable 2.0.0-1 (bottled)
http://www.rethinkdb.com/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/rethinkdb.rb
==> Dependencies
Build: boost ✘
Required: openssl ✘, icu4c ✘
==> Caveats
To have launchd start rethinkdb at login:
    ln -sfv /usr/local/opt/rethinkdb/*.plist ~/Library/LaunchAgents
Then to load rethinkdb now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.rethinkdb.plist
$
$ brew insall rethinkdb

■ 動作確認

公式ページの『Thirty-seconds quickstart』を読んでみると、rethinkdbのサーバプロセス起動後に”localhost:8080“にブラウザでアクセスしてみると何か見られるらしい。

$ rethinkdb
Recursively removing directory /Users/withsin/rethinkdb_data/tmp
Initializing directory /Users/withsin/rethinkdb_data
Running rethinkdb 2.0.0-1 (CLANG 6.0 (clang-600.0.57))...
Running on Darwin 13.4.0 x86_64
Loading data from directory /Users/withsin/rethinkdb_data
warn: Cache size does not leave much memory for server and query overhead (available memory: 359 MB).
warn: Cache size is very low and may impact performance.
Listening for intracluster connections on port 29015
Listening for client driver connections on port 28015
Listening for administrative HTTP connections on port 8080
Listening on addresses: 127.0.0.1, ::1
To fully expose RethinkDB on the network, bind to all addresses by running rethinkdb with the `--bind all` command line option.
Server ready, "sin_local_i4z" b486e3e1-807f-493f-a9a4-81390d374d6e

起動したのでブラウザでアクセスする。

rethinkdb-001

確かにアクセスできた。

でもその後の『Run some queries』がよくわからない。。GoogleChromeを使用しているのだが、”Data Explorer tab“が何を示しているのかがわからない。。”JavaScriptコンソール“で記載されているコマンドを実行してみたがイメージしている結果は得られなかったし、”test“データベースにテーブルも作成できていないようだ。

しかし、”localhost:8080“の画面からはテーブルを作成することもできた。とりあえずはよしとしておこう。次はClientDriverでアクセスし操作を行ってみたい。

以上。

■ 関連

MacにRedisをインストール

表題の通り。HomebrewのFormulaファイルにRedisの”3.0.0“が来たのでインストールする。

■ 環境

  • Redis 3.0.0
  • Mac OSX (10.9.5)
  • Homebrew

■ インストール

ローカルのFormulaファイルを更新して確認する。

$ brew update
$ brew info redis
redis: stable 3.0.0 (bottled), HEAD
http://redis.io/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/redis.rb
==> Caveats
To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf

3.0.0“がインストール可能なので実行する。

$ brew install redis
==> Downloading https://homebrew.bintray.com/bottles/redis-3.0.0.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring redis-3.0.0.mavericks.bottle.tar.gz
==> Caveats
To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf
==> Summary
    /usr/local/Cellar/redis/3.0.0: 9 files, 892K

■ 動作確認

先日のエントリと同様なので省略。

これでアプリケーションの動作確認がローカルのMacだけでも容易に可能だ。

以上。

■ 関連

RedisのPUBSUBコマンド

表題の通り。先日のエントリで『RedisのPUBSUBコマンドは後から追加されている』という事を書いた。実際にどういう結果を得られるのか確認してみる。

■ 環境

  • Redis 3.0.0
  • CentOS 6.4

■ HELPを確認

HELPコマンドで確認してみる。

127.0.0.1:6379> HELP PUBSUB

  PUBSUB subcommand [argument [argument ...]]
  summary: Inspect the state of the Pub/Sub subsystem
  since: 2.8.0
  group: pubsub

127.0.0.1:6379>

これだけではよくわからない。”subcommand“には何が指定できるのか?これより詳細なHELPを確認したいのだが方法がわからないので公式ページのマニュアルを参照する。

■ subcommand

PUBSUBコマンドの”subcommand”に指定できるのは下記の3つのようである。

  • CHANNELS
  • NUMSUB
  • NUMPAT

それぞれ確認してみる。

■ CHANNELS

PUBSUB  CHANNELS  [pattern]

チャンネルの一覧を取得することができる。サブコマンドの名称からもイメージが付きやすいだろう。別のターミナルでSUBSCRIBEコマンドを使用してチャンネルを登録した後に実行してみると下記のような結果になる。

127.0.0.1:6379> pubsub channels
1) "test"
127.0.0.1:6379>

test“チャンネルが存在している事がわかる。”pattern“でも出来るとの事なので試してみる。

127.0.0.1:6379> pubsub channels t*
1) "test"
127.0.0.1:6379>

pattern“に一致するチャンネルが全て取得できるようだ。ちなみにチャンネルが一つも存在しない状態で試してみると下記のような結果となる。

127.0.0.1:6379> pubsub channels
(empty list or set)
127.0.0.1:6379>

ここからもオンラインでのPub/Subとしてのみ使用可能だという事がわかるであろう。

■ NUMSUB

PUBSUB  NUMSUB  [channel-1 ... channel-N]

指定したチャンネルを登録(SUBSCRIBE)しているクライアントの数を取得できる。

127.0.0.1:6379> pubsub numsub test test2
1) "test"
2) (integer) 1
3) "test2"
4) (integer) 0
127.0.0.1:6379>

test“チャンネルを登録しているクライアントは”1“、”test2“チャンネルを登録しているクライアントは”0“である事がわかる。

■ NUMPAT

PUBSUB  NUMPAT

いくつの”pattern“が登録されているかを取得する事ができる。まずは登録側は下記のようにPSUBSCRIBEコマンドで登録してみている。

127.0.0.1:6379> psubscribe test* aha*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "test*"
3) (integer) 1
1) "psubscribe"
2) "aha*"
3) (integer) 2

上記のように2つの”pattern“を登録してみたところ、下記のような結果を得る事ができた。

127.0.0.1:6379> pubsub numpat
(integer) 2
127.0.0.1:6379>

pattern“数はわかるが、実際にどういった”pattern“が登録されているかはわからないようである。少々コマンドとしては微妙な感じがしなくもない。

以上。

■ 関連