ドラゴンズドグマ(数量限定特典『バイオハザード6』体験版用DLコード同梱)
ドラゴンズドグマ(数量限定特典『バイオハザード6』体験版用DLコード同梱)

 ドラゴンクエストモンスターズ テリーのワンダーランド3D
ドラゴンクエストモンスターズ テリーのワンダーランド3D

 ポケットモンスターホワイト2
ポケットモンスターホワイト2

 ペルソナ4 ザ・ゴールデン 特典 PlayStation Vita用スクリーン(タッチスクリーン)オリジナル保護シート(壁紙付き)付き
ペルソナ4 ザ・ゴールデン 特典 PlayStation Vita用スクリーン(タッチスクリーン)オリジナル保護シート(壁紙付き)付き

 TOKYO JUNGLE (トーキョージャングル) (初回生産分限定封入特典「ポメラニアン2色セット(ホワイト・ブラック)」同梱) 特典 Amazon.co.jpオリジナル 「超肉食の猛者
TOKYO JUNGLE (トーキョージャングル) (初回生産分限定封入特典「ポメラニアン2色セット(ホワイト・ブラック)」同梱) 特典 Amazon.co.jpオリジナル 「超肉食の猛者"クロコダイル"」がダウンロードできるプロダクトコード付き

 MARIO TENNIS OPEN (マリオテニスオープン)
MARIO TENNIS OPEN (マリオテニスオープン)

 神次元ゲイム ネプテューヌV(神限定版) 予約特典ネプテューヌビジュアルブック付き
神次元ゲイム ネプテューヌV(神限定版) 予約特典ネプテューヌビジュアルブック付き

 ドラゴンクエストX 目覚めし五つの種族 オンライン (Wii USBメモリー16GB同梱版) (封入特典:ゲーム内アイテムのモーモンのぼうし同梱)
ドラゴンクエストX 目覚めし五つの種族 オンライン (Wii USBメモリー16GB同梱版) (封入特典:ゲーム内アイテムのモーモンのぼうし同梱)

 Xbox Live 3500 マイクロソフト ポイント カード【プリペイドカード】(NEW)
Xbox Live 3500 マイクロソフト ポイント カード【プリペイドカード】(NEW)

 ポケットモンスターブラック2
ポケットモンスターブラック2

   

2012-04-02

2012-04-02

PHP から Thrift で HBase のテーブルを取得する

[HBase][thrift][php]

thrift によるソースコード生成


thrift コマンドで PHP 用のコードを生成します。

thrift --gen php ~/dev/hbase-0.92.1/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

gen-php/Hbase/Hbase.php の下の行をコメントアウトしてしまう。

include_once $GLOBALS['THRIFT_ROOT'].'/packages/Hbase/Hbase_types.php';

HBase の起動


HBase を起動したあとに、 thrift 用のプロセスも起動します。

./bin/start-hbase.sh
./bin/hbase start thrift

HMaster と ThriftServer が起動します。

薫 $ jps
66321 Jps
65103 HMaster
65048 ThriftServer

サンプルコード


ThriftServer に接続して、テーブル名だけを取得してくるだけのプログラムです。
あらかじめ hbase shell などで create でテーブルを作成しておいてください。

<?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 ();

2012-04-01

2012-04-01

FreeBSD php5-thrift をインストールする

[FreeBSD][thrift][php]

FreeBSD で PHP から thrift を利用するには、 php5-thrift をインストールします。
Thrift については、 [2012-03-30-1] を読んで下さい。

インストール


cd /usr/ports/devel/php5-thrift/
sudo make install clean

portinstallコマンドでインストールする場合
sudo portinstall /usr/ports/devel/php5-thrift/

portmasterコマンドでインストールする場合
sudo portmaster /usr/ports/devel/php5-thrift/

参考サイト


合わせて読む


2012-03-31

2012-03-31

FreeBSD thrift をインストールする

[FreeBSD][thrift]

FreeBSD で thrift を利用する場合には、 thrift をインストールします。
Thrift については、 [2012-03-30-1] を読んで下さい。

