2009年12月10日木曜日

GoogleIME

Google IME をお試し中。
お試しするためにこのエントリーを書いている訳だけど、WindowsXPに付属するIME2002よりはかなりいい。MicrosoftのIMEは長く使い込むとに急にアホになるときがある。ちょうどそのタイミングが来てしまったのでGoogleIMEに乗り換えたわけだ。

基本的にはインデクシングしたネット上の情報をベースに辞書を構築しているので流行言葉には強い。蓮舫とかウーッウーッウマウマとか一発で変換できる。
弱いのはここにも書かれている通り連文節変換かも。文節の認識があまいような気がする。

また一つGoogle先生は分野を拡大してきましたねー。

2009年12月8日火曜日

Googleカレンダーにアクセスできん・・・

今日の朝からGoogleカレンダーにアクセスできない。
リダイレクトが無限ループしている様子。

Firefoxにこんな画面がでる・・・



追記
Firefoxの状態がおかしかったらしい。Firefoxを再起動したら改善した。

2009年9月5日土曜日

遺灰からダイヤモンド

Gmailの広告につられた! アルゴダンザダイヤモンド

遺骨、遺灰の炭素からダイヤモンドを作るらしい。
これをどうとらえるかは人次第かもしれないけど、本当の形見だなぁ。

2009年9月3日木曜日

メールアドレスに + はなぜ許容されない

最近のショッピングサイトとか、ユーザー登録フォームで腹がたつことがある。
それはメールアドレスに + が許容されないこと。

RFC822では + はダメだと言っていないのに、入力チェックのモジュールがどこかに転がっていてそれをみんな使っているのか + がダメといわれることが多い。

なぜ + が使いたいかというと・・・Gmailのフィルタリングに使っているから。
Fromアドレスでフィルタすると相手のシステムの都合でアドレスがコロコロ変わったりするから設定がめんどくさいのだ。

頼むから + を許せ!

2009年8月21日金曜日

Java Interactive Profiler の設定とか

前回の続き。

JIPの設定はいたって簡単。JVMを起動するときの引数を二つ指定するだけ。


> java -javaagent:【profile.jarの場所】 -Dprofile.properties=【設定ファイルの場所】

Tomcatで使う場合には環境変数CATALINA_OPTSかJAVA_OPTSに指定してやると良いだろう。

profile.jarはJIPをダウンロードして解凍すると profileディレクトリの下にあるのでそれを適当な場所においてその場所を指定すれば良い。
設定ファイルは、Tomcatで使うんであればサンプルで付いて来る webapp.profile.properties をほぼそのまま使えば良い。fileプロパティで好きな場所にプロファイリング結果を吐くようにして、include,excludeプロパティで特定クラスだけプロファイリング対象にするようにするとよい。

さて、これで起動すればプロファイリングが始まる・・・と思ったら罠が。webapp.profile.propertiesでは
  • profiler=off
  • remote=on
  • port=15599
となっている。これは「Tomcat起動時はあまりプロファイリングしてもしょうがないだろうから、起動したらプロファイリング開始すればいいじゃん」って意図なのかと。最初から起動してて欲しければprofilerプロパティをONにしておけばいい。

で、どうするかというと、clientディレクトリに入っているstart.sh(start.bat)を使う

> start.sh localhost 15599

これでプロファイリングが開始される。止めるときは

> finish.sh localhost 15599

これで終了して、プロファイリング結果をfileプロパティに指定したファイルに吐き出す。

output=bothになっているので、*.txtと*.xmlの二つのファイルが吐かれる。*.txtは人間が見てわかる形式で、*.xmlはclientディレクトリに入っているjipViewerに渡すことでGUIで確認できる。

「オーバーヘッドが少ない」を売り文句にしているが、実際のところはどうなのか。自分の試した限りは10%ほどのパフォーマンス劣化、Heap使用量は若干大目程度なのでhprofにくらべてかなり実用的だ(設定次第ではあるけど)。JVM起動したままON/OFF切り替えられるし。


基本的な仕組みはaopを使ってプロファイリング用のコードを練りこんでいる様子。-javaagentを指定することでクラスローダーがクラスをロードするときに一手間かけさせることができるみたいだ。

2009年8月20日木曜日

Java Interactive Profiler (JIP)

ふとした事情でプロファイラを試していたんだけど、JDKに標準でついているhprof重い・・・。
tomcatの起動時間が数百倍になっちゃったのでこれは使えん。

何か言いの無いかなーと思って探すとJIPってのを発見!
作者が独自のプロファイリングツールを構築するって記事を書いていて読んでみると、何々・・・
  • ブートクラスなんてプロファイル対象に含めなくてもいいでしょ
  • tomcat上のWebアプリのプロファイリングにorg.apache.catalinaとかのクラスをプロファイル対象に含めなくてもいいでしょ
