移転してます。

Google Blogger へ移転しとります。

Finagle 2.9.1 Getting Started (ハッカソン一人反省会)

2012年5月19日に Twitter Japan でやんわりと行われてた Finagle ハッカソン の一人反省会も兼ねて Finagle Getting Started などを書きます。 Finagle セットアップ ハッカソン中 Windows 7 上で行った sbt による Finagle のセットアップをさくら VPS で再…

Java SE 7 Update 4 での変更点

Java 7 の Update 4 がリリースされたようですのでリリースノートから気になる点を拾い読み。 OS X サポート Apple が Java の OS X 対応を止めてしまったために Java 7 リリースから半年ほど遅れましたが、このバージョンからやっと利用できるようになりま…

JavaはCOBOLのように縮こまらないし死にもしないとOracleが主張

以下の記事: Java won't curl up and die like Cobol, insists Oracle http://www.theregister.co.uk/2012/03/07/oracle_java_9_10_roadmap/ において Java の将来について QCon 2012 で語られた内容が載っていたので昼休みを使って訳してみますた。間違って…

SIer 的なテストに関するお話

先日 Scala 勉強会後の懇親会で開発テストについて話題になったので、補足と記録も兼ねてもう少しきちんと書き記しておこうと思う。僕は金融系 SI - 主に保険と、まれに銀行システムのフレームワークや共通機能の設計開発、それに問題分析を行うエンジニアと…

GAE で Scala Lift を動かす

Google App Engine (GAE) 1.6.3 で Scala + Lift を動かしてみます。とりあえず作業の前提として: サーブレット開発の知識を持っている。 適当な WAR プロジェクトを GEA にデプロイしていて Java サーブレットや JSP が動かせている。 Scala ライブラリの追…

Google App Engine 1.6.3 のシステムプロパティ

GAE

GAE でアプリケーションを登録したので環境調査も兼ねて取得したすっぴん状態のシステムプロパティを載せておきます。値は Java のリテラル表記です。 Name Value com.google.appengine.application.id "appid" com.google.appengine.application.version "1…

hbase hbck

HBase のリージョン数を調べるにはコマンドラインから hbase hbck を実行。 リージョン分割指定でテーブルを create した後、大量のエラーと共に Status: INCONSISTENT と出る場合はリージョン分割がまだ済んでいない。しばし待て。

Log4j + syslog の設定

Log4j を syslog へ転送する時はファシリティと Syslog サーバが指定できる。log4j.xml の <appender> → <param> 指定は該当する Appender クラスのプロパティ名と同じなので、詳しくは API リファレンスの setter を参照。 SyslogAppender (Apache Log4j 1.2.17 API)例えば <param name="facility" value="local4"/> </param></param></appender>…

HFile と Memstore のメモ

store files は HFile の事。 Key-Value 不変マップ。 HFile はブロックに分けられていて、最後にブロックインデックスが付属している。 ブロックインデックスは HFile がオープンされた時に読み込まれメモリ上に保持される。 デフォルトのブロックサイズは …

protocol error: bad line length character と出たら

git

SSH 接続できるはずのサーバに git で接続できないと思ったら: git clone ssh://git.myserver/git/hoge Password: fatal: protocol error: bad line length character: [31SSH でのターミナル接続時に何かログインメッセージのようなものを表示していません…

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 進数表記の数値リテラルが可能…

2011年の振り返り

FC2 でやっていた MOYO Laboratory をはてなダイアリーへ移転しました。とりあえずアカウントを作ったもののすぐに書けるネタもないので、初っ端から 2011 年の振り返りなどをしておこうかと思います。 1月 CMS 上で全文検索を行うために Solr の導入などを…

電子署名

電子署名 (Digital Signature) は文書に対する承認と、文書内容の保障を電子的に付け加えるための技術です。公開鍵を使用することにより他人によって行われた署名でない事、署名された時点から文書内容に変更がない事の 2 点を証明することができます。また…

ハッシュ関数

ハッシュ関数 (Hash Function) とは任意長のバイナリデータから数十〜数百ビット程度の固定長バイナリを算出する関数です。古くから CRC のようなアルゴリズムが 誤り検出の用途で使用されてきましたが、暗号などのセキュリティで使用されるハッシュ関数はよ…

共通鍵暗号

共通鍵 (Common Key; 対称鍵) は暗号化と復号化に同じ鍵を使用する方法です。パスワードを使用した暗号化として一般に広く使用されています。 共通鍵暗号は暗号化と復号化に同じ鍵を使用しなければならないため、離れたところで暗号化を行わなければならない…

ハッシュ関数

ハッシュ関数 (Hash Function) とは任意長のバイナリデータから数十〜数百ビット程度の固定長バイナリを算出する関数です。古くから CRC のようなアルゴリズムが 誤り検出の用途で使用されてきましたが、暗号などのセキュリティで使用されるハッシュ関数はよ…