インストール


cd /usr/ports/devel/thrift/
sudo make install clean

portinstallコマンドでインストールする場合
sudo portinstall /usr/ports/devel/thrift/

portmasterコマンドでインストールする場合
sudo portmaster /usr/ports/devel/thrift/

参考サイト


合わせて読む


2012-03-30

2012-03-30

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 コンパイラをインストールする
  • thrift インタフェース .thrift ファイルを作成する
  • thrift を用いて、スケルトンを生成する
  • スケルトンを利用して、サーバ、クライアントを実装する

thrift コンパイラ


各モジュール間のインタフェースを .thrift ファイルで定義し、 thrift コンパイラで、RPC サーバとクライアントのコードを自動生成できます。

その生成されたコードを用いて、コーディングします。

データ型


インタフェース定義で利用できるデータ型は、以下のとおりです。

  • 基本データ型
  • 構造体
  • コンテナ
    • list
    • set
    • map
  • 例外
thrift で扱う基本のデータ型は、以下のとおりです。
すべての言語で使える主要な型です。

  • bool: ブール値 (true or false)
  • byte: 8-bit 符号付き整数
  • i16: 16-bit 符号付き整数
  • i32: 32-bit 符号付き整数
  • i64: 64-bit 符号付き整数
  • double: 64-bit 浮動小数点
  • string: UTF-8 エンコーディングのテキスト文字列
特別な型

  • binary: 非エンコードバイト列

thrift ファイルから生成する


thrift ファイルからソースコードを生成するには、 thrift コマンドを利用します。
生成したい言語を指定します。

thrift --gen <language> <Thrift filename>


Thrift 定義ファイル


struct UserProfile {
	1: i32 uid,
	   2: string name,
	   3: string blurb
}
service UserStorage {
	void store(1: UserProfile user),
	     UserProfile retrieve(1: i32 uid)
}

Python クライアント


# 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)

C++ サーバ


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;
}

合わせて読む


Referrer (Inside): [2012-04-01-1] [2012-03-31-1]

2012-03-29

2012-03-29

FreeBSD で Node.js をビルドする方法

[JavaScript][Node.js]

オフィシャルサイト


http://nodejs.org/

ダウンロード


http://nodejs.org/#download

fetch http://nodejs.org/dist/v0.6.11/node-v0.6.11.tar.gz
tar zxfp node-v0.6.11.tar.gz

libexecinfo の インストール


node.js のビルドに libexecinfo が必要になるため、
インストールします。

cd /usr/ports/devel/libexecinfo
sudo make install clean

portinstallコマンドでインストールする場合
sudo portinstall /usr/ports/devel/libexecinfo

portmasterコマンドでインストールする場合
sudo portmaster /usr/ports/devel/libexecinfo

参考サイト


ビルド


cd node-v0.6.11/
./configure
gmake


out/Release/node にバイナリが作られる。
カレントディレクトリに out/Release/node へのシンボリックリンク node が作られます。

サンプルソース


hello.js は、
1337 で Http Server を起動して、
Hello World を返すだけのサンプルコードです。

hello.js

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/");

localhost のところは、適当に読み替えてください。

サンプルにある listen の呼び出しで、127.0.0.1 を
指定するとローカルホストからしかつながらなくなってしまう
ので、注意が必要です。
指定しなければ、リモートホストからでも接続できます。
listen(1337. "127.0.0.1");

スクリプト起動


node hello.js

ブラウザからのアクセス


ブラウザからアクセスしてみましょう。

http://localhost:1337/

以上で、node.js の Hello world でした。

HTMLを出力してみる


hello2.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/");

2012-03-28

2012-03-28

IS01 root 取得

[Android][IS01]

au IS01 rooter のダウンロード


IS01のブラウザで au IS01 rooter をダウンロードします。

au IS01 rooter アプリ本体(IS01root_002.apk)
http://mobilehackerz.jp/contents/Software/Android/IS01root


アストロファイルマネージャ


