2007/11/26

さらに続報: Java6 on MacOS X

Java 6 Port: Developer Preview Release 2 for Leopard and Tiger
FreeBSD用JavaをベースにしたJava6のMacOS Xポート。GUIにはX11を使ってて、32bit(i386)版がTiger、Leopard用、64bit(amd64)版がLeopard用に公開されてます。
但しライセンスはJRLで、OpenJDK(のGPL with Classpath Exception)でダウンロードできるようになるのはまだ先のよう。

2007/11/01

続報: Java6 on MacOS X

Update on 2007/11/26: Javalobby News Letter 20071031へのリンク追加

Javalobby News Letter 20071031より。

さらに状況は悪化してるようです。

・AppleのJavaフォーラムで、ユーザがJava6が出るのが遅いという不満を言ってたスレッドが消されてる。
・LeopardのJava5はJava2Dレンダリングが遅くなっている(apple.awt.graphics.UseQuartz=trueすれば速くなる。Fabrizio Giudici's Blog)。
・Goslingが自身のブログ(Solaris and OS X))で、もうAppleのJavaは諦めたって発言してる。(その後のエントリSolaris and OS X (continued)で、MacのJavaは悩みの種の一つと発言。完全に投げたわけではない?)

Goslingの2番目のエントリ(Solaris and OS X(continued))で述べられてるように、AppleのJavaチームは凄く頑張ってるんだけど、Appleの興味がJava以外に移ってて、そもそも開発リソースがあまり割かれてないのかもしれない。

ここはSunがJava6、Leopard用のJava5の開発に対してもっと支援して欲しいところなんだけど、Appleが独力での開発にこだわってるそうな。ややこしい状況だなぁ。

2007/10/31

Java6 on MacOS X

最近MacOSXのJava6について何も聞かないなぁと思ってたんですが。

LeopardのJavaについて - 矢野勉のはてな日記

上記ページによると、LeopardにもJava6が含まれてなくて、ADCのサイトでダウンロードできたJava6開発版も無くなってるとのこと。実際ADC行ってみると無くなってました。

一体どうなってるのやら。
つい最近Office動かすためにJava6開発版削除したとこなのに(Rosettaが起動しなくなったトラブルのメモ参照)。
パッケージ置いとくんだった。

2007/10/30

AspectJ1.6

長らく音沙汰の無かったAspectJ1.6のリリースプランですが、ようやくアナウンスが出ました。
http://www.eclipse.org/aspectj/plans_new.php
今んとこM1、finalのリリースが予定されていますが、まだリリース日の情報は無し。

https://bugs.eclipse.org/bugs/buglist.cgi?query_format=adva...
現在1.6.0M1、1.6.0にターゲットされてるバグは77個。
全部手つかず。1.5.4も手つかずが多いし、開発が追いついてないような気がする。

around executionが適用されたメソッドの変数情報が欠落する - その後

http://takao.blogspot.com/2007/02/around-execution.html
このエントリのその後。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=173978
上記バグによると、AspectJ1.5.4にターゲッティングされたとのこと。
ただし、AspectJ6に持ち越しかも。
AxisでWebサービス化するメソッドにaround executionを適用すると悲惨なことになるので、早く直して欲しいんだけども。

2007/06/30

trac通知メールのJIS(ISO2022JP)化

tracの通知機能はUTF-8 + Base64でメールを送るんだけど、古いメーラーで読めなかったり、SPAMと判別されやすかったりするらしいので、JIS化。
ここにあったパッチではうまくいかなかった(デフォルトエンコーディングがUTF-8だからかな)ので、自作。
なかなかうまくいかなくて、ものすごく強引なコーディングになってますが、今のところ正常に動いてます。今見るともっと効率的にかける部分もあるので、も一回見直さないといけないかも。

trac 0.10.4-ja-1向けです。自己責任でどうぞ。

