
![機動戦士ガンダムUC (Mobile Suit Gundam UC) 5 [Blu-ray]](http://ecx.images-amazon.com/images/I/61muhMOrI%2BL._SL160_.jpg)
![戦国コレクション Vol.01 [DVD]](http://ecx.images-amazon.com/images/I/51QTNneyNsL._SL160_.jpg)

![銀魂' 13(完全生産限定版) [DVD]](http://ecx.images-amazon.com/images/I/5138LW5ZSpL._SL160_.jpg)
![機動戦士ガンダムUC 5 [DVD]](http://ecx.images-amazon.com/images/I/51kl2AlIAuL._SL160_.jpg)
![宇宙戦艦ヤマト 2199 (1) [Blu-ray]](http://ecx.images-amazon.com/images/I/51aVPbWIhUL._SL160_.jpg)

![銀魂’ 11(完全生産限定版) [DVD]](http://ecx.images-amazon.com/images/I/51-spD1t3CL._SL160_.jpg)

















thrift --gen php ~/dev/hbase-0.92.1/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
include_once $GLOBALS['THRIFT_ROOT'].'/packages/Hbase/Hbase_types.php';
./bin/start-hbase.sh ./bin/hbase start thrift
薫 $ jps 66321 Jps 65103 HMaster 65048 ThriftServer
<?php
$GLOBALS['THRIFT_ROOT'] = 'src/';
include 'gen-php/Hbase/Hbase_types.php';
include 'gen-php/Hbase/Hbase.php';
include 'src/transport/TSocket.php';
include 'src/transport/TBufferedTransport.php';
include 'src/protocol/TBinaryProtocol.php';
function hbase_test ()
{
$server = 'localhost';
$port = 9090;
try {
$socket = new TSocket ($server, $port);
$transport = new TBufferedTransport ($socket);
$protocol = new TBinaryProtocol ($transport);
$client = new HbaseClient ($protocol);
$transport->open ();
$tables = $client->getTableNames ();
var_dump ($tables);
} catch (TException $e) {
error_log ('TException');
error_log ($e);
} catch (Exception $e) {
error_log ('Exception');
error_log ($e);
}
}
hbase_test ();
FreeBSD で PHP から thrift を利用するには、 php5-thrift をインストールします。
Thrift については、 [2012-03-30-1] を読んで下さい。
cd /usr/ports/devel/php5-thrift/ sudo make install clean
sudo portinstall /usr/ports/devel/php5-thrift/
sudo portmaster /usr/ports/devel/php5-thrift/
FreeBSD で thrift を利用する場合には、 thrift をインストールします。
Thrift については、 [2012-03-30-1] を読んで下さい。
cd /usr/ports/devel/thrift/ sudo make install clean
sudo portinstall /usr/ports/devel/thrift/
sudo portmaster /usr/ports/devel/thrift/
[thrift]
thrift は、 RPC フレームワークです。
C++, PHP, Pel, Python, Ruby, Python , Java, JavaScript, Node.js, Haskell, Erlang, Cocoa, OCaml, Delphi などに対応しています。
https://thrift.apache.org/
thrift を使い方は、以下の流れににあります。
thrift --gen <language> <Thrift filename>
struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}
service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}
# Make an object
up = UserProfile(uid=1,
name="Test User",
blurb="Thrift is great")
transport = TSocket.TSocket("localhost", 9090)
transport.open()
# Use the service we already defined
service.store(up)
# Retrieve something as well
up2 = service.retrieve(2)
class UserStorageHandler : virtual public UserStorageIf {
public:
UserStorageHandler() {
// 初期化
}
void store(const UserProfile& user) {
printf("store\n");
}
void retrieve(UserProfile& _return, const int32_t uid) {
printf("retrieve\n");
}
};
int main(int argc, char **argv) {
int port = 9090;
shared_ptr handler(new UserStorageHandler());
shared_ptr processor(new UserStorageProcessor(handler));
shared_ptr transportFactory(
new TBufferedTransportFactory());
TSimpleServer server(processor,
serverTransport,
transportFactory,
protocolFactory);
return 0;
}
fetch http://nodejs.org/dist/v0.6.11/node-v0.6.11.tar.gz tar zxfp node-v0.6.11.tar.gz
cd /usr/ports/devel/libexecinfo sudo make install clean
sudo portinstall /usr/ports/devel/libexecinfo
sudo portmaster /usr/ports/devel/libexecinfo
cd node-v0.6.11/ ./configure gmake
var http = require ('http' );
http.createServer (
function (req, res) {
res.writeHead (200,
{'Content-Type': 'text/plain'}
);
res.end ('Hello World\n');
}
).listen (1337);
console.log ("Server running at http://localhost:1337/");
listen(1337. "127.0.0.1");
node hello.js
var http = require ('http' );
http.createServer (
function (req, res) {
res.writeHead (200,
{'Content-Type': 'text/html'}
);
res.write ('<html>');
res.write ('<title>Hello World</title>');
res.write ('<body>');
res.write ('<div>Hello</div>');
res.write ('</body>');
res.write ('</html>');
res.end ();
}
).listen (1337);
console.log ("Server running at http://localhost:1337/");
suコマンドを /sqlite_journals/is01root にインストールします。
エラーが発生した場合は、再度実行してください。
の確認が出るので、開始を押す。
異様に、時間がかかりました。
「 is01 rooter は応答していません」が
表示されたので、一度は、「待機」を選択し、
次に表示されたときは、「終了」を選択した。
もう一度、 IS01 rooter を起動し、
Step 1 をやり直します。
「インストールが完了しました。IS01を再起動してください。」が
表示されます。
スーパーユーザー (com.noshufou.android.su) が予期せず
停止しました。やり直してください。
が表示されました。
SuperUser のバージョンが新しすぎるかもしれません。
2系を入れ直して下さい。
[Git]
ソースコード管理ツールで、誤ったソースコードをしてしまった場合に、Gitでは、コミットを取り消すことができます。
| オプション | 意味 | HEAD | インデックス | ワーキングツリー |
| soft | HEAD の位置のみを変更します。 | 変更 | なし | なし |
| mixed | HEADの位置とインデックスを変更します。 | 変更 | 変更 | なし |
| hard | HEADの位置とインデックス、ワーキングツリーを変更します。 | 変更 | 変更 | 変更 |
薫 $ mkdir reset/ 薫 $ cd reset/ 薫 $ git init Initialized empty Git repository in /home/foo/tmp/Git/reset/.git/
薫 $ echo 1 > a.txt
薫 $ git add a.txt
薫 $ git commit -a -m '* 1st commit'
[master (root-commit) 51e5398] * 1st commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 a.txt
薫 $ echo 2 >a.txt
薫 $ git commit -a -m '* 2nd commit'
[master 12fc440] * 2nd commit
薫 $ git log -p | cat
commit 12fc440f86e9a04e7d45b5acaea55aa43597a886
Date: Tue May 8 00:53:25 2012 +0900
* 2nd commit
diff --git a/a.txt b/a.txt
index d00491f..0cfbf08 100644
+++ b/a.txt
@@ -1 +1 @@
-1
+2
Author: foo <foo@yahoo.com>
Date: Tue May 8 00:53:11 2012 +0900
* 1st commit
diff --git a/a.txt b/a.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
@@ -0,0 +1 @@
+1
薫 $ cat a.txt
2
薫 $ git log |cat
Author: foo <foo@yahoo.com>
Date: Tue May 8 00:53:25 2012 +0900
* 2nd commit
commit 51e5398a790e337ed7573baae6c55b0beb2871d8
Date: Tue May 8 00:53:11 2012 +0900
* 1st commit
薫 $ git reset --soft HEAD^
薫 $ cat a.txt 2
薫 $ git log |cat
commit 51e5398a790e337ed7573baae6c55b0beb2871d8
Date: Tue May 8 00:53:11 2012 +0900
* 1st commit
薫 $ cat a.txt 2
薫 $ git reset --hard HEAD^ HEAD is now at 51e5398 * 1st commit
薫 $ cat a.txt 1
薫 $ git log |cat
commit 51e5398a790e337ed7573baae6c55b0beb2871d8
Date: Tue May 8 00:53:11 2012 +0900
* 1st commit
薫 $
51e5398 HEAD@{0}: reset: moving to HEAD^
12fc440 HEAD@{1}: commit: * 2nd commit
51e5398 HEAD@{2}: commit (initial): * 1st commit
[Git]
ソースコードを改造してみたけど、やっぱり、気に入らなくて、とりあえず、元に戻したい!ってとき、ありますよね。
今回は、コミットしてなくて、ワーキングツリーのファイルしか変更してないときの操作です。
薫 $ cat a.txt 1
薫 $ echo 2 >a.txt
git checkout ファイル名
git checkout .
git checkout lib
薫 $ git checkout a.txt 薫 $ cat a.txt 1
[Git]
ソースコードマネージメントシステムを利用している人は、ソースコードをコミットした後に、「あ、しまった」と思うことが、多々あるのではないでしょうか。
しようもないタイプミスをしてしまった、という経験があるかと思います。
その結果、コミットしたあとに、タイプミスを修正して、再度、コミットする、といったことをしているでしょう。
Git では commit した後で、間違いに気づいたときに、直前のコミットを簡単にやりなおすことができます。
簡単に流れを紹介すると、以下のとおりです。
薫 $ mkdir demo 薫 $ cd demo 薫 $ git init 薫 $ ls -a ./ ../ .git/
薫 $ > main.c
int
main (int argc, char *argv[])
{
puts ("Hello");
return (0);
}
薫 $ ls
main.c
薫 $ cat main.c
int
main (int argc, char *argv[])
{
puts ("Hello");
return (0);
}
薫 $ git add main.c 薫 $ git commit -m '* Initial commit' [master (root-commit) 4afe4d0] * Initial commit 1 file changed, 6 insertions(+) create mode 100644 main.c
薫 $ ed main.c
68
1
int
i
#include <stdio.h>
^C
?
w
87
q
薫 $ cat main.c
#include <stdio.h>
int
main (int argc, char *argv[])
{
puts ("Hello");
return (0);
}
薫 $ git commit --amend -a -m '* Initial commit' [master 7514217] * Initial commit 1 file changed, 7 insertions(+) create mode 100644 main.c
薫 $ git log -p
commit 75142173486f1ebce2e135439609175bb690ca9c
Author: foo <foo@gmail.com>
Date: Thu May 3 23:41:12 2012 +0900
* Initial commit
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..553aa14
--- /dev/null
+++ b/main.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+int
+main (int argc, char *argv[])
+{
+ puts ("Hello");
+ return (0);
+}
[Git]
FreeBSD のマシンにおいてある Git のリポジトリの中身を
Web の UI で閲覧したかったので、
FreeBSD の apache で見るようにしてみました。
FreeBSD で動かす、とかいっていますが、別に、 FreeBSD 専用の話ではなく、 Linux でも同じです。
cd public_html/foo git init git add foo.c git commit foo.c
cp -r /usr/local/share/examples/git/gitweb/gitweb.cgi . cp -r /usr/local/share/examples/git/gitweb/static .
# absolute fs-path which will be prepended to the project path #our $projectroot = "/pub/scm"; our $projectroot = "/pub/git";
$projectroot = '/home/whoami/public_html/foo';
[Git]
ソースコードに実験的なコードを追加するときに、マスターの Git のリポジトリにコミットしたくないケースがあります。
git では、リポジトリ内に複数のブランチが作成できます。
git branch foo
git branch
* master foo
git checkout foo
vim foo.c git commit -a
git branch master
git merge foo
% git merge list Updating ec4c83a..c136832 Fast-forward .gitignore | 5 + 2 files changed, 272 insertions(+), 214 deletions(-)
git branch -d foo
git branch -D bar
[Git]
Git でソースコードを少しだけ管理してみます。
ここでは、 Git の操作について説明します。
git version 1.7.9.4 を利用しています。
インストールや設定については、下記のページを参照してください。
mkdir project cd project
git init
./ ../ HEAD branches/ config description hooks/ info/ objects/ refs/
vim .git/description
vi Makefile vi foo.c
git add Makefile foo.c git commit
git commit -a
git diff
git tag 1.0
[Git]
Git をインストールしたら、最初にやっておくと便利な設定について、メモをしておきます。
インストールについては、下記のページを参照してください。
git config --global user.name "foo" git config --global user.email "foo@yahoo.co.jp"
git config --global color.ui auto
git config --global alias.co checkout git config --global alias.ci commit
source /usr/local/share/git-core/contrib/completion/git-completion.bash
.*.sw? *~ *.core *.o
git config --global core.excludesfile ~/.gitignore
[Git]
FreeBSD 9.0 の環境に Git が入ってなかったので、FreeBSD に git をインストールします。
Git (ギット) は、プログラムなどのソースコード管理を行うための分散型バージョン管理システムです。
Linux カーネルのソースコードを管理することが目的で、リーナス・トーバルズによって開発されました。
cd /usr/ports/devel/git sudo make install clean
sudo portinstall /usr/ports/devel/git
sudo portmaster /usr/ports/devel/git
HBase のクラスタの情報を確認するには、 status を利用します。
status コマンドは、 'simple', 'summary', 'detailed' を
指定することができます。
デフォルトでは、 'summary' が表示されます。
kaworu% ./bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Version 0.92.1, r1298924, Fri Mar 9 16:58:34 UTC 2012
hbase(main):001:0> status
1 servers, 0 dead, 2.0000 average load
hbase(main):002:0> status 'simple'
1 live servers
galle:44996 1335578697631
requestsPerSecond=0, numberOfOnlineRegions=2, usedHeapMB=33, maxHeapMB=991
0 dead servers
Aggregate load: 0, regions: 2
hbase(main):003:0> status 'summary'
1 servers, 0 dead, 2.0000 average load
hbase(main):010:0> status 'detailed'
version 0.92.1
0 regionsInTransition
master coprocessors: []
1 live servers
galle:44996 1335578697631
requestsPerSecond=0, numberOfOnlineRegions=2, usedHeapMB=33, maxHeapMB=991
-ROOT-,,0
numberOfStores=1, numberOfStorefiles=1, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=52, writeRequestsCount=1, rootIndexSizeKB=0, totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, coprocessors=[]
numberOfStores=1, numberOfStorefiles=0, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=8, writeRequestsCount=0, rootIndexSize
HBase を Java 意外から利用する場合、
HTTP REST から使うのが簡単かもしれません。
./bin/start-hbase.sh ./bin/hbase rest start
./bin/hbase rest start -p 4080
./bin/hbase-daemon.sh start rest -p <port>
./bin/hbase-daemon.sh stop rest
curl http://localhost:8080/
test
curl http://localhost:8080/test/row1/
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell timestamp="1333813191503" column="Y2Y6YQ==">dmFsdWUxXzE=</Cell><Cell timestamp="1333796735249" column="Y2Y6YQ==">dmFsdWUx</Cell><Cell timestamp="1333814121066" column="Y2Y6YzE=">YzFfdmFsdWUx</Cell></Row></CellSet>
HBase shell は、JRuby の IRB にいくつかの HBase 固有のコマンドを追加したものです。
irb のほうは、backspace が効くけど、 hbase shell だと backspace が効かない。
C-h で消せるからいいけど。
何かの設定が悪さしてるのか、他の設定が必要なのか。
あと不思議なことに C-z で一度、サスペンドしてからフォアグラウンドに戻すと、入力がすぐにエコーバックされなくなる。
C-z するなってことなのか。
HBase で Table の存在を調べるには、 exists を利用します。
hbase(main):016:0> list TABLE test 1 row(s) in 0.0160 seconds hbase(main):017:0> exists 'test' Table test does exist 0 row(s) in 0.0280 seconds hbase(main):018:0> exists 'test2' Table test2 does not exist 0 row(s) in 0.0150 seconds
MySQL でいう show tables は、 HBase では、 list です。
まず、 Hbase の shell を起動します。
list すると、何もありませんが、 create で test テーブルを作成します。
次の list では、 TABLE に test が確認できました。
hbase(main):006:0> list TABLE 0 row(s) in 0.0150 seconds hbase(main):007:0> create 'test', 'cf' 0 row(s) in 1.0720 seconds hbase(main):008:0> list TABLE test 1 row(s) in 0.0150 seconds
Hbase を動かしてみました。
動作環境は、 CentOS + OpenJDK です。
HBase は、 Google の BigTable をモデルにして開発された、
分散、バージョン、カラム指向ストアです。
wget http://ftp.jaist.ac.jp/pub/apache/hbase/hbase-0.92.1/hbase-0.92.1.tar.gz tar zxfp hbase-0.92.1.tar.gz cd habse-0.92.1
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>file:///home/kaworu/tmp/hbase</value> </property> </configuration>
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/
# csh setenv JAVA_HOME /usr/local/diablo-jdk1.6.0/ # sh export JAVA_HOME=/usr/local/diablo-jdk1.6.0/
薫% ./bin/start-hbase.sh starting master, logging to /home/kaworu/tmp/hadoop/hbase-0.92.1/bin/../logs/hbase-kaworu-master-u0.out
薫% ./bin/hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.92.1, r1298924, Fri Mar 9 16:58:34 UTC 2012 hbase(main):001:0>
create 'test', 'cf'
hbase(main):004:0> get 'test', 'cf' COLUMN CELL 0 row(s) in 0.0660 seconds hbase(main):005:0> put 'test', 'row1', 'cf:a', 'value1' 0 row(s) in 0.0420 seconds hbase(main):006:0> put 'test', 'row2', 'cf:b', 'value2' 0 row(s) in 0.0090 seconds hbase(main):007:0> put 'test', 'row3', 'cf:c', 'value3' 0 row(s) in 0.0130 seconds
hbase(main):008:0> scan 'test' ROW COLUMN+CELL row1 column=cf:a, timestamp=1333796735249, value=value1 row2 column=cf:b, timestamp=1333796755412, value=value2 row3 column=cf:c, timestamp=1333796768368, value=value3 3 row(s) in 0.0430 seconds
hbase(main):010:0> get 'test', 'row1' COLUMN CELL cf:a timestamp=1333796735249, value=value1 1 row(s) in 0.0060 seconds
hbase(main):011:0> disable 'test' 0 row(s) in 2.1210 seconds
hbase(main):012:0> exit
薫% ./bin/stop-hbase.sh stopping hbase............
最終更新時間: 2012-05-17 22:40