ファイルマネージャをインストールします。
アストロファイルマネージャo
https://play.google.com/store/apps/details?id=com.metago.astro&hl=ja

設定の変更


設定からアプリケーション→提供元不明のアプリにチェックを入れてください。

設定のアプリケーションの開発→の USB デバッグ のチェックを入れてください。

au IS01 rooter のインストール


アストロファイルマネージャを起動します。
IS01root_002.apk を実行します。
アストロファイルマネージャで、 apk を / から検索すれば、
すぐに見つけられます。

おそらく、以下のディレクトリにあるのではないでしょうか。
/data/media/download/IS01root_002.apk

/data/media/download/IS01root_002.apk
をクリックすると「インストール」ボタンが表示されるので、
インストールします。

superuser のインストール


SuperUser をインストールします。
Android Market にある version 3 系だとうまくいきません。

https://play.google.com/store/apps/details?id=com.noshufou.android.su&hl=ja

Android Marketではなく
以下のファイルをダウンロードしてください。
http://downloads.androidsu.com/superuser/su-2.3.6.3-cd-signed.zip

ブラウザでダウンロードしたら、
アストロマネージャで開きます。
/data/media/download に su-2.3.6.3-cd-signed.zip があります。
これをクリックすると、 zip の中身が閲覧できます。
さらに system の中の app の Super をクリックし、
アプリケーションマネージャーを開きます。

/data/media/download/su-2.3.6.3-cd-signed/system/app

インストールを選択し、 SuperUser をインストールします。

au IS01 rooter の起動


asu IS01 rooter のインストールが終わったら、アプリケーションを
起動します。

Step 1 :root 権限を取得する
をクリックします。

root 獲得中、を表示されます。
しばらく、待ちます。

suコマンドを /sqlite_journals/is01root にインストールします。
エラーが発生した場合は、再度実行してください。


の確認が出るので、開始を押す。

異様に、時間がかかりました。

「 is01 rooter は応答していません」が
表示されたので、一度は、「待機」を選択し、
次に表示されたときは、「終了」を選択した。

もう一度、 IS01 rooter を起動し、
Step 1 をやり直します。
「インストールが完了しました。IS01を再起動してください。」が
表示されます。

IS01を再起動


電源を長押しして、電源を切ります。
さらに、電源を長押しして、起動します。

au IS01 rooter の Step 3


au IS01 rooter を起動します。

Step3:pathの通る位置へインストールする、を選択します。

SuperUser のアクセス許可の確認画面が表示されるはずです。

スーパーユーザー (com.noshufou.android.su) が予期せず
停止しました。やり直してください。

が表示されました。

SuperUser のバージョンが新しすぎるかもしれません。
2系を入れ直して下さい。

2012-03-27

2012-03-27

git reset コミットを取り消す方法

[Git]

ソースコード管理ツールで、誤ったソースコードをしてしまった場合に、Gitでは、コミットを取り消すことができます。

git reset とは


オプション 意味 HEAD インデックス ワーキングツリー
soft HEAD の位置のみを変更します。 変更 なし なし
mixed HEADの位置とインデックスを変更します。 変更 変更 なし
hard HEADの位置とインデックス、ワーキングツリーを変更します。 変更 変更 変更


リポジトリの作成


まずは、作業用のディレクトリを作成します。
薫 $ mkdir reset/
薫 $ cd reset/
薫 $ git init
Initialized empty Git repository in /home/foo/tmp/Git/reset/.git/

テスト用のファイルの作成


  • a.txt を作成します。
  • a.txt をコミットします。
  • a.txt に変更を加えます。
  • a.txt をコミットします。
薫 $ 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

Git の内容だけ元に戻す


まずは、状態の確認ですが、a.txt の内容は、2 です。
コミットログは、2つあります。

薫 $ 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

2つめのコミットを取り消したい場合、 reset します。

薫 $ git reset --soft HEAD^

ワーキングディレクトリのファイルには、変更亭はありません。

薫 $ cat a.txt
2

