Proxy.newProxyInstance やばい @hideがベイビー・サブミッション

[twitter:@esmasui]さんがごく普通に使ってて、"え、ぬこ知らないの?情弱なの?ふーんそう。"みたいなオーラ出されて涙目です。

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle

発端は id:esmasui:20110130:1296339520 だったと記憶しています。
この記事の中で使っている、DelegateFactory て?何? 見た感じ便利そう!ってなって、ますいさんに聞いたのでした。

したら、公開してないっていうから、して!ってお願いしたら 置いてくれた のでした。

で、置いてやったのだし わかめ お前 解説 書け。って言われたので書いた。

なんなん?

簡単に言うと、@hide デストロイヤー

どするん?

以下のような感じで使う。
Main1.java が@hideも自由に使える中の人モード。
Main2.java がそれに対して、辛うじて@hideなクラスのインスタンスが取れたりする僕達パンピー
IBridgeやIData1, 2みたいなIFだけ用意してやってProxyで見た目的にそれなりに普通っぽく書けるようになってます!
型安全性という点ではもうかわいそす…なんだけど、Reflectionでぐちょぐちょ書かずに簡潔にかけるのは素晴らしいです!

https://gist.github.com/838957

ajn14行ってきたん

appengine ja Night #14 行ってきたん。http://atnd.org/events/12652
知らない単語がいっぱいあったので、メモっておく。
間違ってたら、誰か教えてください。

知らなかった 理解しておく

シャード 技法。全体をいくつかに分割して扱う。分割したひとつひとつを"シャード"と呼ぶみたい
ShardingCounter テクニック。あおうささんのブログとか読む。
タブレット 300MBくらいのEntityの塊。同じEGのEntityは連続するらし。聞いたことある。要おさらい。
Scatter 0.8%の確率で自動的にEntityに付加されるプロパティ。EntityのKeyのハッシュらしい。一様分布のはずなので、シャードを作る時に、シャード毎のデータ件数が涙目で分割する手法に比べて均一になり易いはず。らしい。BeginKeyとEndKey得られるよね的な。Entity.SCATTER_RESERVED_PROPERTY。
Memcacheのexpire 有効期限の事。そんなん設定できたっけ?
AppEngine MapReduce Googleオープンソースで作ってる。Hadoopと同じAPI。まだReducerないらしい。
eventual consistency read よくわかってない。整合性について、古いEntityがみえちゃうかもよ的な意味?こんしすてんし。zakiさんに教えてもらった http://www.publickey1.jp/blog/09/eventual_consistency.html

知らなかった 存在だけ覚えておく

ElShard エルシャダイじゃないよ。
PAXOS ぱくそす。HDRの技術的バックボーン?よくわからんけど、むつかしいねんて。

知ってた!

もしくは、昨日くらいまでに知った。

TQ TaskQueue
tx Transaction
EG EntityGroup
TPS TransactionPerSecond。ThirdPersonShootingじゃないんね。
HDR High Replication Datastore. なんか比較的最近始まったアレ

その他の知識

  • HDRは同一EGに対する更新性能は最悪1TPSくらい出る
    • 普通のDatastoreは10TPSくらいっておがわさんに聞いた
  • ajn行くとピザ食える