--- notification.py.orig 2006-12-09 19:06:16.000000000 +0900
+++ notification.py 2007-06-29 17:50:38.000000000 +0900
@@ -172,7 +172,13 @@
self._charset = Charset()
self._charset.input_charset = 'utf-8'
pref = self.env.config.get('notification', 'mime_encoding').lower()
- if pref == 'base64':
+ if pref == 'iso-2022-jp':
+ self._charset.header_encoding = BASE64
+ self._charset.body_encoding = None
+ self._charset.output_charset = 'iso-2022-jp'
+ self._charset.input_codec = 'utf-8'
+ self._charset.output_codec = 'iso-2022-jp'
+ elif pref == 'base64':
self._charset.header_encoding = BASE64
self._charset.body_encoding = BASE64
self._charset.output_charset = 'utf-8'
@@ -289,6 +295,7 @@
def send(self, torcpts, ccrcpts, mime_headers={}):
from email.MIMEText import MIMEText
from email.Utils import formatdate, formataddr
+ from email import base64MIME
body = self.hdf.render(self.template_name)
projname = self.config.get('project', 'name')
public_cc = self.config.getbool('notification', 'use_public_cc')
@@ -297,7 +304,7 @@
headers['X-Trac-Version'] = __version__
headers['X-Trac-Project'] = projname
headers['X-URL'] = self.config.get('project', 'url')
- headers['Subject'] = self.subject
+ headers['Subject'] = base64MIME.header_encode(self.subject.encode('iso-2022-jp'), 'iso-2022-jp', maxlinelen=1024)
headers['From'] = (projname, self.from_email)
headers['Sender'] = self.from_email
headers['Reply-To'] = self.replyto_email
@@ -345,7 +352,10 @@
headers['Cc'] = ', '.join(pcc)
headers['Date'] = formatdate()
# sanity check
- if not self._charset.body_encoding:
+ if self._charset.output_charset == 'iso-2022-jp':
+ body = unicode(body, 'utf-8').replace(u'\uff5e', u'\u301c')
+ body = body.encode('utf-8')
+ elif not self._charset.body_encoding:
try:
dummy = body.encode('ascii')
except UnicodeDecodeError:

2007/05/08

Javaと並列処理と関数型言語

「Javaに並列処理と関数型言語の要素を」、ティム・ブレイ氏 - @IT

時代はCPUの高速化より、マルチコア化に進んでいるので、Java言語もそれに対応して並列処理や関数型言語の要素を取り込むべきということらしい。(JavaやC++などの手続き型言語より関数型言語の方が並列化しやすい。)

最後の方になにやら物騒なことが書いてあるけど、Java言語にどう取り込むかよりも、JVMレベルでどうサポートするかの方がでかい気がする。

Erlang

twitterブームの陰で注目を集める“Erlang” - @IT
記事的にはいろいろツッコミどころがありますが、Erlangはおもしろそう。
そろそろ関数型言語も押さえとかないといけないかな。
Jaskellか、Kawaあたりから始めてみようかな。

2007/03/20

JBuilder2007 Free Edition!!

CodeGear | Trial and Free Versions - Borland
EclipseベースのJavaIDE、JBuilder2007の無償版、Turbo JBuilder 2007が出ました!
日本語へのローカライズも行われてます。やるねぇBorland。いや、CodeGearか。
ライセンスに関しては、特に制限はない模様。Turbo版に特別なライセンスは記述されていないので、Developer版等と同様に使えそう。インストール後のレジストレーションも必要ありません。但しWindows版のみ。

入ってる内容は以下の通り。
Subclipse:
・SVNチームプロバイダCore

FindBugs:
・FindBug Plug-in

Spring IDE for Eclipse:
・Spring IDE

Mylar Technology Project:
・Mylar Plug-in

JBuilder:
・JBuilderプロジェクトのインポート
・Maven2.0インテグレーション拡張機能
・RDB InterBaseプラグイン
・XPlanner用Mylarコネクター

Borland(TM) CaliberRM Eclipse Client 2006:
・CaliberRM Eclipse Client

Web Standard Tools:
・Dali Java Persistence API(JPA) Tools
・J2EE Standard Tools(JST)
・Web Standard Tools(WST)

BIRT Example:
・Apache Commons Codes
・BIRT Chart Context-sensitive Help
・BIRT Chart Framework
・BIRT Chart Runtime
・BIRT Context-sensitive Help
・BIRT Example
・BIRT Report Designer
・BIRT Report Runtime
・Business Intelligence and Reporting Tools
・Lowagie Itext
・Mozilla Rhino
・W3C Sac

Eclipse Data Tools Platform Model Base
・Eclipse Data Tools Platform
・(Data Tools Platform関連他5個)
・Eclipse Java Devlepment Tools

TPTP Platform Samples
・TPTPに加え、EMFやGEF、Visual Editorなど

