スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ブブゼラの空目されっぷり2

2010年07月17日 17:11

もはや小宇宙:
スクリーンショット(2010-07-17 17.02.00)


http://aaatxt-gae.appspot.com/soramegraph?q=ブブゼラ


半月くらいの蓄積データ。描画はCytoscape web。でももうあまりブブゼラがBuzzることもないでしょう・・・。
スポンサーサイト

ブブゼラの空目されっぷり

2010年06月20日 01:54

やっぱり、ブブゼラの空目されっぷりはすごい:
vuvuzela
※〇〇を××に空目というTweetを検索して〇〇→××と図示(cytoscape webを使用)。
>>soramegraph (表示されるまで少し時間がかかると思いますすみません。Google App Engine のSpin up 待ちです。)

Task Queue を使ってみる

2010年06月01日 03:24

Google App Engine Java のTask Queue を使ってみる。

Twitter4JとGAEとCytoscapewebの練習(空目の可視化)で作ったアプリのデータをJDOを使って永続化するようにした。永続化が原因かどうかは分からないがレスポンスが遅くなったような気がしたので、Task Queueを使ってみることにする。基本的には、Task Queue Java API Overviewをみてやってみる。

1.WEB-INF/queue.xmlの作成
Java Task Queue Configurationによると、こんな感じでいいみたい。

<queue-entries>
<queue>
<name>default</name>
<rate>5/s</rate>
</queue>
</queue-entries>




2.Memcacheに値を格納しておく。
今まで同期的にDatastoreにputしていたオブジェクトを一旦Memcacheに入れておく。
Memcache java API 概要を参考に。

cache = CacheManager.getInstance().getCacheFactory().createCache(Collections.emptyMap());
cache.put(key, obj);
(例外処理など略)



3.Queueに追加する処理を書く
Using Task Queue in Javaによると、以下のようにすると、defaultキューが取得できるようだ。

Queue queue = QueueFactory.defaultQueue();
queue.add(url("/worker").param("key", key));
(例外処理など略)


サンプルはstatic importを使っているが、Eclipse は static import があるとコード補完がうまく働かなくなるようなので注意。

4.Web Hook を書く。
普通のサーブレットを書く、web.xmlにも(この例だと/workerというパスを)記述する。このサーブレットにパラメータ"key"でobjをmemcacheにputした際のkeyが渡ってくる。HTTPメソッドは特に指定しない場合、POSTが使われるので注意。その後、cacheからgetして、Datastoreに永続化する。

cache = CacheManager.getInstance().getCacheFactory().createCache(Collections.emptyMap());
Object obj = cache.get(key);
PersistenceManager pm = PMF.get().getPersistenceManager();
pm.makePersistent(obj);
(例外処理など略)



以上。問題なく動いたが、劇的に動作が速くはならなかった。原因は永続化ではなかったようだ。

Twitter4JとGAEとCytoscapewebの練習(空目の可視化)

2010年03月19日 01:27

Twitter4jで「空目」を含むtweetを取ってきて空目sourceと空目targetをCytoscapewebで表示してみた。Cytoscapewebすごくかっこよくてなんかこんなことに使うの非常に気がひける。

テキストボックスに入れたキーワードと「空目」を含むtweetを検索します。

http://aaatxt-gae.appspot.com/soramegraph

ピクチャ 8
これは「クロマグロ」で検索した場合。バズってる単語はsourceになり易く、下ネタな単語はtargetになり易い傾向がある。

これからやりたいこと。
・エッジをマウスオーバーで元ツイートを表示する。
・TaskQueueをつかってみる。何に?→発言のFollower数取ってきてエッジの太さ変えてみるとか。
・JDOで永続化してみる。何を?→Search結果を永続化して何かにつかう。

寝よう。

Distributed Meme

2010年03月12日 02:33

#devfest_jpで気になった用語を調べていきます。

Distributed Meme
・Divide & conquer (分割統治)
  データと処理をTaskQueueに渡したり。
  システム全部止めてバッチ処理なんてこといならないようにする。

・Sharding (訳語はなんだろう? Shared Nothing)
  Database Sharding
  http://www.codefutures.com/database-sharding/
  ↑この記事を日本語で解説してくれている記事。参考になりました。
  http://agilecat.wordpress.com/2009/06/28/database-sharding-_1/
  (これを読むとShardingとは、Googleによる造語らしい。)
  
  例えばfig.3 にBookstoreスキーマをShardingした例がある。
  これを見るとcustomerテーブルをcustomer.idごとに分割して別の
  shard(断片)に格納しておいて、customterテーブルを参照する子テーブル
  であるcustomer_orderとかはcustomer.idごとに別shardに格納される。
  つまりcustomerをルートとするデータのツリーをshardごとに格納して
  cross shard な joinが発生しないようにする、ということ。

・Tolerate / expect failure (失敗への耐性)
  データセンターでは機器の故障は分から秒の単位で起こる。

・Idempotency (冪等性)
  失敗して再試行することを前提に、何度実行しても同じ
  結果になるような操作を定義しておく。
 
・Just scale it up (スケールアップせよ)
  スケールアップしろと。

つづく



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。