読者です 読者をやめる 読者になる 読者になる

「Desire」で使えるオススメAndroidアプリ10本

HTC Desireを日常的に使ってみて、割と使うアプリも決まってきたので、使っているアプリをまとめてみました(9/30更新) 必須アプリ 日常的に使っている必須のアプリは、以下のものになります。 日本語入力 Simeji フリック入力がとても便利です。これがないと…

紫陽花

vkgtaroさんと鎌倉のほうに紫陽花を見に行ってきました。長谷寺は毎年いってますが、いつ見ても綺麗ですね。紫陽花は綺麗なんですが、なかなか撮るのは難しいです。来週は紫陽花も見頃なので、時間があればリベンジしに行きたいところです。

ヴの中の人に会ってきた! #2

woremacthon #1に引き続き、woremacthon #2を開催してきました。相も変わらぬ美少女っぷりに自分含め、参加者一同、感激していました。 http://dann.g.hatena.ne.jp/dann/20090506/p1他にも、参加者が口を揃えて言っていたのは、「居ることに全く違和感がな…

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で実際にインターフェースからクライアントを…

Cassandraのデータモデル

Cassandraのデータモデルについてまとめてみました。パッケージでいうと、org.apache.cassandra.db。 Column (normal) name, value, timestampから構成される Super Column columnのvalueとして、複数のcolumnのlistを含むcolumn Super Columnはtimestampは…

CassandraとSEDAのアーキテクチャの対応関係

Cassandraで、SEDAのアーキテクチャをどのように実装しているかを調べてみました。SEDA対応部分は、concurrent.utilのお陰でとてもシンプルな実装でわかりやすいですね。 https://svn.apache.org/repos/asf/incubator/cassandra/trunk/以下、概要です。 SEDA…

SEDA (Staged Event-Driven Architecture)

Casssandraの設計を理解する上で、SEDAのアーキテクチャを理解する必要があったので調べてみました。 http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf 既存技術の問題 Thread modelは設計・管理しやすいがサーバのスケーラビリティという観点から…

YAPC::Asia 2009後のCPAN::Packager

CPAN::Packagerを今年になってから大幅に更新し、CPAN::Packager 0.33をリリースしました。YAPC::Asia 2009で頂いたリクエストはすべて反映しました。 以下が変更点です。マニュアルも書きましたので、ご一読頂ければ。 RPM作成前にモジュールのテストを実行…

FlexのWAFであるRobotlegsが良さそうな件

PureMVCが良さそうだと先日書いたのですが、簡単なサンプルを書いてみたところ、以下の問題があることがわかりました。 Service Locatorに依存しすぎていて、MVC全体がLocatorに依存してしまう MVCSのすべてでフレーワークのベースクラスを継承することにな…

ActionScript開発に必要な基本的なライブラリとツール群のまとめ

今年は、クライアントサイドも書けるようにするために、ActionScriptのほうを初めてみることにしました。そこで、昨日は1日ActionScriptを書きながら、開発で必要になるベーシックなライブラリやツール群を調べていました。作り方含めて大分わかってきたので…

AS3のWAF

FlexのWAF 幾つか見た感じだと、PureMVCが一番シンプルで良さそう。 MVCS構成で作るとこうなるだろうなぁといった感じで作られていて、とても素直な作りで理解がしやすい ただ、画面遷移をどう作るのがセオリーなのかちょっとわからない。これはPureMVC限ら…

Flex Builderのプラグイン

Blueprint pluginとformatterは割と便利。 Blueprint plugin http://labs.adobe.com/technologies/blueprint/ Flex formatter http://sourceforge.net/projects/flexformatter/ TODO/Fixme plugin http://www.richinternet.de/blog/index.cfm?entry=911D4B57…

Plack::Middleware::Failsafe

新年1つ目のモジュールは例外を一番外側でcatchして、ログを出力後、エラー画面を表示するMiddlewareを作りました。もともとは、Railsのmiddlewareなのですが、RailsのMiddlewareは、Railsに依存してしまっていたので、依存しないように分離してあります。ht…

2009年を振り返って

こんばんは、明石家サンタが楽しみなdannです。今年も色々なことがありました。今年も残すところ後僅かになったので、KPTで今年を振り返ってみます。 Keep 今年やって良かったことは YAPC::Asiaにスピーカーとして参加 Perlコミュニティに参加し始めたのが去…

Plack::Middleware::Maintenanceを作ってみた

メンテナンス画面を出すMiddlewareであるRack::MaintenanceをPlackに移植してみました。http://github.com/dann/p5-plack-midddleware-maintenance以下のようにメンテナンス画面のパスを指定することで、その画面を表示するmiddlewareです。 use Plack::Buil…

Plack::App::HTTP::Router - A Plack component for RESTful dispatching

RESTfulなdispatchをするPlack Appを作ってみた。 http://github.com/dann/p5-plack-app-http-router使い方 use Plack::Builder; use Plack::App::HTTP::Router; use HTTP::Router::Declare; use lib &#39;examples/lib&#39;; my $router = router { match &…

Data::Model::Driver::Memcachedで超効率データ保存

data-model trackの17日目のエントリを書きました。 http://perl-users.jp/articles/advent-calendar/2009/data-model/17.htmlData::Model::Driver::Memcachedは、KVSをデータストアとして使うために、空間効率を意識した設計がなされています。具体的には、…

App EngineのLogをXMPPで飛ばす (Python版)

gae

GAEのログをXMPPで送るという素晴らしいアイデアを書かれてたので、pythonに移植してみました。 http://d.hatena.ne.jp/hidemon/20091211/1260512565 loggerのXMPP用のhandler # -*- codign: utf-8 -*- import logging from google.appengine.api import xmp…

JPerl Advent Calendar 2009 #07

こんにちは、記事を早く書きすぎた dann です。もう今年も残すことあとわずかですねー。今年もJPerl Advent Calenderの季節がやってきました。去年に引き続き今年もJPerl Advent Calendarを書かせて頂きました。 テスト関連の便利モジュールとして、7日目の…

Plackathonにいってきた!

HTTP::Engine hackathonに引き続き、miyagawaさんにPlackathonに誘って頂いたので、Plackathonに行ってきました。以下の3つのMiddlewareをつくってみました。 pythonのmiddleware(DispatchMiddleware)porting版 完成した直後に、それURLMapでできるよ!とい…

VimでPythonを快適に編集するための設定

python編集できるようにvimの設定をしてみました。perlでも殆ど同じような事をやっていたんですが、補完と保存時のsyntax check、それとpython周り固有のindent設定ですね。 indentが異なってるとエラーになるのでindent周りの設定 save時にsyntax checkして…