たまにっき。 / 2005-09
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2005-09-30 Fri
■ 学部時代の友人から電話がかかってきて
今から行くから
と.
で,A 嶺君,T 人さん,O 西さんの 3 人でやってきた.
共通の友人が明日結婚するので,メッセージカードを書けとのこと.
結婚するということを聞いて,一度びっくり.結婚する相手を聞いて二度びっくり.
へぇ.あの 2 人が結婚するのか・・・としみじみ.
■ Wikipediaがプロの物書きを超える?―米エスクワイア誌の挑戦
Wikipedia の中の人達はすごいねえ.
2005-09-29 Thu
■ AddTracer
少し JVMTI を触ってみた.AddTracer では今まで tracer 埋め込み処理が必要だった.それをクラスロード時に動的に埋め込めるようにした.すなわち,今までは静的にしか AddTracer を起動することができなかったが,本来動かしたいアプリケーションを実行するときに同時に AddTracer を起動させることが可能になった.
ただ,コンパイルが環境によっても変わってくるし,JDK 5.0 以降しか使えないので,まだ未公開.
以下の手順で実行している.
1. JVM 初期化時に AddTracer がロードできるようクラスパスを追加.
2. JVM 初期化終了後,AddTracer をロードし,new する.
3. クラスロードフックを設定.これでクラスがロードされる直前でバイトコードに対し,処理を行うことができる.
4. クラスロード直前のバイトコードに対して AddTracer を適用.
5. 以下のような実行だけで OK.事前に tracer を埋め込む必要もなくなった.
$ javac HelloWorld.java $ java -agentlib:addtracer HelloWorld <!-- begin Method HelloWorld#main // line 3 defined in - --> args[0-0] * assignment // line 3 args.length 0 assingment // line 3 java.lang.System#out<s> java.io.PrintStream@1a786c3 reference // line 3 Hello World! <!-- end Method HelloWorld#main // - ending at line 4 -->
うーん,便利だ,JVMTI.
■ Apache Tomcat 5.5.12-alpha Released
via TomcatがApacheのTLP(top-level project)に (slashdot.jp)
Jakarta Tomcat から Apache Tomcat になったのか.これからは http://tomcat.apache.org/ なのか.
でもアクセスすると
You're probably looking for this.
とか言われて http://jakarta.apache.org/tomcat/ に飛ばされる・・・.orz
■ ブログで教師を侮辱 学生に停学処分
ブログで教師を「上品ぶった」「欲求不満のオールドミス」と書いたある中学校の生徒は、この記述を削除するよう命じられた。
ブログだからってもんでもないと思うけどなぁ.「欲求不満のオールドミス」なんてのは口頭で言ったとしても,謝罪を要求されるのでは?
2005-09-28 Wed
■ 先人のソースコードに学べ - JavaAPI検索サイトKickJava.com
via とげのある日常
こんなのが次々と出てくるなぁ.
2005-09-27 Tue
■ プログラムに特化した不可逆圧縮手法
なるものを考えてみた.
これはプログラムを圧縮するとき,圧縮率が良くなるように,ただし,プログラムの仕様を変更することはないように,プログラムを改変しつつ圧縮しようという試みである.
1. プログラム中に含まれる予約語,グローバル変数を対象に各文字の出現頻度をカウントする.
2. ローカル変数名を,先ほど数えた頻度表から出現頻度が高い文字に変換する(スコープを考慮してできるだけ出現頻度が高い文字を使いまわす).
3. 他のファイルから参照されない関数名も出現頻度が高い文字に変換する.
4. 不必要なスペース,タブを削除する.
5. gzip なり bzip2 なりで圧縮する.
これで圧縮すると圧縮率が増えるはずだ.伸張後は indent(1) すればスペースを削除していても問題ないはず.
まぁ,しかし,こんなことをやって圧縮率を上げるより,gzip --best でもやった方が効率的だな.
■ これぞ温家宝の唱える「中国型民主」(笑)
via のんべんだらり
空想の話なら笑えるが,事実だとすると笑えねぇ.
■ Firefox 1.0系 はメモリを解放しない?
via 今日の戯言ChangeLog
about:config にて設定追加.
browser.cache.memory.capacity = 65536
■ es