よく使われるフリーのプラグインに加え、CaliberRMのクライアントやInterBaseやMaven対応ってとこ。
まぁ、EclipseのCodeGearセレクションプラグイン集って感じで、独自機能は少しです。
ただ僕が常用してるうち、AJDTとPropedit以外のプラグインはほぼそろってるので、なかなか快適。

2007/03/12

Project DarkstarがGPLに

MMORG用のフレームワーク、Project DarkstarがGPLでリリースされることが発表されました。
Sunのニュースリリース
Project Darkstar

('L'の付かない)GPLだと当然これを使って作ったアプリケーションにも影響が及びます。なのでこういう基盤もののライセンスにGPLってのはかなりきつい制限を設けることになるんだけど、Sunもそれを認識してて、GNU classpathみたいな例外を検討中みたいです。
http://www.javagaming.org/forums/index.php?topic=16173.msg128008#msg128008

ところで、基盤部分にはApache MINAを使ってるっぽいです。Grizzlyじゃないのね。こちらも要注目かな。

2007/03/10

AOP関連の研究プロジェクト

http://aosd.net/wiki/index.php?title=Research_Projects"
アスペクト指向関連の研究プロジェクトのリスト。研究プロジェクトといっても、既にプロダクトがリリースされてるものがたくさんあります。
Supported Systemsの章には様々な言語用のAOP処理系がリストアップされてて、PHPRubyperlPythonXMLまであります。
知らないうちに、いろんな言語でAOPが利用できるようになってるんですね。

2007/03/04

プロパティを巡る議論

Why Java Properties are BAD, ugly and uncomfortable
何故Javaのプロパティはだめで醜くて不自由なのか。
この人の主張は、
・"->"が醜い
・セッタメソッドでパラメータオーバーロードが使われたら、同じメソッド名にも関わらず一つはプロパティ用で一つは単独のメソッドになる。この状態も醜い。
・なのでプロパティサポートは良いことではないけど、getXXX、setXXXを自動で生成するだけならありかも。
ってなところ。

プロパティを巡る議論はいろいろあって、様々な人から提案が行われてる。もっとも代表的な議論はおそらくこれ。Property Support in Java, the Java Way™

コードはこんな感じ。

class Test{
public property String name;
public static void main(String[] args){
Test t = new Test();
t.setName("Joe");
System.out.println(t.getName());
t->name = "Joe";
System.out.println(t->name);
}
}

propertyを使って宣言すると、getXXX/setXXXが自動的にされること、及びpropertyに対して短縮構文でgetXXX/setXXXにアクセスできることが主要な特徴。ここから派生してもっと過激なこともたくさん書いてあるけれども、基本はそんな感じ。

で、これには様々な人から賛否両論があって、というか否定的な意見の方がよく目にするんだけど、批判は短縮構文"->"に集中してる。確かにこれは醜いと思う。
ただし、重要な意見として、プロパティはシンタックスシュガーではなく、コントラクトだというものがある。これは核心を突いていると思う。つまりは単に記述を楽にするものではなくて、プロパティであること自体が意味を持ち固有の機能を持つってこと。固有の機能として、JavaDocやリフレクション等に情報が反映されて、値の検証が行えたり、正しい値がどのようなものか明示できるようになることが挙げられている。

僕も"->"は醜いと感じるし、プロパティ自体好きではないんだけど、プロパティとしてデフォルト値や検証情報(0以上の数値とか2000年以降とか20文字以内とか)が記述できて、Hibernate等のO/Rマッピングは基本的にプロパティを対象とする、なんて使われ方であれば、利点の方が遙かに大きいので導入して欲しい。

System TrayのOS対応

Java6から利用できるようになったシステムトレイAPI。
Windowsだともちろんシステムトレイ、LinuxのGnomeも画面下のトレイ部分、そしてMacOS Xではメニューバーの右にアイコンが出るらしい。

WindowsとGnomeの例:
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/

Mac OS X:
http://d.hatena.ne.jp/tarchan/20061217

2007/02/22

[aspectj-users] AspectJコードをJavaコードに変換する

[aspectj-users] Covert AspectJ Code to Equivalent Java Code
AspectJ 1.0まではJavaコードを吐くオプションがあったけど、最新版ではどうしたらいいの?って話。
AspectBench Compilerを使えばできるらしい。Load Time Weavingとか、サポートしていない仕様(リスト)も結構あるんだけど、ほとんどのAspectJのコードを解釈できて、-davaオプションをつければクラスファイルの代わりにJavaコードを生成するらしい。
さらに自由にいろんな機能を実装してテスト出来るように、拡張性の高いフレームワークが使われてるらしい。すご。