確かに「HashMap#getがいっぱいCallされてますー」とかわかってもあまりうれしくない。(必要なときもあるだろうけど)

そこでこのJIPのいいところは、
  • プロファイリングにかかるオーバーヘッドが小さいらしい(自称)
  • クラスローダーでフィルタリングできる(tomcatだとWebApplicationLoaderがロードするクラスのみとか)
  • 特定パッケージ以下の指定でinclude,excludeフィルタリングができる
  • AOPを使ってPure Java
  • リモートでプロファイリングのON/OFFを制御できる(JVMの再起動なしに!)
と言う感じ。

時間がなくなってきたので細かい使い方はまたあとで。試した感じは「良い感じ」と言っておこう。

2009年5月21日木曜日

マゾミクがすごい

ニコ動のボカロメタルをあさっていたが、マゾヒスティックミクバンドがもう神。





往年のロックをヘタウマな脱力PVと、劇ウマな演奏の組み合わせで・・・。
癖になる。

ニコ動でみた方が面白いんだけど、上手く埋め込みできないんでYOUTUBEのヤツはっときました。

2009年5月20日水曜日

ボカロメタル

知らんかった。

初音ミクやらのボーカロイドにメタルを歌わせるという熱い遊びがあるらしい。

もともとアグレッシブな曲を歌わせる想定じゃない声なので明らかに無理があるが本気のメタルを歌わせているところに感動すらする。しかもなかなかの秀作ぞろい。

ニコニコ動画でヤンデレPという人が熱いらしい。
ボーカロイドのそもそもがアレなんで、PVの画像やら歌詞はアレっぽいけど、Angraっぽくちょっとだけマリスミゼルな曲調がなかなか好み。


2009年4月21日火曜日

ソフトウェアの実装工程と製造業・建築業の製造工程

「ソフトウェアは工業製品ではない」、Rubyのまつもと氏が講演 - @IT

自分が常々思っていたことをこの記事でまつもとさんが述べてくれた。

コード(ソフトウェア)を書くというのは、組み立てのことではなく、製造業でいう「設計」に相当するという。

 「クルマを作るときに、まず形や強度の設計をしますよね。それこそがソフトウェア作りです。ソフトウェア作りは、最初から最後まで工業製品でいう設計に当たるんです」。




業界全体がソフトウェア開発を製造業や建築業に当てはめようとして何か勘違いしているんじゃないか、と常々思っていたので共感した。
ソフトウェア開発で一般に「設計」と呼ばれるのは製造業においての設計よりも1ランク抽象的な荒いイメージ作成の工程で、コーディングをすることが図面を書いたりするいわゆる設計の工程だと認識している。
ソフトウェア開発における製造というのはコンパイルやアセンブルなどのビルドすることであって、実はその辺はもう自動化されちゃっているんじゃないかなと。

2009年4月17日金曜日

VMWareの仮想マシンにディスクを追加する

意外と面倒だったのでメモ。

まずはVMWare上でディスクを増設。
  1. VMWareのConsoleにて、VM -> Settings で Virtual Machine Settings画面を出す
  2. 下の方のAddを押すと仮想ハードウェアの追加ウィザードが出るので、 Hard Diskを選んで適当に進める
    自分はSCSI接続のディスクが推奨となっているのでそれに従いました
これで、追加のハードディスクを買ってきてマシンにつないだイメージなわけだ。
当然、ハードディスクはつないだだけでは使えるはずもないのでOS側にマウントする必要がある。ここからの作業ははっきり言ってVMWareだから・・・というものではなく、ゲストOSの世界の話。
今回実施したのはRHEL4(Redhat Enterprise Linux 4)です。
  1. ”論理ボリューム管理”というコンフィグレーションツールを使う
    (システム設定のメニューの中にあった)
  2. 物理ビューにフォーカスを合わせて、ボリュームグループの拡張をすると増設したディスクが/dev/sdbとして出てきたのでそれを選択
  3. 初期化するかと聞いてくるので「はい」を選んでフォーマット
  4. lvextendコマンドを使って論理ボリュームを拡張
    例: lvextend -L +100M /dev/VolGroup00/LogVol00

    これで論理ボリュームに物理ボリュームのエクステントを割り当てて大きくしてる・・・んじゃないかと思う今日この頃。
    ひょっとすると、”論理ボリューム管理”の下記の画面でやれちゃうんじゃないかな・・・とも疑っている。

  5. これだけだとまだファイルシステムでは使えないのでext2onlineコマンドでファイルシステムをリサイズ
    例: ext2online /dev/VolGroup00/LogVol00

    resize2fsでもいいけど、resize2fsはアンマウントしなければならないのでext2onlineでやりました。
    参考:http://pantora.net/pages/linux/lvm/3/
以上で追加完了!

論理ボリュームの考え方がイマイチ理解できてないなー・・・勉強しなくては。