jQueryとそのプラグインで大規模なJSアプリを作る際のポイントがとてもよくまとまっていたので、まとめておきました。同じようなことをやっている人は多いと思うのですが、jQueryの機能とpluginを上手く使っているなぁと思うので。http://www.slideshare.net…
hidedenさん, vkgtaroさん, tomyheroさんらとチューリップ撮りに行ってきました。2日目は晴れていてとても気持ちが良かったですね。これからは花が綺麗な季節なので、継続的に色々なところに撮りにいきたいです。
さすがに混雑していて三脚は使えずに手持ちで。今年は満開の時期にちょうど週末がやってきたのが良かったですね。
テストが成功するか否かだけを知りたい場合には、以前に書いたエントリでも良いのですが、CIをするのであれば、「どのテストが失敗したのか」、「どのビルドでどのテストが失敗したのか」というのかを、CI環境上で当然知りたくなるのではないかと思います。…
HudsonでPerlプロジェクトのCIをしていると、Test CoverageもCIでみたいということは良くあるんじゃないかと思います。 事前準備 Husonの管理画面から、「HTML Publisher Plugin」をインストールします。 ビルドの設定 次にプロジェクトのビルドの設定をしま…
花見シーズンということで、hidedenさんとvkgtaroさんと新宿御苑と六義園の方に花見に行ってきました。 新宿御苑のほうは、全体的には2-3分咲といった感じだったんですが、枝ぶりが立派で、来週辺りはすごい景色になりそうでした。六義園の方は、何回か行っ…
この時期は、菜の花が一面に咲いていてとても綺麗です。
Consistency LevelがONEの場合の、read部分の実装をまとめました。依然書いたSEDA部分の内容が理解できていれば、読むのはあまり難しくないです。逆に、そこが理解できてないと、さっぱり処理手順がわからないので、事前に以下のエントリを読むことをおすす…
テストを実行する際に、必要なプログラムが存在しなければ、テストをskipするモジュールを作ってました。Test::Requiresの実行プログラム版です。 http://github.com/dann/p5-test-skip-unlessexistsexecutable# ExistsExetableという名前だと誤解を招くので…
sstable2jsonの概要 sstableをjson化するsstable2jsonというツールが存在します。これはデータのexportに使います。sstable2jsonは、 -Data.dbで終わるsstableのファイルへのフルパスを引数にして、そのsstableをjson化してexportすることができます。 使い…
概要 JSONをimportして新しいsstableを作るのが、json2sstable。 使い方 Usage: json2sstable -K keyspace -c column_family 実装 パッケージとしては、org.apache.cassandra.tools。クラスはSSTableExportのimportJsonメソッド importJson(json, keyspace, …
nodetool概要 nodetoolは、clusterの管理ツールです。ノードが生きてるかどうか調べたり、compactionを実行できたりなどをすることができます。 利用できるコマンド どのようなコマンドが利用できるかというと、以下のようなコマンドが利用できます String h…
cluster wideな管理ツール cluster toolはcluster wideな管理ツールにしていきたいようです。ただ、まだ使えるコマンドが殆どないので、そういうツールになっていくんだろうという感じです。 使えるコマンド まだ全然ありません。これから整備していくみたい…
パッケージでいうと、org.apache.cassandra.cli。CliMainがメイン。commons.cliつかったCLI実装。Args4jとかのほうがシンプルでいいなーというのはさておき、commons系で実装。実行部分は、CliClientでCliCompilerを使ってstatementをパースして実行。CliCom…
削除処理の概要 削除するまでに全ノードにその削除通知が行き渡るには時間がかかるので、tombstoneというdeletion markerをつけて、それを使って他のノードにも伝播させることで、他ノードでも削除マークを付ける。全てのノードで削除マークがつくまでに時間…
Cassandra Architectureに沿って、今までのエントリをまとめておきます。今後、ここにリンクを追記していく予定です。 Cassandra Architecture Cassandra API Cassandraのインターフェース http://dann.g.hatena.ne.jp/dann/20100309/p3 CassandraのConsiste…
Cassandraでは、ノードのメンバシップをgossip-basedなprotocalでEventually consistentに管理しています。また、ノードの状態についても、gossip-basedなprotocolをベースに管理しています。この、Gossipアルゴリズムというのは何かというと、噂の伝播をモ…
分散システム、特にCassandraで必要に鳴るアルゴリズム、データ構造、アーキテクチャについてまとめておきます。 アルゴリズム Vector Clocks http://funini.com/kei/logos/clock.shtml Gossip protocol データ構造 Bloom filter http://ja.wikipedia.org/wi…
Cassandra code reading 3日目です。今日はデータの書き込み編です。ざーっと概要レベルで処理をおさえて、個々の細かいデータ構造は、追々追記していきます。主要な登場人物は、 commit log memtable sstable です。commit log -> memtable -> sstable とい…
Memtable パッケージは、org.apache.cassandra.db IFlushable <-- Memtable <-- BinaryMemtablewriteSortedContentsがflushAndSignalメソッドから呼ばれている。flushされるタイミングは、先のエントリで書いたタイミング。flushAndSignalメソッドのcall hie…
Concistency Levelはデータのread, writeのAPIそれぞれで指定するようになっていて、Levelによってread, writeの挙動が異なってくる。定義されているConsistency Levelは、以下の6つ。定義箇所は、以下の場所に。 https://svn.apache.org/repos/asf/incubato…
パッケージとしては、org.apache.cassandra.locator。 実装としては、AbstractReplicationStrategy。これをベースに、以下の3つの方法がある。 RackAwareStrategy キーに対応するノード群を返すRack awareなStrategyクラス。異なるデータセンターのノードま…
少しずつ読み進めてます。今日はsortです。 Columのソート パッケージでいうと、org.apache.cassandra.db.marshalColumnのSort orderはColumnFamilyレベルで定義される。すべての型は、AbstractTypeを継承している。AsciiTypeのみBytesTypeを継承。ソートタ…
パッケージでいうと、org.apache.cassandra.dht。インターフェースでいうと、IPartitioner。全てのCassandraのノードにTokenが割つけられていて、これらのTokenは、どのキーが、primary replicaに属するのかを決めるために使われている模様。IPartitonerは、…
https://svn.apache.org/repos/asf/incubator/cassandra/trunk/interface/cassandra.thriftこれ見るのが一番。serviceのとこみればインターフェースが、structのところを見ればデータモデルがわかります。thriftで実際にインターフェースからクライアントを…