git のログを確認してみると、2回目のコミットのログは、削除されています。

薫 $ git log |cat
commit 51e5398a790e337ed7573baae6c55b0beb2871d8
Date:   Tue May 8 00:53:11 2012 +0900

    * 1st commit

以上のように、soft reset は、リポジトリ内を元に戻しますが、ワーキングディレクトリには影響はありません。

Git の内容とワーキングディレクトリの内容を元に戻す


さて、今度は、 hard reset を試してみます。
「テスト用のファイルの作成」が終わった後の状態です。

まず、ワーキングディレクトリのファイルの内容は、2 です。

薫 $ cat a.txt
2

それでは、 reset hard で、ワーキングディレクトリとリポジトリの内容を1つ前の状態に戻します。

薫 $ git reset --hard HEAD^
HEAD is now at 51e5398 * 1st commit

ワーキングディレクトリのファイルの中身は、最初に編集した内容に戻りました。

薫 $ cat a.txt
1

git の log を確認してみると、2つ目のコミットのログはなくなっています。
薫 $ git log |cat
commit 51e5398a790e337ed7573baae6c55b0beb2871d8
Date:   Tue May 8 00:53:11 2012 +0900

    * 1st commit
薫 $                                                       

ログ


コミットログやワーキングディレクトリから変更が消えてますが、 reflog には、ちゃんと reset のログが残ってます。
51e5398 HEAD@{0}: reset: moving to HEAD^
12fc440 HEAD@{1}: commit: * 2nd commit
51e5398 HEAD@{2}: commit (initial): * 1st commit

以上のように、hard を使うと、リポジトリの内容だけでなく、ワーキングディレクトリも元に戻ります。

合わせて読む


書籍を探す



2012-03-26

2012-03-26

Git ワーキングツリーの変更を元に戻す

[Git]

ソースコードを改造してみたけど、やっぱり、気に入らなくて、とりあえず、元に戻したい!ってとき、ありますよね。

今回は、コミットしてなくて、ワーキングツリーのファイルしか変更してないときの操作です。

最初の状態


まず、初期状態は、このような状態です。

薫 $ cat a.txt
1

ファイルの編集


ファイルを変更します。

薫 $ echo 2 >a.txt

ファイルを元に戻す


やっぱり、元に戻したい!というときは、 checkout を使います。

任意のファイルの変更を元に戻すには、以下のコマンドを使います。
git checkout ファイル名

ワーキングツリーの変更をすべて元に戻すは、以下のとおりです。
サブディレクトリも対象になりますので、ご注意ください。
git checkout .

任意のディレクトリの変更を元に戻すには、以下のとおりです。
git checkout lib

それでは、実際にやってみましょう。

薫 $ git checkout a.txt
薫 $ cat a.txt
1

a.txt の中身を確認してみると、「最初の状態」の 1 に戻ってますね。

以上がワーキングディレクトリのファイルなどを元に戻す方法でした。

合わせて読む


Referrer (Inside): [2012-03-27-1]

2012-03-25

2012-03-25

Git commit をやり直しする --amend

[Git]

ソースコードマネージメントシステムを利用している人は、ソースコードをコミットした後に、「あ、しまった」と思うことが、多々あるのではないでしょうか。
しようもないタイプミスをしてしまった、という経験があるかと思います。
その結果、コミットしたあとに、タイプミスを修正して、再度、コミットする、といったことをしているでしょう。

Git では commit した後で、間違いに気づいたときに、直前のコミットを簡単にやりなおすことができます。

簡単に流れを紹介すると、以下のとおりです。

  • git commit -a
  • あ、タイプミス発見。
  • 修正
  • git commit -a --amend
それでは、実際に流れを追ってみましょう。

リポジトリの用意


まずは、今回のデモ用の作業用のリポジトリを用意します。

薫 $ mkdir demo
薫 $ cd demo
薫 $ git init
薫 $ ls -a
./    ../   .git/

ソースコードの準備


ソースコードを1つ用意します。

ここでは、 stdio.h をあえて、忘れた、という設定です。