2007/02/18

Grizzly

http://journal.mycom.co.jp/articles/2007/02/07/grizzly/
https://grizzly.dev.java.net/
http://weblogs.java.net/blog/jfarcand/

NIOベースの通信フレームワーク。スケーラブルなサーバ用に開発されてるらしい。
もともとGlassFishの通信フレームワークとして開発されたものが、独立したプロジェクトとしてスピンアウト。
HTTPD相当の機能も実装されてて、Cometdにも対応してます。

JBuilder2007 Released

JBuilderの最新版がリリースされてます。
http://www.borland.com/jp/company/news/press_releases/2007/20070214_jbuilder2007.html
http://www.borland.com/resources/jp/pdf/products/jbuilder/jbuilder_2007_datasheet.pdf
http://www.borland.com/resources/jp/pdf/products/jbuilder/jbuilder_2007_feature_matrix_ja.pdf

Eclipseベースになって最初のリリースです。
確かにTogether(UML)とプロファイラが使えるのはうれしい。でも高い。
あと、フリー版が無いのが残念。

2007/02/17

スパムブログ解除

リクエストしたら半日でレスポンスが返ってきた。
一回目は何故か解除されてなかったんだけど、二回目で無事解除。
よかったよかった。

Java7 Roundup

http://tech.puredanger.com/java7/
Java7に入るかもしれない仕様のまとめ(非公式)。
Javaの初期サイズを小さくするJava Kernelとか、スクリプトエンジンの追加(Jython, JRuby)とか、 NIO2とか。
DateTimeAPIやクロージャも挙げられてます。

Java6はノートパソコンで使用できない!?

Seems like you can't use Sun's Java SE 6 on laptops
わはは。
ライセンス条項に、デスクトップコンピュータやサーバでの利用を許可しますって書いてるらしい。
厳密な意味でのデスクトップに制限してるわけはないんだけど、このブログの著者はApache Harmonyに絡めてネタにしてます。

http://yro.slashdot.org/article.pl?sid=05/08/29/2339216によると、Flashにも似たようなことがあったんだとか。

2007/02/16

lg3d-wii

Wiimote for LG3D
うは。WiiリモコンをLG3Dで使うためのプロジェクトが立ち上がりました。

ゲームコントローラ用のAPIにJInputってのがあるんですが、それ経由でWiiリモコンを使えるようにしようというプロジェクトです。
Linuxがターゲットで、Wiiリモコンの制御にはlibwiimoteを使ってるみたい。

ほんとにLG3Dは活気があるなぁ。

Wiiリモコン周りのハックは着々と進んでるようで、今はセンサーバーも代用品があるみたいです。
http://jonpeck.blogspot.com/2006/12/wii-diculous.html
こんなでかいスクリーンでやってみたい。

Mac修理

MacBook Pro でキーボードの下からノイズが聞こえる

以前から気になってたので、修理に出したところ、2日で返ってきました。けいはんなの山奥から出して2日ですよ!!どんな修理ラインしてるんだアップル。もちろんノイズもばっちり消えてます。

2007/02/15

Windows VistaとOpenGL

なんかいろんな情報が散在しててまとめ切れてないんですが、
要は、VistaではOpenGLはデフォルトでは入って無くて、CD(DVD)に入ってるMicrosoft版はDirect3D上に実装されてて、1.1しかサポートして無くて、従来の50%の速度しか出ないけど、NVIDIAやATIのドライバを入れればOKってことらしい。

参考:
http://forums.java.net/jive/thread.jspa?messageID=203534

http://slashdot.org/articles/05/08/06/177251.shtml
http://www.dailytech.com/article.aspx?newsid=3760

2007/02/14

スパムブログ

なんてこった。
いつの間にか投稿時に画像認証が必要になってて、bloggerがポリシーを変更したんだと思ってたら、このブログがスパムブログと認識されてたんですと。
誰か間違ってフラグ設定ボタン押したりした?

around executionが適用されたメソッドの変数情報が欠落する

Missing LocalVariableTable debug info for around advice
上記バグで一端作業が行われてるんだけど、AspectJが生成する内部メソッドに情報が移されただけで終わってる。しかもアドバイス対象のメソッドの情報については議論されてない。

