たまにっき。 / 2005-12
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-12-30 Fri
2005-12-29 Thu
2005-12-27 Tue
2005-12-26 Mon
2005-12-25 Sun
■ あなたの企業、URL で損していませんか (2) www を揃える理由
via オレンジニュース
ちなみに,この日記には 4 種類のアクセス方法があります.
- http://www.oikaze.com/~tamada/Diary/
- http://www.oikaze.jp/~tamada/Diary/
- http://oikaze.com/~tamada/Diary/
- http://oikaze.jp/~tamada/Diary/
個人的には www 付きの com で統一しているつもりだけど,www なしだったり oikaze.jp でのアクセスもあるみたい.
■ ペイ・パー・ビュー方式の番組が海賊版に 中国
中国の街角で売りさばかれている海賊版DVDについて、ハリウッドはずっと苦情を述べていたが、今度は中国が製作した最も高価な映画がそのターゲットになっている。
■ あの「うまいトリ肉」は作れるらしい
via cl.pocari.org
へぇ.保温を使うのか.こんどやってみよう.
■ シングルトンオブジェクトの lazy instantiation
浅煎り珈琲 の オブジェクトの生成の抑制 にちょっと面白いのがあった.
private static final な singleton オブジェクトを lazy に初期化しようというものだ.
static final なので,クラスのロード時に初期化される必要があるが,本当に必要なときまで初期化を送らせたい.
それを実現するトリッキーな方法.
$ cat Singleton.java
class Singleton {
static{
System.out.println("Singleton loaded");
}
private Singleton(){
System.out.println("Singleton instantiation");
}
private static class SingletonOnlyOne {
static{
System.out.println("Singleton.SingletonOnlyOne loaded");
}
private static final Singleton singleton = new Singleton();
}
public static Singleton getSingleton() {
System.out.println("getSingleton");
return SingletonOnlyOne.singleton;
}
public static void main(String[] args){
System.out.println(getSingleton());
}
}
$ javac Singleton.java
$ java Singleton
Singleton loaded
getSingleton
Singleton.SingletonOnlyOne loaded
Singleton instantiation
Singleton@131f71a
こんな感じ.インナークラス(static が付いているから正式にはインナークラスじゃないけど)からアウタークラスのコンストラクタを呼び出す.インナークラスはアウターのロード時にはロードされない.getSingleton メソッド内でインナークラスの private static final なフィールドを参照するときに始めてインナークラスがロードされ,singleton オブジェクトが初期化される.
こういう要求が本当にあるかは微妙.だって,getSingleton 呼び出しで初めてシングルトンなクラスがロードされることが多いだろう.
更に,別の解決法として,private static final なフィールドじゃなくて,private static なフィールドにして,getSinletonを以下のようにすれば良いから.
public synchronized static getSingleton(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
本当にlazy instantiation したければ private static にして getSingleton 内で初期化するだろうな.
2005-12-23 Fri
■ Emacs クイックリファレンス
via 読書記録ChangeLog
めも.だけど,大体覚えているなぁ.
2005-12-21 Wed
■ デスクトップドドド
デスクトップにドドドドを.必要な環境にはやっぱりジョジョ愛.
2005-12-20 Tue
■ 反省会
某大学の先生方と しちりん・炭火焼・焼酎横酒 平成 にてシステムプロジェクトIIの反省会.
反省会を行いつつ飲んでると,O 星先生が 森伊蔵 という焼酎をつい先日初めて飲んだとのこと.電話による予約抽選販売なので,どこにあるかわからない一品だそうな.
で,店の棚を見ると,ありました,森伊蔵.
頼んだ.一杯 1,500 円.若造の私にはあまりよく味がわかりませんでした.

で,5 人で 5 杯頼もうとしたけど,2 杯でなくなった.となると,極上が出てきましたよ.

こっちは一杯 3,500 円.1 杯だけ頼んで,一口飲まさせて頂く.こっちは焼酎の香りがしない.
やっぱり,若造の私には,味が良くわかりません.
森伊蔵を飲んでみたい方は しちりん・炭火焼・焼酎横酒 平成 へ.
2005-12-19 Mon
■ トーク・トゥ・ハー

まぁ,世間一般で言われているほど良い映画だとは思わなかった.
というか,植物状態の女性を看護師が愛しているからと言ってレイプしたことを,正当化しているように見えるのがわけわからん.
2005-12-18 Sun
■ Winter/Reflection

「ここにしか咲かない花」のカバーである Flowers Bloom が良い.
2005-12-17 Sat
■ 友人の結婚パーティのため,名古屋へ.
名古屋から最終の新幹線に乗れば,近鉄の奈良行き最終に連絡していた.
■ 友人(♀)からメールが届く
メールアドレスが変わった&引越し完了との連絡.
なのだが,スパムフィルタに引っかかった.その子が結婚して姓が変わっていることにしばらく気付かず,また,メールアドレスも男性の名前(その子の旦那の名前)なので,危うく消してしまうところだった.
こういうのもスパムに埋もれるので,スパムはイヤだなぁ.
2005-12-16 Fri
2005-12-15 Thu
■ DENIM の日本語化
Web デザインのためのツールである.デモを見ればどのような感じかがわかるかも.
ただ,日本語が通らない.というか,Comic Sans MS フォントがある環境なら,強制的にフォントを Comic Sans MS にするので,困る.
あと,画面をマウスの右ボタンでドラッグすると,スクロールする (Adobe Reader で PDF を見たときみたいに) のだが,Adobe Reader とはスクロールの向きが全く逆になっているので,困る.
なので,修正してみた.日本語化については,ここにあるが,denim のバージョンが古く,そのままでは日本語化できない.更にソースファイルをダウンロードするページが見つからない.仕方ないので,クラックしてみた.ちなみに,denim のライセンスは Berkeley Software License.
1. denim.jar を展開する.
$ jar xvf denim.jar
2. 日本語化
2.1. Comic Sans MS を指定している箇所を見つける.grep 最強.
$ grep -r Comic edu Binary file edu/berkeley/guir/denim/DenimConstants.class matches Binary file edu/berkeley/guir/denim/dialogs/TextInsertDialog.class matches Binary file edu/berkeley/guir/denim/io/SVGUtils.class matches Binary file edu/berkeley/guir/denim/TypedText.class matches
2.2. バイナリを書き換えてもいいけど,ここはチキンにデコンパイル.
$ jad edu/berkeley/guir/denim/DenimConstants.class \ > edu/berkeley/guir/denim/dialogs/TextInsertDialog.class \ > edu/berkeley/guir/denim/io/SVGUtils.class \ > edu/berkeley/guir/denim/TypedText.class
2.3. 出来たファイル (拡張子が jad) の拡張子を java に変更する.
2.4. ソースファイルを書き換える.Comic Sans MS と指定されている部分を SansSerif に変える.みかちゃんフォント が使いたければ,「みかちゃん」,どせいさんフォント がよければ「どせいさん」としてください.使いたい場合はあらかじめOSにインストールしていないといけません.
2.5. 再コンパイル.
$ javac -d . -classpath denim.jar:denim_help.jar:... *.java
デコンパイルに jad を使った場合,super() の呼び出しがなんとかかんとかと怒られるかもしれない.そこは適当に修正.
3. ジェスチャを変える.
3.1. マウスジェスチャは gsa ファイルで定義されている.
edu/berkeley/guir/denim/data/interpreters/denim.gsa を変更.
3.2. 以下の変更を行う.
name confusion_pan_right -> name confusion_pan_left name confusion_pan_left -> name confusion_pan_right name confusion_pan_up -> name confusion_pan_down name confusion_pan_down -> name confusion_pan_up
4. 再度 jar に固める.
$ jar cvfm denim.new.jar META-INF/MANIFEST.MF edu
denim.new.jar を denim.jar に置き換えると,完成.
■ 冬の摩訶不思議ドリンク"ホットコーラ"
鍋にコーラとスライスしたショウガを入れて煮詰め、ショウガのいい香りがしてきたところで火を止める。カップに注いで仕上げにレモンのスライスも入れてできあがり。これは普通のホットコーラよりも断然美味しい。
へぇ.作ってみようかな?
2005-12-14 Wed
■ AddTracer
バージョンアップした.動的にトレーサコードを埋め込めるようにした.
1. jar ファイルを指定する.manifest ファイルの Main-Class 属性が必須.
2. クラスファイルにトレーサコードを埋め込み,メモリ上に展開する.
3. メモリ上に展開したクラスをロードするクラスローダを用意.
4. 作成したクラスローダから Main-Class 属性に書かれているクラスをロード.
5. main メソッドをリフレクション API を用いて実行.
Main-Class 属性? ってな人は JAR マニフェスト を参照のこと.
2005-12-13 Tue
2005-12-12 Mon
■ Google Maps APIでシューティング作ろうとして挫折
via オレンジニュース
すげぇ.挫折とは言え,ちゃんとスクロールして,自機も動かせる.
■ GPLに従いToHeart2にソースコード公開の義務発生?4
スラドにもある.
あー,To Heart 2 というゲームが XviD を使っているっぽいので,GPL 違反じゃないか? と言われているのですね.
それで過去の事例として ソフトウェア盗用の事例 が参照されて訪問者数が跳ね上がったのか.
Q. 何が起こってるの?
A. アダルトゲーム制作会社がGPLライセンスに準ずるソフトを使ってゲームを作成しました。よって製品のソースコードの公開しなければならないという事態になっています。
Q. GPLライセンスって何?
A. 簡単に言えば、利用したソフトウェアはプログラムの元となるソースコードを公開しなければならない、というライセンスです。
Q. 具体的な違反内容は?
A. GPLライセンスのソフトウェアを使用していることを明示しない、および実行部分のソースコード公開です。
Q. 具体的なゲームタイトルは?
A.「ToHeart2 XRATED」、「Tears to Tiara」、「アルルゥとあそぼ!!」、「鎖−くさり−」の4本です。
らしい.
ソースコードを全て公開するらしい.1営業日で対応とは素早いですなぁ.日付が 2000 年なのは愛嬌ということで.
■ ソフトウェア盗用の事例
訪問者数が跳ね上がっている.なぜだ!?
現実逃避に,Cherry OS と Pear PC をまとめてみた.
■ 東方第9.5弾 「東方文花帖 〜 Shoot the Bullet」
動画が見れますねぇ.かなり極悪な弾幕っぽいですなぁ.
2005-12-10 Sat
■ SophiaCompress
携帯Java専用アプリ圧縮ツールらしいのだが,圧縮率が 20% 〜 60% と驚異的.なんでそんなに圧縮できるんだ?
内部ロジック に書いてある圧縮のための方法をまとめてみた.
■ 必要のない属性を削除する.当たり前の処理です.削除するのは Synthetic 属性, LocalVariableTable 属性, LineNumberTable 属性, Exceptions 属性, Stack Map 属性,SourceFile 属性,その他不明な属性.
■ 未使用コンスタントプールエントリを削除.クラスファイル圧縮では当たり前の処理ですね.
■ 未使用フィールドの削除.これも当たり前.ちなみに,未使用フィールド(どこからも参照されないフィールド)を削除したから,そのフィールドの初期化命令も削除できる.
■ シンボル名の共有.クラス名,フィールド名,メソッド名は異なる名前空間なので,同じ名前を共有することができる.これにより,コンスタントプール内の ConstantClass, ConstantNameAndType が指す ConstantUtf8 を同じにすることができ,コンスタントプール内のエントリ数を減らすことができる.
■ コンスタントプール内のエントリのソート.コンスタントプールはクラスファイル中のあらゆる場所からインデックスで参照される.そのため,頻繁に参照されるものは 1 〜 255 番目(1バイト)までに持って行くことで,サイズを少なくすることができる.また,ZIP 圧縮のときの LZ77 圧縮も視野に入れ,似たバイトコードシーケンスのエントリを近くに持っていく.
■ クラスの融合.二つ以上のクラスを一つのクラスにまとめてしまうのだが,融合できる条件が細かく判定されるようだ.
■ インストラクション最適化.NOP や,unreachable code なんかは無問題で削除される.load, store 命令は できるだけ load_0, load_1, load_2, load_3 などの省略命令を使うようにする.あと細かいのがいくつか.
すごいなぁ.圧縮に懸けている情熱がそこらへんの圧縮ツールとは全然違う.圧縮に 5 分かかるのも仕方ないところだろう.
2005-12-09 Fri
2005-12-08 Thu
■ Web of the Year 2005授賞式、mixi笠原氏や2ちゃんねる西村氏らが登場
そんな西村氏だが「最近、2ちゃんねるで見つけた“VIP STAR”が面白い」という。
:
「面白いので何とか(正規に)公開したいが、著作権的にはグレーというより真っ黒」(西村氏)。受賞式のコメントに便乗する形ではあるが、「ソニー・ミュージックエンタテインメントの方か、平井堅さんと連絡のとれる方はいませんか」と著作権者側にコンタクトを呼びかけた。
■ BSA による世界経済効果調査
via BSAが調査結果発表--違法コピー率10%低下で日本の経済効果は2兆8800億円 (CNet Japan)
日本の違法コピー率は 28%.論文のネタに.
2005-12-07 Wed
■ CSV の RFC
via たつをのChangeLog
今まで CSV のきちんとしたフォーマット定義が存在しなかったのは知っていたけど,RFC で定義されているとは・・・.
Java の実装は RFC で定義される前からあったりする.他の言語でも既にあるのかも.
2005-12-05 Mon
■ PostScript... 更なる深淵へ
Postscript でも Obfuscated なコンテストがあるのか.Perl とか,C だけじゃないんだね.
ただでさえ良く知らない PostScript だから,難読化されるとさっぱりわからない.わかろうとする気すら起きない.



