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 'examples/lib'; 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して…

Kindleのupdateが最高に素晴らしい件

Kindle2を持ち歩き用、DXを自宅用にほしいdannです。今回のKindleのファームのupdateで、「PDFが読める」ようになっただけでなく、「日本語のPDFも読める」ようになりました!これはかなりいいですね。PDFが読めるようになったので、今までのmanningの本を全…

たこthonに行ってきた!

http://d.hatena.ne.jp/tomyhero/20091120/1258718763隔月でいっているたこthon。今回は、たこ焼きだけでなく、タコライスも投入され、モダンたこthonになりました。先週は家でGAEthonをやっていた影響で、今週も引き続きpythonをやってました。Eric S. Raym…

WSGIベースのメタフレームワーク werkzeug

mopemopeさんのblogに werkzeug が紹介されてました。 http://d.hatena.ne.jp/mopemope/20090118/p1これを使えば、 http://dann.g.hatena.ne.jp/dann/20091121/p1 で書いたようなmappingの大方のところは、必要ないですね。ちょっとコードみた感じだと、ORM…

Pasterのtemplateを作ってみた

Pasterのtemplateを作ってみた。 http://github.com/dann/python-simple_package_templatepasterのtemplateの作り方は、以下のページに。 http://pythonpaste.org/script/developer.html#id6templateを作るときのポイントは、以下の通り。 entry_pointsに、[…

noseでテスト

nosetestsは、proveみたいなものです。plugin機構があって拡張できるようになっているので、prove以上に色んな事ができます。使い方は、いかのとおり。 インストール pip install nose pip install rednoseテストの色づけ.noserc [nosetests] verbosity=3 no…

python雑感

GAEはじめてみようかなということで、pythonをここ1週間ほど触ってみてます。pythonの言語仕様で面白いのは以下かなぁと。 callables, iteratables これが組み込みなのは、 decorator AOP的なもの。perlだとMouseのaroundみたいなもので、Javaだとannotation…

Pasterでのmoduleのskeltonの生成

Yoshinoriさんに、pasterでmoduleの雛形が作れるというコメントを頂いたので、試してみました。PasteScriptのインストール sudo pip install pasterscript pasterコマンドがインストールされるので、これを使う。新規モジュールの作成 paster create paffy使…

Makefile.PLとsetuptoolsのsetup.pyの対応関係

抑えておけばよさそうなのは、依存関係まわりの以下のような関係。 perl python requires install_requires recommends extras_require test_requires tests_require pylonsの書き方みてれば、大体やりたいことは実現できそうです。 http://pylonshq.com/pro…

PerlとPythonのWAFの要素のmapping

Pythonの勉強がてら、良く知っている領域ということで、WAFの要素における ライブラリ間のマッピングをとってみました。simpleなwafはライブラリがそろってるので、さくっと作れそうな印象です。 Category Perl Python WSGI Plack wsgiref req/res Plack::Re…

perlとpythonとrubyのmapping

GAEで遊ぶのも兼ねて、pythonとperlのツールのmappingしようかなと。LLでは言語のシンタクスや機能は方言程度の違いしかないため、ライブラリやミドルでのマッピングを知っておく事のほうが意味があると思っているので、少しまとめてみました。 言語関連ツー…

GAEでzipで圧縮されたモジュールを使う

gae

http://code.google.com/appengine/articles/django10_zipimport.htmlpip zip でzipに固めて、sys.path.insert(0, lib_zip_path)で良さそう。 Module archives use additional CPU time the first time a module is imported. Imports are cached in memory …

pythonでOpenSocial

http://d.hatena.ne.jp/asannou/20091109security tokenをgadgetから渡せば、外部サーバーからでもREST APIでopensocial containerにアクセスできるという話なので、pythonでも試してみました。 python版はgoogleの中の人が作っているものがあるので、それを…

Django on GAEで作るmixiアプリ

まりもが大人気のmixiアプリに惹かれて、ちょっと入門してみました。 セットアップ GAEのインストール http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/devenvironment.html app-engine-patchのインストール GAE用にdjangoにpatchをあ…