rose

鯉のぼり

Nemophila

Building Large jQuery Applications

jQueryとそのプラグインで大規模なJSアプリを作る際のポイントがとてもよくまとまっていたので、まとめておきました。同じようなことをやっている人は多いと思うのですが、jQueryの機能とpluginを上手く使っているなぁと思うので。http://www.slideshare.net…

2日連続チューリップthon

hidedenさん, vkgtaroさん, tomyheroさんらとチューリップ撮りに行ってきました。2日目は晴れていてとても気持ちが良かったですね。これからは花が綺麗な季節なので、継続的に色々なところに撮りにいきたいです。

many many tulip

千鳥ヶ淵の桜のライトアップ

さすがに混雑していて三脚は使えずに手持ちで。今年は満開の時期にちょうど週末がやってきたのが良かったですね。

HudsonでPerlプロジェクトのCI - テスト結果の可視化

テストが成功するか否かだけを知りたい場合には、以前に書いたエントリでも良いのですが、CIをするのであれば、「どのテストが失敗したのか」、「どのビルドでどのテストが失敗したのか」というのかを、CI環境上で当然知りたくなるのではないかと思います。…

HudsonでperlプロジェクトのCI - Devel::Coverでcoverage取得

HudsonでPerlプロジェクトのCIをしていると、Test CoverageもCIでみたいということは良くあるんじゃないかと思います。 事前準備 Husonの管理画面から、「HTML Publisher Plugin」をインストールします。 ビルドの設定 次にプロジェクトのビルドの設定をしま…

新宿御苑&六義園のしだれザクラのライトアップ

花見シーズンということで、hidedenさんとvkgtaroさんと新宿御苑と六義園の方に花見に行ってきました。 新宿御苑のほうは、全体的には2-3分咲といった感じだったんですが、枝ぶりが立派で、来週辺りはすごい景色になりそうでした。六義園の方は、何回か行っ…

マザー牧場

この時期は、菜の花が一面に咲いていてとても綺麗です。

Cassandraでのデータのread (get) の実装 - Consistency LevelがONEの場合

Consistency LevelがONEの場合の、read部分の実装をまとめました。依然書いたSEDA部分の内容が理解できていれば、読むのはあまり難しくないです。逆に、そこが理解できてないと、さっぱり処理手順がわからないので、事前に以下のエントリを読むことをおすす…

Test::Skip::UnlessExistsExecutable - skips tests unless executable exists

テストを実行する際に、必要なプログラムが存在しなければ、テストをskipするモジュールを作ってました。Test::Requiresの実行プログラム版です。 http://github.com/dann/p5-test-skip-unlessexistsexecutable# ExistsExetableという名前だと誤解を招くので…

Cassandraのデータのexportツール sstable2json

sstable2jsonの概要 sstableをjson化するsstable2jsonというツールが存在します。これはデータのexportに使います。sstable2jsonは、 -Data.dbで終わるsstableのファイルへのフルパスを引数にして、そのsstableをjson化してexportすることができます。 使い…

Cassandraのデータのimportツール json2sstable

