2011年7月10日にリリースされた CentOS 6.0 のインストール記録です。結果的に起動に失敗していますので手順確認としてご参照下さい。
現時点ではまだインストーラがかなり貧弱です (ビルドタグ 20110709-1646)。
- VNC が使用できない様でリモートからのグラフィカルインストールができません (そもそも現時点でグラフィカルインストールが用意されているかも不明ですが)。
- インストール中にパーティション設計ができません。進捗メッセージを見る限り LVM 上に ext4 で構成しているらしい事までは分かりましたがカスタマイズは出来ないようです。
日本語の文章に対して全文検索用のインデックスを作成する方法としては、形態素解析により分解した単語をインデックスする方法や、N-Gram によってインデックスを作成する方法などがあります。形態素解析はインデックスが小さく検索が早いこと、N-Gram は業界用語などの特定ドメインの言葉や日本語以外にも対応できて部分一致検索が可能であることなど、双方に利点があります。
今回は Solr を使用した N-Gram 系トークナイザーについて記述します。
家では MacBook をメインで使っていますが、Illustrator / Photoshop (Windows 版) で図を書いたり、Visual C++ や Office が必要な時にはわざわざ ThinkPad を起動し VNC で接続したり場所を移動したりしています。Windows XP はかなりレガシーな雰囲気が否めませんが開発事を行っていると中々手放すわけには行かない環境でもあります。
そこで自宅サーバのコア数/メモリ/ディスクに余裕を持たせ Xen で仮想化した上に Windows XP を構築し、必要なときに VNC で接続して使おうと思い立ち新しいサーバを構成したわけです。この記事では Xen 上で Windows XP を起動するまでの構成について書いています。
Xen で Windows を動作させるには準仮想化に対応した CPU が必要です。具体的には VT (Intel Virtualization Technorogy) に対応している必要がありますので、使おうとしている CPU が VT に対応しているか先に調べてください。
CPU | Xeon E3-1230 |
---|---|
OS | CentOS 5.6 final, Kernel 2.6.18-238.12.1.el5 |
Xen | 3.0.3-120.el5_6.2 |
プロセスの PID を記録してデーモンの起動と終了を行うといった Unix 系のサーバで一般的に行われている手法を Java VM で行うためなどに VM のプロセス ID が取れたらと何時も思っておりましたが、実際にやろうと思うと JNI を使用して環境ごとのネイティブライブラリを作らなければならなかったりと一々面倒です。
たまたま JMX (Java Management Extensions) を使ってサーバ管理系の MXBean などを作っておりましたところプロセス ID らしきものが目についたのでここにメモしておきます。やり方は簡単、RuntimeMXBean
を使用するだけです。
import java.lang.management.*; RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); String name = rt.getName(); if(name.matches("\\d+@.*")){ pid = Integer.parseInt(name.substring(0, name.indexOf('@'))); } else { // 取得できなかった場合 pid = -1; }
上記のように RuntimeMXBean#getName()
は "pid@hostname"
という形式の文字列を返しますので解析してプロセス ID を取り出すことができます。もちろん環境依存の挙動であるためすべての実行環境でうまく取得できる保証はありませんが、特定の環境向け開発だとか、ネイティブライブラリを用意するのはこの方法がうまく行かなかった環境だけと割り切るだけでも楽かと思います。
手元で確認できた環境は以下の通り。他にあればコメントなどに残しておいてもらえると助かります。
- Oracle JDK 1.6.0_26 (CentOS 5.6 final)
- Oracle JDK 1.6.0_24 (Windows XP)
- Apple JDK 1.6.0_26 (MacOSX 10.5)