こえー.実話を元にした話というのが更に恐い.
まぁ,実験が失敗したのは止める勇気がなかったからだな.どんなことでも色気を出すと終わってしまう.
2005-09-26 Mon
■ 国語テスト、消える長文 著作権理由で訴訟も
「教科書を読んでこたえるもんだい 『鳥のちえ』を読んでこたえましょう。53ページ10行めから、55ページ9行めまでを読みましょう」
小学校2年生の教科書に準拠したあるテストでは冒頭に、こんな記述がある。
最近の問題集は著作権の関係上こうなっているらしい.せちがらい世の中になったもんだ.
2005-09-25 Sun
■ Big Fish

泣く映画として,色んなところで紹介されていたので見てみた.
でも,私は泣くところまではいかなかった.まぁ,何回か見ると泣けてくるのかもしれないが.
内容はほのぼのとして,最後にほっとするような私好みの映画で良い.
あの 巨人のおっさん が俳優だということは以前丸見えかなんかで知っていたんだが,初めて出演作を見た.他にもいろんな映画に出てる みたい.
2005-09-23 Fri
■ いま,会いにゆきます

全体的にほのぼのしていて,良い.ドラマの最後は少し中と半端だったが,原作はきれいにまとまっていた.
ref. [2005-09-18]
2005-09-22 Thu
■ EXESEQ 動的バースマーク for Java
ふと思いついて現実逃避に,JVMPI を使って,EXESEQ 動的バースマーク を抽出するコードを書いてみた.hprof のソースを参照にすると簡単に書けた.
J2SDK 1.4 用.気が向けば JDK 5.0 用に JVMTI を使って書くと思う.
$ cat extb.cc
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <jvmpi.h>
typedef struct _method_list_item{
jmethodID method_id;
char *class_name;
char *method_name;
char *method_signature;
struct _method_list_item *next;
} method_list_item;
// global jvmpi interface pointer
static JVMPI_Interface *jvmpi_interface;
method_list_item *first = NULL;
void add_list(const char *class_name, JVMPI_Method method){
method_list_item* m;
m = (method_list_item *)malloc(sizeof(method_list_item));
m->method_id = method.method_id;
m->class_name = (char *)malloc(sizeof(char) * (strlen(class_name) + 1));
strcpy(m->class_name, class_name);
m->method_name = (char *)malloc(sizeof(char) * (strlen(method.method_name) + 1));
strcpy(m->method_name, method.method_name);
m->method_signature = (char *)malloc(sizeof(char) * (strlen(method.method_signature) + 1));
strcpy(m->method_signature, method.method_signature);
m->next = first;
first = m;
}
method_list_item *find_list(jmethodID method_id){
method_list_item *m;
method_list_item *prev = NULL;
for(m = first; m != NULL; prev = m, m = m->next){
if(m->method_id == method_id){
if(prev != NULL){ // 見付かったら一番前へ
prev->next = m->next;
m->next = first;
first = m;
}
return m;
}
}
return NULL;
}
// function for handling event notification
void notifyEvent(JVMPI_Event *event){
method_list_item *item;
int i;
switch(event->event_type) {
case JVMPI_EVENT_METHOD_ENTRY2:
item = find_list(event->u.method_entry2.method_id);
if(item == NULL){
fprintf(stderr, "birthmark> \n");
}
else{
fprintf(stderr, "birthmark> %s %s %s\n", item->class_name,
item->method_name, item->method_signature);
}
break;
case JVMPI_EVENT_JVM_SHUT_DOWN:
for(item = first; item != NULL; ){
method_list_item *m;
m = item;
item = item->next;
free(m->class_name);
free(m->method_name);
free(m->method_signature);
free(m);
}
break;
case JVMPI_EVENT_CLASS_LOAD:
for(i = 0; i < event->u.class_load.num_methods; i++){
add_list(event->u.class_load.class_name, event->u.class_load.methods[i]);
}
break;
}
}
// profiler agent entry point
extern "C" {
JNIEXPORT jint JNICALL JVM_OnLoad(JavaVM *jvm, char *options, void *reserved) {
// get jvmpi interface pointer
if ((jvm->GetEnv((void **)&jvmpi_interface, JVMPI_VERSION_1)) < 0) {
fprintf(stderr, "birthmark> error in obtaining jvmpi interface pointer\n");
return JNI_ERR;
}
// initialize jvmpi interface
jvmpi_interface->NotifyEvent = notifyEvent;
// enabling class load event notification
jvmpi_interface->EnableEvent(JVMPI_EVENT_JVM_SHUT_DOWN, NULL);
jvmpi_interface->EnableEvent(JVMPI_EVENT_METHOD_ENTRY2, NULL);
jvmpi_interface->EnableEvent(JVMPI_EVENT_CLASS_LOAD, NULL);
return JNI_OK;
}
}
$ gcc -mdll -Wl,--enable-auto-import -Wl,--add-stdcall-alias \
-mrtd -g -O3 -Wall -I /usr/local/java/j2sdk1.4.2_04/include/ \
-I /usr/local/java/j2sdk1.4.2_04/include/win32/ -mno-cygwin \
-o extb.dll extb.cc
$ java -Xrunextb HelloWorld
■ Javaで必要なのは周辺環境の知識
「Javaを覚えればJavaアプリケーションを作ることができる!」。当たり前のことのようですが、実は半分正解で半分誤りです。
だな.J2EE 分野じゃなくても,ちょっと凝ったことをしようと思うと拡張ライブラリ使うのは当たり前だなぁ.
■ 愛知万博マスコットの偽物登場 口コミで広がる
via キリゾー&モッコロ, キリゾー&モッコロ攻撃
万博協会は「人気が全国区になった証し。実害もなく、目くじらを立てるほどでもない」。
懐の深さがカッコイイ.
2005-09-21 Wed
■ 野々村「ふしぎ発見」初パーフェクト賞の記念パーティー
via /home/pochi/ChangeLog
あー,なんかパーフェクト取ってたような気がする.
2005-09-20 Tue
■ 「日本一」の道のりを踏破しよう
天神橋筋商店街を通り抜けると証明書がもらえるらしい.大阪に行って,暇なときにでもやるか?
と言いつつ忘れそうな予感はするけど.
2005-09-19 Mon
■ “方言ブーム”とです。 響き新鮮、想像する楽しみ
via Overlasting Life!!
関西で知り合った友人と関東で会って,標準語で喋られると非常に違和感を感じる.私は 2 年間東京に住んでいたが,京都弁から離れる気配すらなかったなぁ.
■ Google Earthで古代ローマの新遺跡を発見 伊
via 読書記録ChangeLog
Google すげぇ.
2005-09-18 Sun
■ いま,会いにゆきます
ドラマ最終回を見た.原作も映画も見ていないので,ラストがどうなるのかが気になっていたのだが,なるほどねぇ.
なんだか 時の鳥篭 を思い出した.
さて,積ん読状態にしておいた 原作 を読み始めよう.
2005-09-17 Sat
2005-09-16 Fri
■ Javaの理論と実践: 動的プロキシーで装飾する
Proxy を使ってのアダプタ実装は面白い.
こんなの.
public class GenericProxyFactory {
public static<T> T getProxy(Class<T> intf, final T obj) {
return (T)Proxy.newProxyInstance(obj.getClass().getClassLoader(),
new Class[] { intf },
new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(obj, args);
}
}
);
}
}
2005-09-15 Thu
■ 「パスワードのみのユーザー認証は危険」―専門家が警告
サイト毎にユーザー名やパスワードが異なる状況は何とかするべきだ
だな.
2005-09-14 Wed
2005-09-13 Tue
■ 帰ってきた.
やっぱり 12 時間くらいかけてバスで帰ってくる.移動にこれくらいかかるのであれば,2 泊 3 日じゃあ少し短いなぁ.写真はまた今度.
2005-09-11 Sun
2005-09-10 Sat
■ 清水順正 と 一二三
順正で好き焼を食った.そこで I 垣の子供,I 崎の子供に遊んでもらう.
その後,一二三で焼肉を食う.そこで,I 崎の下の子供に気に入られる.
別れ際にその子に泣かれそうになって非常に困る.「おっちゃんの子になるか?」と聞くも,お母さんに「うちの子や!!」と言われる.まぁ,両方とも冗談だとわかってるんだけども.
2005-09-09 Fri
■ ハリケーン「カトリーナ」は引退するかもしれない
甚大な被害を及ぼした台風・ハリケーンの名前は背番号の永久欠番のように残しておこう、という仕組み。
へぇ.
■ 【演出?】 阿部レポーターの台風中継 【ワロス】
118 :番組の途中ですが名無しです :2005/09/06(火) 23:58:53 ID:58ynp/7b0
カメラなんて、ブレてないしねwww
リポータはフラついてるのに
まぁ,
30 :番組の途中ですが名無しです :2005/09/06(火) 23:12:45 ID:IfYHtVKO0 ?##
そろそろこういうレポーターが一人死ぬ必要があるよな。