なので新しいバグを登録してみました。

Missing LocalVariableTable for methods adviced by around execution.

100195のコメントの雰囲気では、なんとなく解決が難しそうだけど、現状ではaround executionを適用したメソッドをjava2wsdlに喰わせると、引数がin0、in1なんて悲しいことになるので、なんとか解決して欲しいんだけど。

2007/02/13

Javaのためのクロージャ(v0.5)

Java What's Newより。
将来のJavaに入るかもしれない、クロージャ仕様の新版(v0.5)が公開されてます。
Closures for the Java Programming Language

クロージャとは、遅延実行されるパラメータ化されたコードブロックです(上記リンク先より)。クロージャがあることによって、今まで匿名クラスを作成して書いてたような処理がより簡単に書けます。ま、早い話が、特定のインターフェースを継承した匿名クラス定義の短縮構文です。

例えば、intを2つ引数にとり、それらを加算して返すものは次のように記述されます。

{int x, int y => x + y}

こいつも型を持っていて、その型は次のように表現されます。

{int, int => int}

なので、

{int, int => int} calc = {int x, int y => x + y};
calc.invoke(3, 5); // 8
calc = {int x, int y => x - y};
calc.invoke(3, 5); // -2

てなことになります。

背後には当然Javaの型システムが働いていて、クロージャに対応するインターフェースがコンパイラにより生成され(synthetic付き)ます。

上記リンク先を深く見ていくと、いろいろニヤリとさせられるトピックが検討されてます。同じシグネチャのクロージャ間の互換性とか、例外のサポートとか、Unreachableとか、Genericsとの関係とか。Open Issues(v0.5)には、リフレクションやvolatile、末尾再帰はどうしようかみたいなことも挙げられてます。

いや、当初はまたXMLリテラル並のゴテゴテした機能追加だと思って嫌だったんだけど、仕様を見ると非常に興味深い議論が重ねられてて、俄然興味が沸いてきました。是非Java7に搭載して欲しい。

2007/02/12

LG3Dの将来

http://forums.java.net/jive/thread.jspa?messageID=198544によると、MMOG基盤のProject Darkstarを使って分散共有ができるシーンマネージャを作り(Project Wonderland)、その上でデスクトップを共有させたりってなことを考えてるらしい。

LG3Dの世界の共有となると、ウィンドウやアプリケーションって単位だけではなくて、3D空間の共有を意識することになるんだな。おもしろい。

2007/02/10

Yahoo! Pipes

安藤日記より。

Yahoo! Pipesが公開されたらしい。
サイトの説明は"Pipes is an interactive feed aggregator and manipulator."となってるので、インタラクティブに作成できるフィード生成エンジンといったところかな。GUIでいろんなサービスをマッシュアップして、簡単に作れるみたいです。

