複数のSSHDを起動する2010-04-01 23:11:03

内向き、外向き用のsshdを用意する。

まず、シンボリックリンクを作成する

# cd /usr/sbin/
# ln -s sshd sshd-public

起動スクリプトをコピーし、外向き用にスクリプトを書き換える。

# cp /etc/rc.d/init.d/sshd /etc/rc.d/init.d/sshd-public

書き換え場所は次の通り。

# diff -u /etc/init.d/sshd /etc/init.d/sshd-public
--- /etc/init.d/sshd    2010-03-01 07:33:21.000000000 +0900
+++ /etc/init.d/sshd-public     2010-03-31 16:58:14.000000000 +0900
@@ -5,29 +5,29 @@
 # chkconfig: 2345 55 25
 # description: OpenSSH server daemon
 #
-# processname: sshd
+# processname: sshd-public
 # config: /etc/ssh/ssh_host_key
 # config: /etc/ssh/ssh_host_key.pub
 # config: /etc/ssh/ssh_random_seed
-# config: /etc/ssh/sshd_config
-# pidfile: /var/run/sshd.pid
+# config: /etc/ssh/sshd-public_config
+# pidfile: /var/run/sshd-public.pid

 # source function library
 . /etc/rc.d/init.d/functions

 # pull in sysconfig settings
