jFD開発したりしなかったり日誌
2008-03-25 [長年日記]
_ 中国
これくらいわかりやすく、中国には人権なんて存在しないって事を説明してくれる
事件は無いだろな。
平和の祭典ねえ・・・
本当は政治なんか関わり合いたくないんだけど、4月26日の長野での聖火リレー、
帰省ついでに抗議の横断幕でも揚げにいこうか。
こんな話もあることだし。
【北京五輪】長野での聖火リレーに中国側が“注文”−中国政府を批判する活動を排除するよう要求
中国以外の多くの国は、そんな言論封鎖を許す決まりは無いんだってば。
この国は何でこんなにずれてるんだろう。
しかも自分がずれてることに気が付いてないから、さらに周りを怒らせる。
_ jFD2
ロバナイトでnidoさんから、Groovyスクリプトの起動が微妙に遅いので、コンパイルされたクラスを
キャッシュして欲しい、というリクエストをいただいた。
なるほど、ごもっとも。
jFD2のGroovy実行は、GroovyShell#evaluate(String)でやっていて、キャッシュだとかは
一切しておらず、毎回スクリプトをコンパイルしてから実行してるので、確かにパフォーマンスは
そんなに良くない。
とりあえず対策を考えて実装してみた。
GroovyClassLoaderクラスを使って、スクリプトからScriptのサブクラスが生成し
(インスタンスではなくクラス)、これをメモリ内にキャッシュするというのをやってみた。
これで、2回目以降のスクリプト起動時のコンパイル時間を省くことが出来る。
しかし、逆に言えば毎回初回は必ずコンパイル時間が発生してしまうし、一回しか使われない
スクリプトだと、キャッシュするだけで再利用されることのないクラスが発生して無駄とも言える。
そうこうしてたらnidoさんからのご意見で、.classファイルを直接実行できれば、スクリプト言語の
種類を問わずコンパイル済みのクラスを実行できるという意見が。
うーむむむむ。
調べてみたが、各言語毎にコンパイルされたクラスの型が異なるため、なんだかんだ言って
言語毎のアダプタを作る必要はありそうだが、方向性としてはありだろう。
とりあえずどうした物か。
_ Shureのイヤホン
皮膜破れ→断線→新品交換を繰り返し、この前の年末年始、3回目の修理でE3cからSE310に
交換してもらったShureのイヤホンだが、3ヶ月でまた皮膜にヒビが。
多分、この後1ヶ月程度で皮膜が剥けて耳の皮膚に刺さるようになり、芯線がほつれて
交換することになるだろう。
・・・もう、いい加減にして欲しい。
保証は7月末まで残ってるんでまた交換に出すが、完全にうんざりしてて、むしろまだ縁が
切れないのが鬱陶しく感じられる。
おそらくこれで最後だ。
7月末に保証が切れたら縁切りだ。
速攻で別メーカーのを買おうと思う。
_ いや、
修理から戻ってくるのを待つ間、iPodのおまけのイヤホンしかないというのはもう
耐えられそうにない。
前倒しで何か買っちゃうか。
値段的には、Ultimate EarsのSuper.fi 3 Studio(ケーブルが交換できるので断線しても安心)、
ビクターのHP-FX500(振動板、ボディが木製)、オーディオテクニカのCK9あたりか。
- shure 皮膜 ×6 / キーワード不明 ×2 / オーディオテクニカ 断線 皮膜 ×1 / shure イヤホン 皮膜 ×1 / SE310 断線 ×1 / ビクター 木製オーディオ ×1 / ultimate ears jfd2 ×1 / HP-FX500 断線 ×1 / groovy GroovyClassLoader ×1 / jfd script ×1 / SE310 新品交換 ×1 / HP-FX500 ヒビ ×1 / 皮膜断線 ×1 / evaluate 遅 groovy ×1 / groovy scala 2008 ×1 / groovy コンパイル済み ×1 / se310 断線 保障 ×1 / shure 皮膜 交換 ×1
Groovyのキャッシュできましか。ありがとうございます。
他の言語でのマクロの需要が不明なので今の所それでいいかもです。
「Scalaでマクロが書けるよ」とアナウンスすると怪しいマクロ書きが召喚できるかもしれませんが・・。
> 各言語毎にコンパイルされたクラスの型が異なるため
については、クラスの中で
void exec(com.nullfish.app.jfd2.JFD jfd)
というメソッドを作ってその中に処理を記述すると決めておけば
Javaのリフレクションを使ってDuckTypingで呼び出せそうですが、
例によって深く考えてないので戯言として聞き流して下さい。
Scalaの人たちが興味持ってくれたら確かに楽しそうですね。
今あれに手を出してる人たちはトップレベルで濃いと思います。
特定のメソッドを起動用にするのはありだと思うんですが、スクリプト特有の、
Hello World!が1行で書けるお手軽さが失われちゃうのが気になります。
Bean Scripting Frameworkに対応するのも一つの手ですね。