Piro / YUKI Hiroshi
null+****@clear*****
Wed Jul 30 02:28:54 JST 2014
Piro / YUKI Hiroshi 2014-07-30 02:28:54 +0900 (Wed, 30 Jul 2014) New Revision: 2520e81fb5fea0162e6a9d3b1c169fb9adcc1056 https://github.com/droonga/presentation-droonga-meetup-1-introduction/commit/2520e81fb5fea0162e6a9d3b1c169fb9adcc1056 Message: Add demonstration steps Added files: demo/index.html Modified files: introduction.md Added: demo/index.html (+65 -0) 100644 =================================================================== --- /dev/null +++ demo/index.html 2014-07-30 02:28:54 +0900 (a310e12) @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>TODO List</title> +<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> +<p><input type="text" size="30" id="title-field"><button id="add-button">登録</button></p> +<p><input type="text" size="20" id="search-field"> + <button id="search-button">検索</button></p> +<div id="result"></div> +<script type="text/javascript"><!-- + var base = 'http://' + location.hostname + ':10041'; + + // レコードを追加する。 + $('#add-button').click(function() { + var title = $('#title-field').val(); + if (!title) + return; + $.ajax({ + url: base + '/d/load', + data: { + table: 'Topic', + values: JSON.stringify([{ + _key: title, + title: title + }]) + }, + dataType: 'jsonp', + success: function() { + $('#title-field').val(''); + } + }); + }); + + // レコードを検索する。 + $('#search-button').click(function() { + var data = { + table: 'Topic', + output_columns: 'title', + limit: 10 + }; + var term = $('#search-field').val(); + if (term) + data.filter = 'title @ ' + JSON.stringify(term); + $.ajax({ + url: base + '/d/select', + data: data, + dataType: 'jsonp', + success: function(result) { + if (!result) + return; + var body = result[1]; + var searchResult = body[0]; + var count = searchResult[0][0]; + var topics = searchResult.slice(2); + $('#result') + .empty() + .append($('<p>').text(count + '件見つかりました。')) + .append($('<ul>') + .append(topics.map(function(topic) { + var title = topic[0]; + return $('<li>').text(title); + }))); + } + }); + }); +// --></script> \ No newline at end of file Modified: introduction.md (+102 -1) =================================================================== --- introduction.md 2014-07-30 01:51:42 +0900 (5f6def1) +++ introduction.md 2014-07-30 02:28:54 +0900 (2b7e60f) @@ -182,12 +182,113 @@ GroongaからDroongaへ * Groongaベースの アプリケーションを作成 + * Droongaクラスタを構築 * バックエンドをDroongaに移行 - * Droongaクラスタを構築 * データを移行 * アプリケーションの接続先変更 +([Groongaユーザ向けの、はじめてのDroonga](http://www.clear-code.com/blog/2014/7/11.html) + と同内容です) +# デモ:用意する物 + + * サーバ2つ + * 192.168.100.50 + * 192.168.100.51 + +## 実行するコマンド + +Groongaのインストール + + % sudo apt-get -y install software-properties-common + % sudo add-apt-repository -y universe + % sudo add-apt-repository -y ppa:groonga/ppa + % sudo apt-get update + % sudo apt-get -y install groonga + +データベース作成 + + % mkdir -p $HOME/groonga/db/ + % groonga -n $HOME/groonga/db/db quit + +テーブル定義 + + % groonga $HOME/groonga/db/db table_create --name Topic --flags TABLE_PAT_KEY --key_type ShortText + % groonga $HOME/groonga/db/db column_create --table Topic --name title --flags COLUMN_SCALAR --type ShortText + % groonga $HOME/groonga/db/db table_create --name Term --flags TABLE_PAT_KEY --key_type ShortText -- d ef aul t_tokenizer TokenBigram --normalizer NormalizerAuto + % groonga $HOME/groonga/db/db column_create --table Term --name topic_title --flags "COLUMN_INDEX|WITH_POSITION" --type Topic --source title + +GroongaをHTTPサーバとして起動 + + % groonga -p 10041 -d --protocol http $HOME/groonga/db/db + +Webサーバを起動 + + % ruby -run -e httpd -- --port 8080 demo/ & + +Droongaのインストール + + (on 192.168.100.50, 192.168.100.51) + % sudo apt-get update + % sudo apt-get -y upgrade + % sudo apt-get install -y libgroonga-dev ruby ruby-dev build-essential nodejs nodejs-legacy npm + % sudo gem install droonga-engine + % sudo npm install -g droonga-http-server + % mkdir ~/droonga + % droonga-engine-catalog-generate --hosts=192.168.100.50,192.168.100.51 --output=~/droonga/catalog.json + +サービス起動 + + (on 192.168.100.50) + % export host=192.168.100.50 + % export DROONGA_BASE_DIR=$HOME/droonga + % droonga-engine \ + --host=$host \ + --log-file=$DROONGA_BASE_DIR/droonga-engine.log \ + --daemon \ + --pid-file=$DROONGA_BASE_DIR/droonga-engine.pid + % droonga-http-server \ + --port=10042 \ + --receive-host-name=$host \ + --droonga-engine-host-name=$host \ + --production=production \ + --daemon \ + --pid-file=$DROONGA_BASE_DIR/droonga-http-server.pid + + (on 192.168.100.51) + % export host=192.168.100.51 + % export DROONGA_BASE_DIR=$HOME/droonga + % droonga-engine \ + --host=$host \ + --log-file=$DROONGA_BASE_DIR/droonga-engine.log \ + --daemon \ + --pid-file=$DROONGA_BASE_DIR/droonga-engine.pid + % droonga-http-server \ + --port=10042 \ + --receive-host-name=$host \ + --droonga-engine-host-name=$host \ + --production=production \ + --daemon \ + --pid-file=$DROONGA_BASE_DIR/droonga-http-server.pid + +動作確認 + + % curl "http://192.168.100.50:10042/droonga/system/status" + +データの引き継ぎに必要なツール + + % sudo gem install grn2drn droonga-client + +データの引き継ぎ + + % grndump ~/groonga/db/db | grn2drn | \ + droonga-send --server=192.168.100.50 + +接続先の切り替え + + % vi demo/index.html + - var base = 'http://' + location.hostname + ':10041'; + + var base = 'http://' + location.hostname + ':10042'; -------------- next part -------------- HTML����������������������������...Download