2004-12-01 [長年日記]
@ [emacs] perl-modeとcperl-mode
FSWikiのソースをいじるときは全てのインデントをタブ4にしたくて
(add-hook 'cperl-mode-hook
'(lambda ()
(progn
(setq tab-width 4)
)))
というコードを.emacsに書いていたのですが、何故か全然反映されず「なんでだろうな〜」と思っていたのですが、よく見たらcperl-modeではなくperl-modeになってたみたい。
(setq auto-mode-alist
(append (list (cons "\\.\\(pl\\|pm\\)$" 'cperl-mode))
auto-mode-alist))
を追加して望み通りに。こんなのに30分もはまってしまった。。。
@ [fswiki] summaryプラグイン
一仕事終えたので、categoryプラグインもろともいじってみました。ソース的には結構共通化できたので、覚え書きの方でしばらく運用して、問題なさそうだったらプラグイン投稿します。
@ 覚え書き
テーマを変えてリニューアル。summaryプラグインを使ってページの一覧に説明を出せるようにしたので、多少はアクセシビリティが向上している、、、かな? まー重要なのは中身ですけど。
ついでに日記のテーマも変えてみました。savanna、いいですねー。
2004-12-02 [長年日記]
@ [life] 息抜き
最近、煮詰まってる時、やる気がNULLな時に近所のお寺や神社へ行って気持ちをすっきりさせるようにしてます*1。というわけで、今日は増上寺というお寺に行って来ました。ここは本堂に椅子がありかなりくつろげる空間で、10分ぐらい坐って目を閉じていると肌で微妙な空気の流れがわかるぐらいに感覚が研ぎすまされていきます。こういうのを無我の境地というのかどうかは知りませんが、とにかく心が落ち着いて、嫌なこと、面倒臭いことでも「よしやるか」という気分になります。こういう空間がある所に住んでいて良かったなと思った今日この頃でした。
ちなみに、ここは浄土宗の総本山でかなり有名なお寺みたいですね。地元なのに知りませんでした。
*1 もともと歴史的建造物の類が好きなので
@ [tdiary] RSSのエンコーディング
uconvを入れると、RSSのエンコーディングが自動的にUTF-8になるみたいです。長らく「なんで俺のはEUC-JPなんだろう」と疑問に思ってたのですが解決しました。
@ [fswiki] summaryプラグイン(2)
プラグイン投稿してみました。結局、categoryプラグインの動作を強引に上書きして、category_listでもサマリを出すようにしました。
@ [firefox] えむもじら/Tabbrowser Extensions(TBE) に深刻なセキュリティホール
悪意ある攻撃者によって、ローカルファイルの操作や個人情報の無断送信などが行われる恐れがある。
だそうです。恐ろしいのでソッコウでアップデートしました。
2004-12-03 [長年日記]
@ [emacs] リージョンをコメントアウト
C-x r t コメント文字でいけるのですね。例えば、
sub new {
my $class = shift;
my $self = {};
return bless $self,$class;
}
というメソッドの中身だけをコメントアウトしたい場合は
my $class = shift;
の行の先頭で CTRL SHIFT して、
return bless $self,$class;
の行の先頭にカーソルを合わせた状態で C-x r t # すると
sub new {
# my $class = shift;
# my $self = {};
# return bless $self,$class;
}
となります。いやー今まで
地味に1行ずつコメントアウト
してましたよ。無知とは罪というか、無知=時間の浪費ですねぇ。
@ [emacs] ではコメントを解除したい場合は
普通に矩形領域削除の C-x r d を使えばOKです。先ほどの
sub new {
# my $class = shift;
# my $self = {};
# return bless $self,$class;
}
だと
# my $class = shift;
の行の先頭で CTRL SHIFT して、
#| return bless $self,$class;
の行の | の位置にカーソルを合わせて C-x r d です。
例によって
これも地味に一文字ずつ削除
しておりました。。。
@ [emacs] M-x comment-region
小人さんにつっこみを頂きました。てきとーにキーバインドを設定すれば、こっちの方が遥かに楽ですね。
;; C-c ; でリージョンをコメントアウト (global-set-key "\C-c;" 'comment-region) ;; C-c : でリージョンのコメントを解除 (global-set-key "\C-c:" 'uncomment-region)
とか。
@ [ktai] 携帯にAA機能?
私はボーダフォンの V401SH を使っているのですが、さっき色々いじってたら「テキストライブラリ」なるものを発見。ようはただの顔文字機能なんですが、ウケてしまったのでいくつか公開してみます。その1「画:うれしい」。どーん。
(((((((( ,)∂ ∂(( (^▽^((
次、「画:かなしいよ」
'/ ∞ ((/((\((( ,); ; D ( ^ 人
なんですかこの2chっぽさを醸し出したAAは。明らかにギャグとしか思えないこの機能。こんなことやってりゃ日本から撤退? なんていう噂も流れますよ。
でも、こんな茶目っ気を持ったボーダフォンがますます気に入りました。
2004-12-04 [長年日記]
@ [fswiki] FSWikiのcalenderプラグインがtDiaryのテーマに準拠してないっぽい問題報告
しました。でもこの問題って微妙だな〜。
ちなみに、tDiary(FSWiki)のテーマを作りかけてたんですが、あまりにも道のりは長そうだったので断念しました。残念!!
@ [life] 探しもの Found!
2ヶ月前ぐらいに無くしてたと思っていた腕時計が見つかりました。「安物だし別にいっか」と思ってたんですが、腕時計のない生活はやっぱり不便で、そろそろ買うかな〜と思ってた頃にジャストタイミングで見つかったのでとても嬉しい(^^
そういえば、奈良行った時に引いたおみくじでは「探しもの、見つかるが遅い」みたいなこと書いてあったなー。すげー当たってますね。
@ @IT/Solaris 10 Developer Meeting for x86 Solution
Solaris 10ではLinuxのバイナリが実行できたり面白そうなので行ってみようかなと思っています。本当は技術的な話を聞くのが目的ではなく、単にデュークグッズが欲しいだけなんですが。
それSolarisじゃなくてJavaのマスコットだろ!?
というツッコミはまぁ置いといて。
2004-12-05 [長年日記]
@ [soccer] サントリーチャンピオンシップ マリノス VS レッズ
友達に誘われ観に行ってきました*1。1-0でマリノスが勝ったのですが、いやーマリノス強いですね。鉄壁を誇るディフェンスに、決めるところはしっかり決める攻撃陣。特にディフェンスは、1対1では絶対に抜かれず、また中途半端なところから上げられても、中澤が絶対にクリアするという素晴らしさ。さらに、レッズの素早いカウンターにも中盤がきちんと反応し、パスを通させず。レッズもディフェンスはかなり良かったのですが、少し気が抜けたのか、後半コーナーから決められてしまいました。
とてもハイレベルな試合を観れて本当に良かったデスヨ。
そうそう、坂田って、ゴール前のキープ力といいバイタリティといい、とてもいい選手だなと思いました。
*1 友達とその彼女と彼女のお父さんという異色なメンツでした
2004-12-06 [長年日記]
@ [music] The creator of のライブ
12/29(水)に新宿の Live Freak というところで、 ROCK SOLDIER 2004 というイベントに出演するそうです。観にいきてー。
2004-12-07 [長年日記]
@ [news] 聯想、米IBMのパソコン事業買収で合弁設立へ・米紙
「今度ノート買うときはIBMのにしよう」と思っていただけにショック。中国=品質悪そう、というイメージがあるので。
@ [java] Java のクラスアンロード
taediumの日記より。これ以外にもHotspot VMのGCの文書など、マニアックな文書を公開されています。
@ [dev] Rake実験中
ExcelPettyCashBookのビルドツールとして Rake を評価中です。ビルドツールと言っても単なるRubyスクリプトなので、Rubyで出来ることは全て出来る。こんなビルドツールを待ってたんですよ、素晴らしい!!
@ [ruby] プログラミング入門 - Rubyを使って -
外人の方が書かれたチュートリアルの日本語訳。ブロックについて詳しく書かれていていい感じです。
2004-12-09 [長年日記]
@ [ruby] 子プロセスの標準出力をリダイレクト
RubyでShellの
$ echo hoge > hoge.txt
と同じことをする方法です。
まず、単純に
$stdout = File.open("hoge.txt", "w")
system("echo hoge")
では、子プロセスの標準出力まではリダイレクト出来ません。これを実現するには、 IO#reopen を使います。
File.open("hoge.txt", "w") do |out|
stdout_save = STDOUT # バックアップ
STDOUT.reopen(out)
system("echo hoge")
STDOUT.flush
STDOUT.reopen(stdout_save) # 元に戻す
end
「絶対にあるはずだよなぁ〜」と探し続けて2時間。やっと答えが見つかりました。。。
今回の教訓: リファレンスマニュアルは熟読しましょう
2004-12-12 [長年日記]
@ [life] 爆睡
昨日は徹夜明けなのに寝ずに出かけてしまったので、返ってきた途端爆睡。おかげでチャンピオンシップ第2戦見逃してしまいました。チラッとニュースで見た限りだと、0-1でマリノス負けたけど結局PKで勝利らしいですね。あとエメルソンがぶち切れて相手を蹴りまくり退場になったとか。あー再放送やらないかなぁ。
@ [life] 年始までのTODO
- 個人的な仕事の詳細設計まで
- FSWikiのcalendarプラグイン修正
- ExcelPettyCashBook 1.1.1 & テストコードを書く
- ExcelPettyCashBookのデータをDBに保存できるように
- LDAP勉強 & 自宅のLDAP環境改善
一番苦しいのは1.ですね。これ、今までの小規模なヤツと違ってDBも使うからかなり心配。
2004-12-13 [長年日記]
2004-12-14 [長年日記]
@ [cygwin] Cygwinのcronをサービス化
cygrunsrvというコマンドで任意のデーモンプログラムをWindowsのサービスに出来るらしい。
$ cygrunsrv -I cron -d "Cygwin cron" \ -p /usr/sbin/cron.exe -a -D \ -e "PATH=/usr/local/bin:/usr/bin:/bin"
でcronをサービスに登録することが出来ます。サービスから削除したい場合は↓
$ cygrunsrv -R cron
参考リンク: ずんWiki/Cygwin
@ というわけで
Windowsでも fetchmail + procmail + Wanderlust な環境が出来ましたとさ。
追記: 大嘘でした。メールが全て/var/spool/mailに行ってるっぽい。なんでだろう。
2004-12-15 [長年日記]
@ [cygwin] fetchmail + procmail で受信したメールが/var/spool/mailに
行ってしまう問題ですが、解決しました。はまりポイントとして2点ほど。
その壱: .procmailでの$HOMEは/etc/passwdのエントリのホームディレクトリになっているため、Cygwinの/home/hoge配下に.procmailrcを作成しても、/etc/passwdのホームディレクトリが/home/hogeになっていなければ、違うパスの.procmailrcを読みに行ってしまいます。私はドメインユーザでログオンし、$ mkpasswd -d >> /etc/passwd していたので、/etc/passwdのホームディレクトリがSambaの共有ディレクトリになっていました。これを/home/hogeに変えることで.procmailrcが認識されるようになりました。ちなみに
$ VERBOSE=yes procmail /home/hoge/.procmailrc < メール
で、どのパスの.procmailrcが使われているか確認できます。
その弐: 上記を対処すると、fetchmailのログに
procmail: Suspicious rcfile "/home/kazuhiro/.procmailrc" procmail: Couldn't read "/home/kazuhiro/.procmailrc"
と出ています。これをmanで調べてみると、
Suspicious rcfile "x":
The owner of the rcfile was not the recipient or root, the file was world writable, or the directory that contained it was world writable, or this was the default rcfile ($HOME/.procmailrc) and either it was group writable or the directory that contained it was group writable (the rcfile was not used).
ということなので、ホームディレクトリと.procmailrcのパーミッションを変更します。
$ chmod 755 /home/hoge $ chmod 744 /home/hoge/.procmailrc
これでCygwinでも fetchmail + procmail + Wanderlust が利用できるようになりました。
@ [mysql] MySQLのインストールと役に立ちそうなリンク
Debianなんでapt-getするだけなんですが。
# apt-get install mysql-{server,client,doc}
- mysql.com/MySQL Reference Manual
- ソフトエージェンシー/Official Japanese MySQL Manual(Namazuで全文検索できます)
- 株式会社ビットスコープ/MySQLクイック・リファレンス
- イワタニエレクトロニクス株式会社/MySQL(Debianでの設定方法について)
MySQLはかれこれ4年ほど前(入社したての頃)にチラッといじくったぐらいで、今となっては全て忘却の彼方です。それ以前にリレーショナルデータベース自体が相当久しぶりなのでやばいです。本当に大丈夫なんでしょうか。。。
@ [life] 夜の携帯メールは迷惑??
今日のなんでやねんより。
私もメールの着信音ごときでは絶対に起きません。メールの「送り手」としては、夜中(2時3時)でも平気で送ってしまうかも。いや、パソコンのメールと同じものだとずっと思ってたし、友達からもガンガン夜中にメール来るし、根本的に夜型人間だし。でも世間一般では、電話と同じで夜中のメールは控えた方が良いのですねぇ。気を付けます。
2004-12-16 [長年日記]
@ [mysql] InnoDBを使う
4.0系の場合、トランザクション対応のInnoDB型テーブルを使うに当たっては、特に何も設定しなくても良いみたいです。ただし、my.cnfに skip-innodb という項目があるとInnoDBが使えないので、これがある場合はコメントアウトしておきます。そして下記のようにトランザクションが使えるかテスト。
mysql> use hoge;
mysql> create table test(a char(4)) type=InnoDB;
mysql> insert into test values('a001');
mysql> begin;
mysql> insert into test values('a002');
mysql> select * from test;
+------+
| a |
+------+
| a001 |
| a002 |
+------+
2 rows in set (0.00 sec)
mysql> rollback;
mysql> select * from test;
+------+
| a |
+------+
| a001 |
+------+
よしよし、徐々に思い出してきました。
@ [eclipse] Clayプラグイン
Eclipse用データベースモデリングプラグイン。テーブル設計からDDLの生成まで面倒見てくれる。動作環境にはEclipse 2.1.1/2.1.2/2.1.3 としか書かれてないのですが、3.0.1でもちゃんと動きました。なかなかいい線いってると思います。
@ [db] SAK Streets/SQL 開発言語資料
SQLの基礎から、OracleのPL/SQL、PostgreSQL、MySQLの情報がどっさり。DB関連でこれだけまとまった情報があるサイトってのもすごい。
2004-12-17 [長年日記]
@ [movie] モーターサイクル・ダイアリーズ
だいぶ前に前売を買ってたのですが、今日やっと恵比寿に行く用事が合ったのでついでに観に行って来ました。
キューバのゲリラ革命を指導したチェ・ゲバラの青年時代における南アメリカ大陸横断旅行。アルゼンチンから出発して、チリ、ペルー、コロンビア、ベネズエラとタイトル通りバイクで旅して行くのですが、その過程で虐げられた先住民やハンセン病患者たちと出会い、徐々に彼の考え方や価値観が変わっていくというお話です。
単純に面白いか面白くないかで判断すると、面白くない方の部類に入ると思うのですが、比較的裕福である家庭に生まれたチェ・ゲバラがなぜキューバでゲリラ革命を指揮するようになったのかがよくわかる作品でした。そして「自分はなんてちっぽけな人間なんだろう」と感じてしまうぐらい、チェ・ゲバラの真摯さが伝わってくる作品でした。
@ [music] THE CREATOR OF "LOST SUMMER DAZE"
creator ofの1stフルアルバム。だいぶ前の作品(1999年)ですが、持っていなかったので買いました*1。本作以前に3枚のミニアルバムを出していて、そいつらはかなりグランジ色が強いのですが、このアルバムでは若干メタル色が強くなっています。さらに2ndフルアルバム IN RESERVOIR ではもう「メタルバンド」と言ってもいいぐらいメタルになっていくわけですが...
全体的に太鼓(?)のリズムのようなドラムが民族音楽っぽさを出しており、その上にcreator of得意の暗めでハードなベース & ギターがのることによってかなり怪しい(=おどろおどろしい)雰囲気を作り出しています。
それにしても、このバンドってなぜこんなにいい音楽作ってるのにここまで知名度低いんでしょうか。流行に流されず自分達の音楽スタイルを貫いているのもすごくカッコいいし。勿体ない。
*1 タワレコでもなかったのでAmazonで
2004-12-18 [長年日記]
@ [mysql] ユーザの作成
さすがに全部 root でやるのはまずいでしょう、ってことで。
$ mysql -uroot mysql
で mysql データベースに接続し、下記を実行。これでどのホストからでもアクセス出来るユーザ test が作成できます。
GRANT ALL PRIVILEGES ON *.* TO test@"%" IDENTIFIED BY 'pass' WITH GRANT OPTION; FLUSH PRIVILEGES;
なお、ぐぐって調べたサイトでは
GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'pass' WITH GRANT OPTION;
も必要だと書いてありましたが、これはいらないようです。だって % ってワイルドカードだからlocalhost にもマッチするはずだし。TCP/IPで接続出来るようにした場合、上記も必要です。
まぁ、テスト用のDBではこのユーザを使って色々いじるっていうのでいいかと思いますが、本チャンの運用だったら、データベース毎に専用のユーザを作るのがいいのかな。こんな風に。
CREATE DATABASE webdb; GRANT ALL PRIVILEGES ON webdb.* TO webdb@"192.168.1.%" IDENTIFIED BY 'pass' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON webdb.* TO webdb@localhost IDENTIFIED BY 'pass' WITH GRANT OPTION; FLUSH PRIVILEGES;
2004-12-19 [長年日記]
@ [perl] ホームページ内全文検索エンジンmsearch
おお、こんなのあったんですね。(from FSWiki/BBS-雑談掲示板/49)
@ [work] DB検証中
実際にデータを入れてみてSQLでちゃんとデータが意図通りに取れるか確認。まぁテーブル5個ぐらいしかないんでそんなに大変じゃないんですが、巨大な業務アプリだとDB設計を検証する作業もきっと大変なんでしょうなぁ。
それにしても土日も仕事してるのって結局休出してるのと同じなんですよね...行き詰まったら気晴しに遊びに行ったりしているので平日と休日の境目が全くないんですが、自分としてはテンションの高い時にガーとやってしまうのが好きです。
@ [soccer] 天皇杯準々決勝 浦和レッズ VS FC東京
2-1でレッズ勝利...でもいい試合でした。前半はレッズのドリブル突破やロングボールなどで崩されてかなり危ない部分がありましたが、後半レッズの猛攻を凌ぎきって相手が油断したところを石川がミドル。石川ってガンガン突破していくイメージがあったんですけど、ミドルも打てるんですねぇ。これにはかなりビックリ。
と思ったら3分後に左サイドから崩されあっという間に同点。そして後半にまたもや左サイドから上げられ、サントスに合わせられてしまいました。んー無念。
FC東京ってあんまり長いパス使わないチームかと思ってたのですが、今日はけっこう出してましたね(特に馬場がよかった)。やっぱり決定力不足は否めないですが、チーム自体成長しているのでこれからが楽しみです。今年でケリーがいなくなるそうなので、来年の馬場に期待。
@ [oo] Dependncy Injectionを語るスレ
DIコンテナを使うメリットについて。今日たまたま本屋でWEB+DB PRESS Vol.22のSeasar2の記事を立ち読みしたんですが、さすがに立ち読みだとサンプルコードを全て追う気力がなく(^^; 「んーdiconファイルいじることでコンポーネントを簡単に差し替えられるから、(モックを使った)単体テストは楽になるのねん」ってことぐらいしかわかりませんでした。結局それ以上のメリットってまだわかってないのですが、Seasar2はS2DaoとかS2Strutsとか「周辺」が充実しているので、そういうのを使うだけでもメリットがあるんじゃないかなと思います。
ってスレでも書かれてますね...
2004-12-20 [長年日記]
2004-12-21 [長年日記]
@ Javaの自作ライブラリ
そういえば、jFileBeau作ってた時に汎用的な部分は切り出してライブラリを作っていたのですが、これを公開しようか迷ってます。今見るといくつかはJakarata Commonsにあるものと機能的に被ってるし*1。はー悩ましい。
*1 Resource とか Validator
@ 久々JavaとEclipse
というわけで、自作ライブラリを公開するべく気に入らないところを修正してます。Eclipseで約1年ぶりにコーディングしているわけですが、2.1の頃と比べて微妙に変わっているのでちょっとやりにくいんですけど。
来週頭には公開出来たらいいなぁなんて思ってます。
@ [admin] Namazu におけるクロスサイトスクリプティングの脆弱性
2.0.13以下のバージョンにセキュリティホールがあるそうです。一時的にこの日記の検索も無効にするようにしました。2.0.14にアップデートした時点でまた使えるようにします。
2004-12-22 [長年日記]
@ [work] 打ち合わせdone
DBの項目を説明してきました。「将来的にはあった方が便利だから、という理由でカラムは用意しなくてもいい」と言われた...うぅ、すいません。
まーというわけで年末から前倒しでコーディングになりそうです。なんか正月もプログラミングしてる自分が見える...
@ [java] Commons I18nを使ってみる
ちょっと気になる存在だったので試してみました。ResourceBundleの形式とXML形式のメッセージカタログが使用出来るようです。まだバイナリはリリースされていないので、CVSからソースを取得 & ビルドして、commons-i18n-0.3.jar, commons-xmlio-0.1pre.jarをクラスパスに追加しておきます。あとは下記の手順で。
- sample.commons.i18nパッケージ内にメッセージカタログを用意
-
messages_ja.properties(native2asciiで変換後)
hello.text=\u3053\u3093\u306b\u3061\u308f\u308f arg.text=\u5f15\u6570\u306e\u30c6\u30b9\u30c8({0})messages_en.propertieshello.text=Hello arg.text=A test of an argument({0})messages.xml<?xml version="1.0" encoding="UTF-8"?> <messages> <message id="hello_xml"> <locale language="en"> <entry key="text">Hello (in XML)</entry> </locale> <locale language="ja"> <entry key="text">こんにちわわ (in XML)</entry> </locale> </message> </messages> - サンプルソースを作成(sample/commons/i18n/I18NSample.java)
-
package sample.commons.i18n; import java.io.InputStream; import java.util.Locale; import org.apache.commons.i18n.LocalizedText; import org.apache.commons.i18n.ResourceBundleMessageProvider; import org.apache.commons.i18n.XMLMessageProvider; /** * Commons I18Nのサンプル。 */ public class I18NSample { public static void main(String[] args) { ResourceBundleMessageProvider.install("sample.commons.i18n.messages"); LocalizedText text = new LocalizedText("hello"); System.out.println("日本語: " + text.getText(Locale.JAPAN)); System.out.println("英語 : " + text.getText(Locale.US)); text = new LocalizedText("arg", new Object[] { "引数" }); System.out.println("日本語: " + text.getText(Locale.JAPAN)); System.out.println("英語 : " + text.getText(Locale.US)); InputStream in = I18NSample.class.getResourceAsStream("messages.xml"); XMLMessageProvider.install("messages", in); text = new LocalizedText("hello_xml"); System.out.println("日本語: " + text.getText(Locale.JAPAN)); System.out.println("英語 : " + text.getText(Locale.US)); } } - 実行
-
日本語: こんにちわわ 英語 : Hello 日本語: 引数のテスト(引数) 英語 : A test of an argument(引数) 日本語: こんにちわわ (in XML) 英語 : Hello (in XML)
実はこんなライブラリを以前自作したんですが、これで用無しになりそうです。XMLに対応してないし...
2004-12-23 [長年日記]
@ [java] Commons XMLIOを使ってみる
昨日のi18nの延長で使えそうか試してみました。例えば
<?xml version="1.0" encoding="EUC-JP"?> <ルート> <要素 属性="属性値"/> </ルート>
というXMLを出力するには下記のようなコードを書けばいいようです。
package sample.commons.xmlio;
import java.io.FileOutputStream;
import org.apache.commons.xmlio.out.XMLOutputStreamWriter;
/**
* Commons XMLIOのサンプル。
*/
public class XMLIOSample {
public static void main(String[] args) throws Exception {
XMLOutputStreamWriter writer =
new XMLOutputStreamWriter(new FileOutputStream("test.xml"), "EUC-JP");
writer.writeProlog("<?xml version=\"1.0\" encoding=\"EUC-JP\"?>");
writer.writeStartTag("<ルート>");
writer.writeEmptyElement("<要素 属性=\"属性値\"/>");
writer.writeEndTag("</ルート>");
writer.close();
}
}
まーXMLと言っても生の文字列を書き出しているのとほとんど一緒ですな。
@ Commonsって
本当に私の自作ライブラリと機能が被りまくっています。IOのFileUtilsとかLangのStopWatchとかValidatorとかI18nとか...ここまで来ると
パクられてるんじゃないの?
って思ってしまうぐらい。しかも向こうの方が微妙に高機能だったりするので悔しい。
2004-12-24 [長年日記]
@ メリークリスマスイブ
世の中結構勘違いしている人いるけど、まだクリスマスではないですよー。キリストの誕生日は明日です。さて今日も頑張ろう。
@ [java] Commons Resourcesを使ってみる
Commons I18nと一体何が違うのかよくわからない。基本的に「キーに関連付けられたメッセージを取得する」というインタフェースは同じはずなのに。こっちはJDBCに対応していたりするので、若干高機能そうだけど。
とりあえずResourceBundleの例だけ。
- sample.commons.resourcesパッケージ内にメッセージカタログを用意
-
messages_ja.properties(native2asciiで変換後)
hello=\u3053\u3093\u306b\u3061\u308f\u308f arg=\u5f15\u6570\u306e\u30c6\u30b9\u30c8({0})messages_en.propertieshello=Hello arg=A test of an argument({0}) - サンプルソースを作成(sample/commons/resources/ResourcesSample.java)
-
package sample.commons.resources; import java.util.Locale; import org.apache.commons.resources.Messages; import org.apache.commons.resources.Resources; import org.apache.commons.resources.ResourcesFactory; import org.apache.commons.resources.impl.ResourceBundleResourcesFactory; /** * Commons Resourcesのサンプル。 */ public class ResourcesSample { public static void main(String[] args) { // ResourceBundleを使うケース ResourcesFactory factory = new ResourceBundleResourcesFactory(); Resources resources = factory.getResources("name", "sample.commons.resources.messages"); System.out.println("日本語: " + resources.getString("hello", Locale.JAPAN, null)); System.out.println("英語 : " + resources.getString("hello", Locale.ENGLISH, null)); // 引数を渡す Messages messages = new Messages(resources); System.out.println("日本語: " + messages.getMessage(Locale.JAPAN, "arg", "引数")); System.out.println("英語 : " + messages.getMessage(Locale.ENGLISH, "arg", "引数")); } } - 実行
-
日本語: こんにちわわ 英語 : Hello 日本語: 引数のテスト(引数) 英語 : A test of an argument(引数)
概略すると、ResourceFactoryというfactoryメソッドを持つインタフェースがあって、これのconcreteクラスとして、ResourceBundleResourcesFactory、XMLResourcesFactory、JDBCResourcesFactoryなどがあります。で、それぞれのfactoryがResourceBundleResourcesやXMLResourcesなどのconcrete productを生成します。典型的なfactory methodパターンです。
Resourcesインタフェースはいわゆる「メッセージの集合」を表しているわけですが、似たようなクラスとしてMessagesがあります。このクラスにもメッセージを取得するメソッドがあり、「Resourcesと一体何が違うの?」という感じなんですが、こっちにはメッセージに引数を渡すための仕組みがあります*1。というか、たぶんResourcesは利便性を考慮してgetStringっていうメッセージ取得のメソッドを持っているだけで、正攻法としてはMMessages#getMessageを使うことなのかな。設計者脳内の概念がよくわかっていません。
個人的に「うーんイマイチ」と思うのは、XMLのメッセージカタログもResourceBundleのように「1言語1ファイル」なところです。XMLにメッセージ書き出すんだったら単一のファイルに全言語のメッセージを定義したい、と思うのが普通なのではないでしょうか。I18nはそういう要求を満たしているのですが、こっちはこっちでロードしたメッセージをなんとかMessageProviderのstaticなMapで管理しているのがダサい。同一VM上で複数のアプリケーションが動いているとして、もしmessageIdがアプリケーション間で重複していたら...? ってことを考えるとイマイチ使えなさそうだったのでResourcesも試してみたのですが、結局現時点ではどっちもイマイチですた...
*1 ちなみにこの引数を渡す方法がわからなくてはまった
@ さて
こんな現実逃避してないで仕事しよう。
@ [java] Commons I18nを使ってみる(2)
たけぞうさんの日記経由で色んなところからリンクされているのでもう少し知り得たことを。
このライブラリは require >= JDK 1.4 です。
import java.util.logging.Logger; import org.xml.sax.InputSource;
していますんで。XMLパーサとlumberjackを用意すればJDK 1.2でも大丈夫なのかもしれません。
@ 本日のアクセス数
なんか本当にすごい。いつもの2倍はあります。みなさんイブだってのに
ヒマなんですか?
かくいう私もプライベートは別になんもありません。どうせ彼女いませんよーだ。でも別に見栄張って「今日の更新はやめとこ」とか思いません。まーいいじゃんヒマだって。そういう年もあるってことで。
でも、幸せなクリスマスってあんまりなかった気がする...
2004-12-28 [長年日記]
@ [life] 歯が痛い
ちょっと歯がいたかったので、歯医者に電話したら「年内の診療は終わっています」だそうな。年明けまで見てもらえないことがわかるとだんだん激痛になってきて、何事にも集中出来ず。痛い、本当に痛い...
@ [emacs] Wanderlustで添付ファイル名が日本語の場合
今まで「日本語ファイル名の添付ファイル」を送信するケースがなかったせいか、まったく設定しておらず化け化けだったそうな。調べてみるとEmacs Application/wlに情報があったので、そのまま.wlに追記。
;; ファイル名が日本語の添付ファイルをエンコードする [semi-gnus-ja: 6046]
(eval-after-load "std11"
'(defadvice std11-wrap-as-quoted-string (before encode-string activate)
"Encode a string."
(require 'eword-encode)
(ad-set-arg 0 (eword-encode-string (ad-get-arg 0)))))
2004-12-29 [長年日記]
@ 雪
さっきまですごい大粒の雪だったのにだんだん雨っぽくなってきた。積もるかと思ったのにな〜。
@ そんなわけで
これから creator of を観に行ってきます。帰りの電車がちょっと心配。
@ [music] ROCK SOLDIER 2004 @ 新宿Live Freak
creator of 目当てで行って来ました。イベント自体は16時ぐらいからやっていたらしいんですけど、うちらは友達の都合もあって19時頃に参戦。キャパ300人ぐらいのライブハウスらしいのですが、中に入ってみると
100人入るのここ?
というぐらいの狭さ。ウチラが入った時点ではジャーマンメタル系のややSLIPKNOTに影響受けてそうなバンドが演っていて、ものすごい爆音が炸裂していました。バスドラの音が胸に響いてカッコよかったのですが、あろうことか虫歯にまで響くようになり、このバンドが終了した時点でちょっとリタイア。
ライブが終わるのが23時過ぎだということなので、夜ご飯を食べてもう1度リターン。そして、「3狂」と言われている Before Christ Butterfly が登場。この人達はいわゆる「ミクスチャー」バンドでパンクとかヘビーロックとかそんな感じの曲が多かったです。印象的だったのはギターのパンク頭で、50cmはあろうかというトゲトゲっぷり。このバンドが終わった後、パンク頭がフロアを歩いて来て、友達がこの頭に刺されたそうです。マジ凶器。危険!!
んで、3狂2つ目の RISING SUN というバンド登場。この人達はツインボーカルでラップを繰り出す、これまたコテコテなラップコア系。曲は良くもなく悪くもなくという感じでしたが、いかんせんラップが下手でした。もしかすると上手いのかもしれないけど、ウルサイ曲にラップを合わせてもフローのメリハリが(静かなトラックと比べて)出てこないので、根本的にラップコアにフローがどうとかっていうのを求めるのは間違ってるのかもしれません。まー、この人達はノリ重視で、ライムもいまいちカッコ良くなかったし「こんなもんか」程度でした。ただし、10名ほどやたら熱狂的なファンが前方で荒れ狂っていました。宗教ですなぁ。
そして、いよいよお目当てでトリの The Creator Of。音合わせの間にはお香とスモークを大量に焚き、登場前の雰囲気作りもちゃっかりしているところが「ああ、憎いね」と思わせます*1。音合わせにてこずっているのか、40分以上もかかってやっとやっと1stのintro、GREEN(HI ON)が流れ始めます。徐々に幕が上がってギターを弾いている兄ちゃんがそこにいるのですが、「あれ?この人誰?」っていう感じの
ごくフツーの
人でした。このバンドは3ピースでボーカルがギターも兼任してるのですが、私のイメージではこのVo兼Gは、蒲田あたりをうろついてそうな
絶対に目を合わせたくないヤンキー or チーマー
なのですが、本当にフツーの人なんです。一緒に行った友達は過去に creator of のライブを観ているのですが、「え!?何か全然雰囲気違う」って言ってましたし、写真左の人とはあまりにも似ても似つかぬ人だったので、過去の経験から「ああ、この人はサポートのGか何かで、本当のVo兼Gは次の曲で後ろからドッカーンと出てくるんだろうなぁ」という結論に達しました。
ですがですが、この期待は2曲めの RESET になった時点で見事に裏切られます。この「影武者G」がまだギターを弾いているんです。そして歌っているんです。この現実を目の当りにして、「ああきっとメンバ変わったんだな」という結論に達しました。というか、Gが影武者とかどーの以前に
音、悪過ぎです。
もうね、大学のバンドサークルのライブかよっ!って思ってしまうぐらい酷い。特にマイクとGのアンプが「電源入ってないんじゃないの?」って感じで最悪でした。おそらくこの曲が一番の盛り上がるところなのに、完全にはずしてしまって目も当てられない状態でした。メンバーもこの酷い状態に憤りを感じたのか、スタッフにあーだこーだ言って、なんとか音合わせをし、2ndの曲をもう1曲(ABUSEかな?)やるのですが、やっぱりイマイチ音が悪く「僕にはそんな根性ありません」とかわけのわからんことを言ってVoは居なくなってしまいました。もしかして...
帰った!?
と思ったら煙草吸いながら登場してまたも音合わせ。他の観客たちもこのサイアクな雰囲気に嫌気がさしたのか、はたまた終電が危なかったのか、ふと回りをみたら満杯近くいた人達の約半分がこの時点で居なくなってました...
その後、AGAINなどをやりますが、やはりしっくり来ないというか「イマイチのれない」雰囲気が完全に出来上がってしまっていて、他の客も全然ノレていないようでした。というか、出待ちの時に焚いた香やスモークは完全に逆効果でしたよ。「あれだけ演出に凝ったのに肝心の音がねぇ」とか考えていると、終電の時間がまずくなったのでウチラも「もういいダロ」ということで撤退しました。
というわけで、私の初 creator of のライブはほんっっっとうに最悪でした。一緒に行ってくれた友達にも本当に悪いことをしました。(一応)プロのライブであそこまで酷いのは初めてでしたし、2004年最後のライブがあんなんでかなり落ち込みましたし...
まぁ今回は運が悪かったと思って、次回に期待したいと思います。creator of のデキは置いといて、久々にちっちゃなライブハウスで目眩がするくらいの轟音が聴けたのが唯一の救い...かな。
*1 ちなみに、この時点でもう22:30を回っており、ちょっと終電が気になり始めます
# 小人 [M-x comment-region はいかがですか?]
# おいぬめ [おおっ!(ポム)]