薫 $ > 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 のリポジトリに追加します。

薫 $ 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

コミットできました。

ソースコードの修正


さて、main.c に stdio.h を include し忘れていることに気づいてしまいました。
まずは、 ed で main.c を修正し、 include を追加します。

薫 $ 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 -a としてしまうと、やり直しにはなりません。
commit のオプションとして、 --amend を指定することで、元のコミットを取り消して、新たにコミットします。
ただし、直前のコミットが記録してなくなるわけではありません。

薫 $ git commit --amend -a  -m '* Initial commit'
[master 7514217] * Initial commit
 1 file changed, 7 insertions(+)
 create mode 100644 main.c

コミットログの確認


amend を使って commit をやり直しました。
さて、ここで、コミットログを確認してみましょう。
このように1回のコミットでコミットしたように見えます。

薫 $ 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);
+}

合わせて読む


Referrer (Inside): [2012-03-27-1] [2012-03-26-1]

2012-03-24

2012-03-24

FreeBSD で GitWeb を動かしてみる

[Git]

FreeBSD のマシンにおいてある Git のリポジトリの中身を
Web の UI で閲覧したかったので、
FreeBSD の apache で見るようにしてみました。

FreeBSD で動かす、とかいっていますが、別に、 FreeBSD 専用の話ではなく、 Linux でも同じです。

Git のプロジェクトの準備


Git のプロジェクトをまず作ってある前提です。

cd public_html/foo
git init
git add foo.c
git commit foo.c

GitWeb の用意


cp -r /usr/local/share/examples/git/gitweb/gitweb.cgi .
cp -r /usr/local/share/examples/git/gitweb/static .

gitweb.cgi の書き換え


プロジェクトのパスが /pub/git になっているので、
任意の場所に書き換えておきます。

# 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';

あとは、 http://localhost/~whoami/foo/gitweb.cgi にアクセスするだけです。

合わせて読む


2012-03-23

2012-03-23

Git ブランチを作成する

[Git]

ソースコードに実験的なコードを追加するときに、マスターの Git のリポジトリにコミットしたくないケースがあります。
git では、リポジトリ内に複数のブランチが作成できます。

ブランチの作成


foo というブランチを作成してみます。

git branch foo

ブランチの確認
git branch

ここでは、 master と foo が表示されます。
 * master
   foo

ブランチの切り替え


ブランチ foo へ切り替えてみます。

git checkout foo

ここで、ファイルを編集し、 commit します。

vim foo.c

git commit -a

master にマージする


さて、ブランチ foo で編集した変更を master にマージしてみましょう。

まず、ブランチを master に切り替えます。

git branch master

ブランチ foo で編集した影響は、まだ受けてないことが確認できます。

さて、ここでマージをします。

git merge foo

たとえば、このような結果が表示されるでしょう。

% git merge list
Updating ec4c83a..c136832
Fast-forward
 .gitignore           |    5 +
 2 files changed, 272 insertions(+), 214 deletions(-)

コンフリクトが起きた場合には、 git diff を確認し、コンフリクトを解消して、 git commit -a でマージします。

不要になったブランチの削除


master へブランチ foo のマージが成功したら、すでにブランチ foo は不要です。
master へ変更が反映されていることを確認したら、不要なブランチを削除してしまいましょう。

git branch -d foo

マージしてないブランチを強制的に削除するには、 -D オプションで削除します。
git branch -D bar

合わせて読む


2012-03-22

2012-03-22

はじめてのGit入門

[Git]

Git でソースコードを少しだけ管理してみます。
ここでは、 Git の操作について説明します。

git version 1.7.9.4 を利用しています。

インストールや設定については、下記のページを参照してください。

まずディレクトリを作成する


すでに管理したいディレクトリがあれば、必要ない作業です。

mkdir project
cd project

初期化


git で管理するディレクトリで、以下のコマンドを実行し、管理用ファイルを作成します。

git init

カレントディレクトリに git 用の .git ディレクトリが作成されています。
以下のファイルが作成されます。