概要 JSONをimportして新しいsstableを作るのが、json2sstable。 使い方 Usage: json2sstable -K keyspace -c column_family 実装 パッケージとしては、org.apache.cassandra.tools。クラスはSSTableExportのimportJsonメソッド importJson(json, keyspace, …

Cassandraのノード管理ツール(nodetool)

nodetool概要 nodetoolは、clusterの管理ツールです。ノードが生きてるかどうか調べたり、compactionを実行できたりなどをすることができます。 利用できるコマンド どのようなコマンドが利用できるかというと、以下のようなコマンドが利用できます String h…

Cassandraのcluster wideな管理ツール(clustertool)

cluster wideな管理ツール cluster toolはcluster wideな管理ツールにしていきたいようです。ただ、まだ使えるコマンドが殆どないので、そういうツールになっていくんだろうという感じです。 使えるコマンド まだ全然ありません。これから整備していくみたい…

Cassandraのコマンドラインツール (cassandra-cli)の実装

パッケージでいうと、org.apache.cassandra.cli。CliMainがメイン。commons.cliつかったCLI実装。Args4jとかのほうがシンプルでいいなーというのはさておき、commons系で実装。実行部分は、CliClientでCliCompilerを使ってstatementをパースして実行。CliCom…

Cassandraでのデータの削除について

削除処理の概要 削除するまでに全ノードにその削除通知が行き渡るには時間がかかるので、tombstoneというdeletion markerをつけて、それを使って他のノードにも伝播させることで、他ノードでも削除マークを付ける。全てのノードで削除マークがつくまでに時間…

Cassandraのアーキテクチャまとめ

Cassandra Architectureに沿って、今までのエントリをまとめておきます。今後、ここにリンクを追記していく予定です。 Cassandra Architecture Cassandra API Cassandraのインターフェース http://dann.g.hatena.ne.jp/dann/20100309/p3 CassandraのConsiste…

CassandraでのCluster membersipとFailure detection

Cassandraでは、ノードのメンバシップをgossip-basedなprotocalでEventually consistentに管理しています。また、ノードの状態についても、gossip-basedなprotocolをベースに管理しています。この、Gossipアルゴリズムというのは何かというと、噂の伝播をモ…

Cassandraを理解するのに必要なアルゴリズム、データ構造、アーキテクチャ

分散システム、特にCassandraで必要に鳴るアルゴリズム、データ構造、アーキテクチャについてまとめておきます。 アルゴリズム Vector Clocks http://funini.com/kei/logos/clock.shtml Gossip protocol データ構造 Bloom filter http://ja.wikipedia.org/wi…

Cassandraでのデータの書き込み

Cassandra code reading 3日目です。今日はデータの書き込み編です。ざーっと概要レベルで処理をおさえて、個々の細かいデータ構造は、追々追記していきます。主要な登場人物は、 commit log memtable sstable です。commit log -> memtable -> sstable とい…

Cassandraの書き込み部分の実装箇所

Memtable パッケージは、org.apache.cassandra.db IFlushable <-- Memtable <-- BinaryMemtablewriteSortedContentsがflushAndSignalメソッドから呼ばれている。flushされるタイミングは、先のエントリで書いたタイミング。flushAndSignalメソッドのcall hie…

CassandraのConsistency

Concistency Levelはデータのread, writeのAPIそれぞれで指定するようになっていて、Levelによってread, writeの挙動が異なってくる。定義されているConsistency Levelは、以下の6つ。定義箇所は、以下の場所に。 https://svn.apache.org/repos/asf/incubato…

CassandraのReplication strategy

パッケージとしては、org.apache.cassandra.locator。 実装としては、AbstractReplicationStrategy。これをベースに、以下の3つの方法がある。 RackAwareStrategy キーに対応するノード群を返すRack awareなStrategyクラス。異なるデータセンターのノードま…

Cassandraでのソートについて

少しずつ読み進めてます。今日はsortです。 Columのソート パッケージでいうと、org.apache.cassandra.db.marshalColumnのSort orderはColumnFamilyレベルで定義される。すべての型は、AbstractTypeを継承している。AsciiTypeのみBytesTypeを継承。ソートタ…

CassandraのPartitioning

パッケージでいうと、org.apache.cassandra.dht。インターフェースでいうと、IPartitioner。全てのCassandraのノードにTokenが割つけられていて、これらのTokenは、どのキーが、primary replicaに属するのかを決めるために使われている模様。IPartitonerは、…

Cassandraのインターフェース

https://svn.apache.org/repos/asf/incubator/cassandra/trunk/interface/cassandra.thriftこれ見るのが一番。serviceのとこみればインターフェースが、structのところを見ればデータモデルがわかります。thriftで実際にインターフェースからクライアントを…