-[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
+[ -f /etc/sysconfig/sshd-public ] && . /etc/sysconfig/sshd-public

 RETVAL=0
-prog="sshd"
+prog="sshd-public"

 # Some functions to make the below more readable
 KEYGEN=/usr/bin/ssh-keygen
-SSHD=/usr/sbin/sshd
+SSHD=/usr/sbin/sshd-public
 RSA1_KEY=/etc/ssh/ssh_host_key
 RSA_KEY=/etc/ssh/ssh_host_rsa_key
 DSA_KEY=/etc/ssh/ssh_host_dsa_key
-PID_FILE=/var/run/sshd.pid
+PID_FILE=/var/run/sshd-public.pid

 runlevel=$(set -- $(runlevel); eval "echo \$$#" )

@@ -108,9 +108,9 @@
        cp -af /etc/localtime /var/empty/sshd/etc

        echo -n $"Starting $prog: "
-       $SSHD $OPTIONS && success || failure
+       $SSHD -f /etc/ssh/sshd-public_config && success || failure
        RETVAL=$?
-       [ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
+       [ "$RETVAL" = 0 ] && touch /var/lock/subsys/$prog
        echo
 }

@@ -128,7 +128,7 @@
        if [ "x$runlevel" = x0 -o "x$runlevel" = x6 ] ; then
            killall $prog 2>/dev/null
        fi
-       [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd
+       [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/$prog
        echo
 }

@@ -159,7 +159,7 @@
                reload
                ;;
        condrestart)
-               if [ -f /var/lock/subsys/sshd ] ; then
+               if [ -f /var/lock/subsys/$prog ] ; then
                        do_restart_sanity_check
                        if [ "$RETVAL" = 0 ] ; then
                                stop

設定ファイルをコピーして、外向き用に書き換える。

# cp /etc/ssh/sshd_config /etc/ssh/sshd-public_config

# diff -u /etc/ssh/sshd_config /etc/ssh/sshd-public_config
--- /etc/ssh/sshd_config        2010-03-31 16:48:10.000000000 +0900
+++ /etc/ssh/sshd-public_config 2010-03-31 16:48:22.000000000 +0900
@@ -1,7 +1,7 @@
-Port 2222
+Port 22
 Protocol 2
 ListenAddress 192.168.0.4
-PidFile /var/run/sshd.pid
+PidFile /var/run/sshd-public.pid
 SyslogFacility AUTHPRIV
 LogLevel INFO
 PermitRootLogin no

これまた、diffで。

DSpace1.6のインストールメモ62010-04-04 16:04:43

User Registrationにて発生していたInternal Error。DspaceとTomcatの両方のログにはエラーが表示されず困っていたが、結局、読み込まれているJavaMailのバージョンが古いことが理由だった。

# pwd
/var/lib/tomcat5/common/lib
# ls -all \[javamail\].jar
lrwxrwxrwx 1 root root 28 Apr  4 08:04 [javamail].jar -> /usr/share/java/javamail.jar
# ls -all /usr/share/java/javamail.jar
lrwxrwxrwx 1 root root 26 Mar 26 18:37 /usr/share/java/javamail.jar -> /etc/alternatives/javamail
# ls -all /etc/alternatives/javamail
lrwxrwxrwx 1 root root 52 Mar 26 18:37 /etc/alternatives/javamail -> /usr/share/java/classpathx-mail-1.3.1-monolithic.jar

CentOS5.4にインストールされているJavaMailのバージョンは1.3.1。Dspaceに含まれているものよりも古い。このシンボリックリンクを削除することでエラーが発生しなくなり、無事メールが送信されるようになった。

DSpace1.6で日本語全文検索2010-04-04 23:19:12

DSpaceにて日本語N-gramを実現する。 具体的にはCJKTokenizerを使うだけだけど。

準備

まず、作業をしやすくするために、環境変数を追加する。

# vi /etc/profile

export DSPACE_SOURCE=/home/dspace/dspace-1.6.0-src-release
exourt DSPACE_HOME=/usr/local/dspace

# source /etc/profile

DSpaceソースの変更

luceneのソースファイルを手に入れる。

# cd /usr/local/src
# wget http://archive.apache.org/dist/lucene/java/lucene-2.9.2-src.tar.gz
# tar zxvf lucene-2.9.2-src.tar.gz

DSpaceのDSTokenizer.javaをCJKTokenizer.javaと入れ替える。また、合わせて幾つかのソースファイルを変更する。

# cd $DSPACE_SOURCE/dspace-api/src/main/java/org/dspace/search/
# mv DSTokenizer.java DSTokenizer.java.bak
# cp /usr/local/src/lucene-2.9.2/contrib/analyzers/common/src/java/org/apache/lucene/analysis/cjk/CJKTokenizer.java .
# mv CJKTokenizer.java DSTokenizer.java

リネームしたCJKTokenizer.javaを書き換える。まず、パッケージを変更する。

# vi DSTokenizer.java
package org.dspace.search;
//package org.apache.lucene.analysis.cjk;

また、ファイル内のCJKTokenizerをDSTokenizerに置換する。

つぎに、DSAnalyzer.javaを書き換える。

# vi DSAnalyzer.java


 /*
     * Create a token stream for this analyzer.
     */
    public final TokenStream tokenStream(String fieldName, final Reader reader)
    {
        TokenStream result = new DSTokenizer(reader);

        result = new StandardFilter(result);
        result = new LowerCaseFilter(result);
        result = new StopFilter(result, stopSet);
        result = new PorterStemFilter(result);
        //追加
        result = new StopFilter(result, new String[] {""});

        return result;
    }

DSpaceのリビルドと索引の作成

あとは、DSpaceをリビルド。

# cd $DSPACE_SOURCE/dspace/target/dspace-1.6.0-build.dir/
# ant -Dconfig=$DSPACE_HOME/config/dspace.cfg update

索引を再作成する。

# cd $DSPACE_HOME
# bin/index-update
Creating browse index
Creating search index
#

これで、日本語全文検索が可能となった。はず。

今週のPC利用率2010-04-10 08:38:27

ManicTimeというソフトウェアが面白い。ManicTimeはPCの利用率を管理することで、個人の時間を管理するソフトウェア。自分のネット依存率もこれでわかる。

ちなみに、この画像は今週のPC利用率とブラウジング時間を集計したグラフ。今週は結構席を離れてたから、こんなもんか。

Windows7で日本語キーボードが認識されない2010-04-14 23:09:12

色々あって、今まで放置してきたWindows7を新規インストール。順調にいったかと思ったが、日本語キーボードが認識されていないことに気が付いた。

コントロールパネルから「キーボードまたは入力方法」を起動して、色々やったのだが、直らない。まあ、英語キーボードを利用していると思えばいいのだが、やっぱり、色々と不便。

調べてみると、英語キーボードの設定方法いついて書かれた記事がいくつかあった。まあ、それの逆をすれば良いわけだ。

そこでregeditを起動して、以下のキーを設定した。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\i8042prt\Parameters

LayerDriver JPNREG_SZkbd106.dll
OverrideKeyboardIdentifierREG_SZPCAT_106KEY
OverrideKeyboardSubtypeREG_DWORD2
OverrideKeyboardTypeRED_DWORD7

最後に再起動。パスワードを修正するのを忘れていたから、最初ちょっと焦ったけどね。

HDD増設:eMachines ET1710-01j2010-04-17 11:24:27

eMachines ET1710-01jがディスクエラーを出すようになってから、約2ヶ月、やっとこさ、ハードディスクを増設した。

増設したのはWetern DigitalのWD20EADS。 ET1710-01jを開けてみて知ったのだが、最初から載ってたのもWestern Digitalだったのね(WD3200AAJS)。

あと、マザーボードにはfoxconnのG33M05 REV 1.0と書かれていた。

BIOSで無事認識されたので、取りあえず、作業終わり。CPUも替えたいな。

nmapで有効なホストを捜す2010-04-18 01:43:02

# nmap -sP 192.168.0.1-254

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-04-18 00:47 JST
Host 192.168.0.1 appears to be up.
MAC Address: 00:A0:DE:15:4F:BB (Yamaha)
Host 192.168.0.2 appears to be up.
MAC Address: 00:0C:29:B5:DC:6E (VMware)
Host 192.168.0.3 appears to be up.
MAC Address: 00:22:68:06:EE:FF (Unknown)
Host mhrz.jp (192.168.0.4) appears to be up.
Host 192.168.0.5 appears to be up.
MAC Address: 00:0C:29:5C:97:E3 (VMware)
Host 192.168.0.6 appears to be up.
MAC Address: 00:0C:29:D1:4B:4A (VMware)
Nmap finished: 254 IP addresses (6 hosts up) scanned in 4.361 seconds
#

まあ、pingが届かないなら無理だけど。