./
../
HEAD
branches/
config
description
hooks/
info/
objects/
refs/

description の編集


gitweb とかを使う場合には、 .git/description のファイルを編集しておくといいでしょう。最初に入っている文章は、不要なので、全部消してしまってOKです。プロジェクトの名前とかを書いておくとよいです。

vim .git/description

ファイルの作成と追加


git add でソースコードを追加します。

まずは、ソースコードを作成しましょう。
vi Makefile
vi foo.c

add して commit します。 CVS/Subversion と同じですね。
git add Makefile foo.c
git commit

git add を実行する代わりに、変更したファイルを自動的に検出して、コミットしてくれます。
ただし、新規ファイルは、対象ではありません。

git commit -a

編集したら比較してみる


commit する前に、 diff でソースコードを確認することができます。

git diff

タグをつける


git でタグをつけるには、 git tag version でタグをつけます。

git tag 1.0

書籍を探す


Git


合わせて読む


2012-03-21

2012-03-21

Git 最初にやっておくべき便利な設定

[Git]

Git をインストールしたら、最初にやっておくと便利な設定について、メモをしておきます。

インストールについては、下記のページを参照してください。

Git の設定は、 $HOME/.gitconfig にします。
git コマンドを通して、 .gitconfig を更新します。

ユーザ名と Eメールアドレス


git config --global user.name "foo"
git config --global user.email "foo@yahoo.co.jp"

カラーの設定


ターミナルでもカラーの表示をして欲しい!という方は、是非ともこの設定をオススメします。

git config --global color.ui auto

alias


git コマンドの alias (エイリアス) の設定をすると便利です。

CVS/Subversion を利用していた方は、 co とか ci とか、打ってしまいがちではないでしょうか。
そういう方は、 alias しておけば、問題ないです。

git config --global alias.co checkout
git config --global alias.ci commit

補完の設定


git をインストールすると git の補完用の bash 向けの設定ファイルが FreeBSD の場合、以下のパスでインストールされています。

bash ユーザは、 .bashrc で git-completion.bash を読み込む設定を追記しておくと良いでしょう。

source /usr/local/share/git-core/contrib/completion/git-completion.bash

https://github.com/git/git/tree/master/contrib/completion

git に無視させたいファイル


.gitignore では、git で扱いたくないファイルを定義できます。

$HOME/.gitignore のファイルを作ってみましょう。

vim の swap ファイルやEmacsのテンポラリファイル、 core , object file などは、git で管理したくないと思います。
.*.sw?
*~
*.core
*.o

.gitignore ファイルを適用するように、設定しておきましょう。
git config --global core.excludesfile ~/.gitignore

書籍を探す


Git

2012-03-20

2012-03-20

Git を FreeBSD にインストールする

[Git]

FreeBSD 9.0 の環境に Git が入ってなかったので、FreeBSD に git をインストールします。

Git (ギット) は、プログラムなどのソースコード管理を行うための分散型バージョン管理システムです。
Linux カーネルのソースコードを管理することが目的で、リーナス・トーバルズによって開発されました。

インストール


cd /usr/ports/devel/git
sudo make install clean

portinstallコマンドでインストールする場合
sudo portinstall /usr/ports/devel/git

portmasterコマンドでインストールする場合
sudo portmaster /usr/ports/devel/git

参考サイト


合わせて読む


インストール後に、オススメの設定をやってみてはいかがでしょうか。

書籍を探す


Git

2012-03-19

2012-03-19

HBase クラスタの確認

[HBase][Hadoop]

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


書籍を探す


Hadoop


2012-03-18

2012-03-18

HBase を HTTP REST から利用する方法

[HBase][Hadoop]

HBase を Java 意外から利用する場合、
HTTP REST から使うのが簡単かもしれません。

準備


hbase を起動し、 hbase rest を起動します。
フォアグラウンドで実行されます。

./bin/start-hbase.sh
./bin/hbase rest start

8080 ポートで起動されます。

