2012-01-01から1ヶ月間の記事一覧

YCSB で HBase のベンチマーク

YCSB (Yahoo! Cloud Serving Benchmark) はクラウドサービスで使用される様々なデータストアのベンチマークプログラム。Apache 2 ライセンスで配布されており HBase, BigTable, Cassandra, MongoDB, CouchDB, Dynomite, Redis などほとんどの NoSQL 系データ…

MagicCube レーザーキーボードを使ってみた

個人的に iPod touch + WiMAX が携帯には最強なのだが、キーボード並の入力能力があれば Blog 書きやミーティング、プレゼンなどのメモ書きにわざわざ ThinkPad を持ち歩く必要もなくなるだろう。そんなわけで、迷ったら買わない主義の吾輩が迷わず買った ce…

OutOfMemory でスレッドの起動に失敗する件

十分なメモリを割り当てているにもかかわらず Hadoop や Thrift ゲートウェイで OutOfMemoryError が発生しスレッド生成に失敗する事案。 2012-01-18 19:54:16,620 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.12…

Play! Framework 1.2.4 謎の NullPointerException

Play! Framework でぬるぽが出たためコードを確認してみたのだが、どう考えても null 参照が発生することはないフローだった。念のため発生場所の直前で null チェックを入れて再実行すると、チェックをすり抜けて NullPointerException が発生した。 謎の現…

Java 非同期 I/O のデザインパターン (クライアント編)

New I/O の非同期処理を実装する時にいつも使うパターンの個人的設計まとめ。非同期 I/O はアプリ要件によって設計を柔軟に変える必要があるので定石というわけではありませんし、安全に組み替えるにはそれなりの知識が必要です。 この記事が説明のベースに…

Play! の OAuth2 不具合いろいろ

Play! Framework 1.2.4 の play.libs.OAuth2 を Instagram に対して使ってみて見付けた不具合いろいろ。結果的にアクセストークンの取得部分が POST に対応していないため Instagram には使えませんでした。 retrieveVerificationCode(): 認証 URL (コンスト…

Play! Framework による OpenID の参照

Play! Framework の OpenID 機能を使用して Google アカウントとリンクする方法について。 OpenID は認証統合やシングルサインオンのためのアーキテクチャです。こちらのサービスのアカウントを Google の OpenID に関連付けておけば利用者はログイン作業な…

Play! Framework クイックスタート

Play! Framework は Java VM 上で動作するフルスタックの軽量 Web フレームワーク。Scala にも対応しており、Java の静的型システムや豊富なライブラリ、高速性を生かしつつ Ruby on Rails を更にシンプルにしたような手軽さといった印象です。個人的にはプ…

協調型分散システムのための RPC 設計

協調型分散システムに必要な Peer to Peer (以下PTP) RPC サービスインフラストラクチャを構築するための通信端点の設計について。コンポーネントと役割ベースでの記述となります。プロトコルは別途。 抜けている点など多々存在していると思いますのでご意見…

sbt を入れてみた

sbt (Simple Build Tool) は Scala 界隈でよく使われているビルドツールです。DSL の本領発揮といった黒魔術書のようなビルド定義に腰が引けていましたが、Kestrel のビルドに必要なので入れてみます。始める sbt - ようこそ も参照。インストールに必要なも…

JIT コンパイラ関連オプションの挙動

Oracle Java 6 での JIT コンパイラ関連のオプションとその挙動についての記述。とはいえ大きく挙動を変えられるような実装ではありませんので以下の 3 つを押さえておけば良いかと思います。 -XX:CompileThreshold=10000 JIT コンパイルを行うまでのメソッ…

Kestrel クイックスタート

Kestrel は Twitter のバックエンドで膨大なリアルタイムデータを処理している分散メッセージキューシステムです。キューに特化して高速性とコンパクト性を優先した設計となっており、JMS で規定されているようなエンタープライズ向けメッセージキューとは方…

Java HotSpot VM Options

以下 Java HotSpot VM Options の勝手翻訳と、追加で原文には載っていないオプションについて。Oracle JDK 6 を対象とした内容となっています。このドキュメントは Java HotSpot 仮想マシンのパフォーマンス特性に影響を与える一般的なコマンドラインオプシ…

Java SE 7 の言語拡張

Java SE 7 で導入された新しい言語拡張について簡単にまとめておきます。言語レベルの話ですので、ライブラリレベルの変更点はもっとたくさんありますが。 バイナリリテラル int や long 値を表記する際に 0b11011 のような 2 進数表記の数値リテラルが可能…