過去のエントリー:
around executionが適用されたメソッドの変数情報が欠落する
around executionが適用されたメソッドの変数情報が欠落する - その後
https://bugs.eclipse.org/bugs/show_bug.cgi?id=173978
1.6.1に持ち越されました。
気付けばもう1年以上修正されてない。それだけ需要無いのかな。
まぁ僕もbefore/afterで処理できたので取り急ぎ困ってないんだけど。
2008/03/27
2008/01/25
さらにさらに続報: Java6 on MacOS X
いつのまにかちょっと検索するとsoylatteの情報が沢山手に入るようになってますね。
その中から、個人的に試した範囲でまとめときます。
これでsoylatteのインストールは完了です。AWTやSwingを使う場合、以下の設定が必要。
ただし、僕の環境では以下の設定を行った後デスクトップにハードディスク以外のアイコンが表示されないようになり、ファインダーの左のショートカットのアイコンもおかしくなったので、他に設定が必要かも。.MacOSXを違う名前にし、再起動するとなおりました。
これでAWT、Swingも使えるようになります。ただしこのままだと日本語が出ないので、下記の設定を行います。
これで日本語が表示されるようになります。
X11上で表示されるLAFはGTKなので、これをOSXぽくするために、Quaquaをインストールします。
上記の設定で、AquaっぽいLAFでJava6が使えるようになります。
JConsoleもこのとおり。
その中から、個人的に試した範囲でまとめときます。
- SoyLatte: Java 6 Port for Mac OS X 10.4 and 10.5 (Intel)をダウンロード&ダブルクリック
- ターミナルで open /usr/local を実行
- ファインダーで1のsoylatte16-i386-1.0.1 を /usr/local にインストール
これでsoylatteのインストールは完了です。AWTやSwingを使う場合、以下の設定が必要。
ただし、僕の環境では以下の設定を行った後デスクトップにハードディスク以外のアイコンが表示されないようになり、ファインダーの左のショートカットのアイコンもおかしくなったので、他に設定が必要かも。.MacOSXを違う名前にし、再起動するとなおりました。
- ターミナルで mkdir ~/.MacOSX を実行
- ~/.MacOSXに以下の内容でenvironment.plistを作成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DISPLAY</key>
<string>:0.0</string>
</dict>
</plist>
(/Developer/Applications/Utilities/Property List Editorを使うと簡単に作れます。) - 一旦ログアウトし、再ログイン
- X11(アプリケーション/ユーティリティ/X11)を起動
これでAWT、Swingも使えるようになります。ただしこのままだと日本語が出ないので、下記の設定を行います。
- ターミナルで mkdir /usr/local/soylatte16-i386-1.0.1/jre/lib/fonts/fallback を実行
- ターミナルで open /usr/local/soylatte16-i386-1.0.1/jre/lib/fonts/fallback を実行
- 一般利用者向けIPAフォントのダウンロードからフォントをダウンロードして解凍し、ipa*.ttfをfallbackにコピー
これで日本語が表示されるようになります。
X11上で表示されるLAFはGTKなので、これをOSXぽくするために、Quaquaをインストールします。
- Quaqua Look And Feelをダウンロード(試したのはバージョン4.2)して解凍し、/usr/local/soylatte16-i386-1.0.1/jre/lib/extにlibquaqua.jnilibとquaqua.jarをコピー
- LAFを選択できないアプリでも、Javaの起動オプションに -Dswing.defaultlaf=ch.randelshofer.quaqua.QuaquaLookAndFeel を足せば、Quaquaを使わせることが出来ます。
上記の設定で、AquaっぽいLAFでJava6が使えるようになります。
JConsoleもこのとおり。
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)でダウンロードできるようになるのはまだ先のよう。
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が独力での開発にこだわってるそうな。ややこしい状況だなぁ。
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が起動しなくなったトラブルのメモ参照)。
パッケージ置いとくんだった。
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も手つかずが多いし、開発が追いついてないような気がする。
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を適用すると悲惨なことになるので、早く直して欲しいんだけども。
このエントリのその後。
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向けです。自己責任でどうぞ。
ここにあったパッチではうまくいかなかった(デフォルトエンコーディングが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レベルでどうサポートするかの方がでかい気がする。
時代はCPUの高速化より、マルチコア化に進んでいるので、Java言語もそれに対応して並列処理や関数型言語の要素を取り込むべきということらしい。(JavaやC++などの手続き型言語より関数型言語の方が並列化しやすい。)
最後の方になにやら物騒なことが書いてあるけど、Java言語にどう取り込むかよりも、JVMレベルでどうサポートするかの方がでかい気がする。
Erlang
twitterブームの陰で注目を集める“Erlang” - @IT
記事的にはいろいろツッコミどころがありますが、Erlangはおもしろそう。
そろそろ関数型言語も押さえとかないといけないかな。
Jaskellか、Kawaあたりから始めてみようかな。
記事的にはいろいろツッコミどころがありますが、Erlangはおもしろそう。
そろそろ関数型言語も押さえとかないといけないかな。
Jaskellか、Kawaあたりから始めてみようかな。
登録:
投稿 (Atom)