既にたくさんのPipeが登録されていて、New Your Timesのページからキーワードを抽出してFlickrから写真をとってくるもの(New york Times Thru Flickr)や、いろんなニュースをごちゃ混ぜにしたもの(Techcrunch Citations)、指定場所付近のアパートを探すもの(Apartment Near Somethingなんかも。

おもしろいのは、パラメータを与えてPipeを実行できたり、特定のPipeからコピーして自分のPipeを作成できるところかな。

Pipe作成に利用できるモジュールは、以下の通り(A Complete List of Pipes Modulesより)
Content Analysis
Count
Date Formatter
Date Input
Fetch URL
Filter
Flickr
For Each Replace
For Each Annotate
Google Base
Location Extractor
Location Input
Number Input
Sort
String Concatenate
Text Input
BabelFish
Truncate
Union
Unique
URLBuilder
URL Input
Yahoo! Local
Yahoo! Search

2007/02/08

mozillaを使ったHTMLパーザ

JavaNews.JPより。
Mozillaのエンジンを使ったJava用HTMLパーザ.Windows,Linux,Mac用があります.
Mozilla Java Html Parser

Mozilla使ってるので強力で速い(JavaのDOMパーザと同程度)のはいいんだけど、Mozillaのモジュールが60MBもあるらしい。

MacFUSE

やばい。便利すぎる。MacでNTFSに書き込めるようになります。

macfuse - Google Code
ここからMacFUSE Coreをダウンロード&インストールして、
MacFUSE : FUSE for Mac!
ここからMacFUSE ToolsとNTFS-3Gをダウンロード&インストールで使えます。

マウントは、ニテンイチリュウ: MacFUSEのとおり、

$mkdir /Volumes/Windows
マウントポイントの作成。Windowsの部分は好きな名前で可。

$sudo /usr/local/bin/ntfs-3g /dev/disk0s3 /Volumes/"Windows" -o ping_diskarb,volname="Windows"

こんな感じで。
USBで繋いだディスクを難なく認識して、書き込むことができました(デバイスは/dev/disk4s1)。すげぇ。

LG3D上でPDFを表示するアプリケーション

JSaddle - PDF Viewer for LG3D : Prototype
JPedalを使ったLG3D用のPDFビューワ。Pedalに対してSaddle。次はHandle?

こういう、ぐるぐるしたインターフェース以外に何かないのかなぁ。

あと、LG3Dが3Dなのに立体感が無いのは、陰が無いからなんだろうな。

2007/02/06

Lingrの新版リリース

お待たせしました、ガツンとLingrの新リリースです(CNET Japan)
Lingrの新版がリリースされました。

まだどういう位置づけのものなのかよくわかってないんですが、ユーザがAPIを利用していろんなアプリケーションを構築してるようです。Cometを利用しているので、HTTPベースで利用できるセッション管理サーバって感じなのかな。

2007/02/03

JRubyコンパイラはRuby Cより2倍高速

JRuby Byte Code Compiler Outperforming Ruby C
但し、まだまだコンパイルできないコードがある、現在開発中の新しいコンパイラでの話。
でもまぁ、かなり期待できるんじゃないでしょうか。

以前から松本さんは、誰かがRubyを再実装したら今より速いものができるはずって言ってたけど、まさかそれがJavaでの実装とはね。

書籍へのリンク

調子に乗ってamazonアフィリエイトも追加してみた。
お薦めの本を常時2冊だけ載せときます。
結構縦に長いので、配置が難しい。あまりうるさくてもいけないし、あまり下にあっても意味が無いし。

ところで、adsenseにしばしば変な広告が出てる気がするんですが。
どのキーワードで出てきてるんだろ。

2007/02/02

Date, Calendar APIの再設計

Date、Calendarに変わる時間管理APIを策定するJSR310が開始されました。
もうこのままDate/Calendarで行くのかと思ってたけど、これで使いやすくなってくれたらうれしい。

ベースはJoda Timeというオープンソース(Apache License 2.0)ソフトウェアで、既に結構実績があるらしいです。作者がスペックリードの一人なので、かなりこれに近いAPIになるはず。

2007/02/01

Sub Labs

Sun Inner Circle Vol.44

Sunが研究中のいろんな技術が紹介されてます。ちょっと気になるのが、Project Darkstar。大規模マルチプレーヤー型オンラインゲーム用のサーバやクライアントライブラリです。クライアント・サーバ型アプリケーションの通信部分を提供してくれるフレームワークといったところ。モバイル端末も意識されてるらしい。

また、オープンソースDRMの、Project DReaMなんてのもあります。

JazzのWebサイトができるらしい

IBM、オープンソースプロジェクト「Jazz」用ウェブサイトを立ち上げへ(CNET Japan)
Jazzとは、チーム開発向けのEclipseと連動するメッセンジャーみたいなものらしい。
分散開発向けのものとしては、既にEclipseにプラグインがあったような。

開発用に限らず、いろんなアプリケーション用のコラボレーション基盤があったら便利でしょうね。

2007/01/26

[aspectj-users] ジェネリクスを使用したクラスの指定

[aspectj-users] Around advice and return type

以下、上のリンク先からの引用。
public abstract aspect Base {
pointcut matchGetA() :
call(T *.*(..));

T around() : matchGetA() {
T result = proceed();
...
return result;
}
static aspect BaseA extends Base<A> {};
static aspect BaseB extends Base<B> {};
static aspect BaseC extends Base<C> {};
}

こんな感じ。型パラメータ付き抽象アスペクトとして書いておいて、個別に具象化。
アスペクトの再利用性が高まります。

2007/01/25

新しいBloggerへの移行

新しいBloggerへ移行してみました。
これを機にAdSense付けてみたり。
もっとテンプレートとかが大幅に増えるのかと思ってたけど、そうでもないんだな。ただレイアウトの変更はものすごく楽になった。いろいろ試してみよう。