ポートを指定する場合には、-pオプションを使います。
./bin/hbase rest start -p 4080

デーモンとしての起動と停止


デーモンとして、起動することもできます。

デフォルトは 8080 ポートです。
./bin/hbase-daemon.sh start rest -p <port>

停止方法

./bin/hbase-daemon.sh stop rest

アクセス


テーブルを調べる


ルートにアクセスするとテーブルが分かります。

curl http://localhost:8080/

test というテーブルしかない場合、レスポンスは、以下の通りになります。

test

行の取得


テーブル test に row1 の行がある前提です。

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>

書籍を探す


Hadoop


2012-03-17

2012-03-17

HBase shell でバックスペースが効かない

[HBase][Hadoop]

HBase shell は、JRuby の IRB にいくつかの HBase 固有のコマンドを追加したものです。
irb のほうは、backspace が効くけど、 hbase shell だと backspace が効かない。
C-h で消せるからいいけど。
何かの設定が悪さしてるのか、他の設定が必要なのか。

あと不思議なことに C-z で一度、サスペンドしてからフォアグラウンドに戻すと、入力がすぐにエコーバックされなくなる。
C-z するなってことなのか。

書籍を探す


Hadoop


2012-03-16

2012-03-16

HBase Table の存在を調べる

[HBase][Hadoop]

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

テーブルの数が増えて、 list で見るのが辛い時は、 exists がいいかもしれません。

書籍を探す


Hadoop


2012-03-15

2012-03-15

HBase Table を調べる

[HBase][Hadoop]

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

書籍を探す


Hadoop


2012-03-14

2012-03-14

HBase を動かしてみる

[HBase][Hadoop]

Hbase を動かしてみました。
動作環境は、 CentOS + OpenJDK です。

HBase は、 Google の BigTable をモデルにして開発された、
分散、バージョン、カラム指向ストアです。

ダウンロード


まずは、 HBase をダウンロードします。

ダウンロードサイトは、こちらです。
http://www.apache.org/dyn/closer.cgi/hbase/

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

設定ファイル


conf/hbase-site.xml

hbase のデータを置くフォルダを指定します。
デフォルトでは /tmp/hbase-$USER に置かれます。

<?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>

HBase の起動


JAVA_HOME の環境変数をセットします。
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/

FreeBSD で diablo-jdk を使っているなら
# 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

HBase のシェル


薫% ./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> 

テーブル名 test
シングルカラムファミリティ cf
を作成します。
create 'test', 'cf'

テーブルを作成し、 put で値を入れてみます。

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

シェルから抜けるには、 exit です。
hbase(main):012:0> exit

Web でのステータスの確認


http://localhost:60030/rs-status

HBase の停止


薫% ./bin/stop-hbase.sh
stopping hbase............

書籍を探す


Hadoop


最終更新時間: 2012-05-17 22:40

最近の記事

2012-04-02
- PHP から Thrift で HBase のテーブルを取得する
2012-04-01
- FreeBSD php5-thrift をインストールする
2012-03-31
- FreeBSD thrift をインストールする
2012-03-30
- Thrift とは
2012-03-29
- FreeBSD で Node.js をビルドする方法
2012-03-28
- IS01 root 取得
2012-03-27
- git reset コミットを取り消す方法
2012-03-26
- Git ワーキングツリーの変更を元に戻す
2012-03-25
- Git commit をやり直しする --amend
2012-03-24
- FreeBSD で GitWeb を動かしてみる
2012-03-23
- Git ブランチを作成する
2012-03-22
- はじめてのGit入門
2012-03-21
- Git 最初にやっておくべき便利な設定
2012-03-20
- Git を FreeBSD にインストールする
2012-03-19
- HBase クラスタの確認
2012-03-18
- HBase を HTTP REST から利用する方法
2012-03-17
- HBase shell でバックスペースが効かない
2012-03-16
- HBase Table の存在を調べる
2012-03-15
- HBase Table を調べる
2012-03-14
- HBase を動かしてみる

はてなの人気のブックマーク

過去ログ

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12