クロージャの再帰処理

最近始めたGroovy。LLちっくな文法やメソッドが多く盛り込まれていて,非常に面白い。RubyかPythonに走ろうと思っていたが,やはり長年Javaをやってきた僕にとっては,Groovyが手に馴染みやすいのかもしれない。 さて,Groovyの文法において,Javaと比べて最も特徴的なものが,やはりクロージャではないかと思う。JavaSE7からクロージャがJava言語にも入るとか入らないとか議論されているが,Groovyではそんなクロージャをいち早く体感することができる。クロージャによ...

新S2Wicket仕様,断念

約2ヶ月間,Wicketをより使いやすくしようとチャレンジしてきたが,力及ばず断念することを判断した。 コンポーネントベース開発を採用しているWicketについて,コーディングの中心はコンポーネントの組み上げ処理であり,SwingやSWTなどのGUIアプリケーションと同じくらいの記述内容と記述量が求められる。コンポーネントの組み上げは「インスタンス生成」と「モデルとの関連付け」,そして「親コンポーネントへの登録」処理の連続であり,共通的に見える割には共通化が難しく,できあがったコードは非常...

Twitterclipseをバージョンアップしました

先日公開を開始した Twitterclipseだが,さっそくバージョンアップを行った。修正点は以下の通り。 IE6で動作させた際にスクリプトエラーが発生してしまう不具合を修正。 サーバチェック後に毎回表示のリフレッシュがかかってしまう現象を回避するように修正。 ステータスの表示を更新日付でソートされるように修正。 ユーザ名の表示を設定されたURL(Blogなど)へのリンクに変更。 表示文字列中...

Twitterclipse公開中!

自分が何をしているのか?友達や知り合いが何しているのか?こんなことを共有して楽しもうというサービスが, twitterである。そんなtwitterを,例のごとくEclipseから利用できるように,プラグインを開発した。その名も,twitterclipse。 eisbahn.jpのアップデートサイト(http://www.eisbahn.jp/update-site/)にtwitterclipseを配置しているので,Eclipse上でインストールを行うことができる。 機能としては, ...

怒りと共にlingrclipseをバージョンアップ

先ほど,lingrclipse-coreを1.3.0にバージョンアップした。昨日あたりからlingrclipseを使ってLingrサービスに入室ができなくなっているはずなので,ぜひすぐにバージョンアップを行って欲しい。 今回の修正は,LingrのAPIに変更が生じたために必要となった。具体的には,Room情報にcreated_at属性(たぶんそのルームが作られた日時)が追加された結果,JSONからJavaBeanへのマッピングに失敗してしまうことが修正理由である。現状の作りは,JSONに含...

動的プロキシをシリアライズする具体的方法

「 Javassistを使った動的プロキシの作成」エントリと「 替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()」エントリを組み合わせると,実行時にその場で作った動的プロキシクラスを元にnewしたインスタンスをシリアライズし,異なるJavaVMプロセスにてデシリアライズできるようになる。今回はその具体的な方法を紹介しよう。 まずは,動的プロキシの対象となる抽象クラスを以下とする。これは「 Javassistを使った動的プロキシの作成」で取り上...

OLAPで脳みそ多次元

とある理由で情報の統計・分析についてのお勉強をすることに。うーん、なんで今まで避けて通ってきたんだろう、と思うくらい、なかなか面白い。 キーワードだけでも、 OLAP、OLTP 多次元データベース データマイニング データマート データウェアハウス VLDB スライシング ドリリング ドリルアップ、ドリルダウン ...

替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()

今回は「 動的プロキシとシリアライズ」エントリで取り上げた通り,writeReplace()メソッドとreadResolve()メソッドの使い方について紹介してみようと思う。 あるオブジェクトをシリアライズしたくなったとする。しかし,時として,そのオブジェクトをそのままシリアライズすることができない理由が出てきたりする。そのままシリアライズしてしまうとサイズが非常に大きくなってしまう,などがすぐに思い付く代表例だろう。その場合,シリアライズしたい情報を自分で決定し,さらに情報を加工するな...

Javassistを使った動的プロキシの作成

前回の「 動的プロキシとシリアライズ」エントリで紹介した通り,今回はその第一歩として,Javassistを使って動的プロキシを作成するための方法を紹介してみようと思う。 Javassistは,動的プロキシを作成するためのライブラリというよりは,バイトコードを操作するためのライブラリである。とは言っても,バイトコードに対する低レベルな処理は,Javassistに完全にお任せで大丈夫である。JavassistのAPIを使っている限りでは,バイトコードに関する知識はほぼ0で良い。Javassi...

動的プロキシとシリアライズ

一般的なDIコンテナに大抵標準装備されている機能に,AOPがある。例えば,あるオブジェクトのあるメソッドが呼び出された際に,そのメソッドを処理する前に何らかの処理を挟み込む,などがAOPである。この機構を実現するためには,動的プロキシと呼ばれる機能が必要となる。 デザインパターンのProxyパターンは,あるオブジェクトと同等のインタフェースを持つProxyクラスを作成し,そのProxyクラスの中から本来のオブジェクトを呼びだすようにする。クライアントは本来のオブジェクトを触っている感覚なの...