メイン

PC アーカイブ

2007年06月20日

FreshReaderバージョンアップ

前々から気になっていたFreshReaderの新しいバージョンをインストールしました。

バージョンアップ方法はsffr20unix_ja.tar.gzをダウンロードして、以前インストールしたディレクトリに上書きするだけです。dbディレクトリを削除しないようにとの記述がありましたが、FTPを使うわけではないので問題ありませんでした。

バージョンアップ後は、[システム設定]→[システム実行環境の表示]を選択し、バージョン番号が2.0.07041100になっていれば成功です。

入り直すと見た目もちょっとバージョンアップした感じでGJでした。

おまけ

購読サイトを追加する際のブックマークレットは、左側メニューの[新機購読]→[ワンクリック購読]で 追加できました(今までつかっていなかった)。

MovableTypeの時刻表示を表示する

MovableTypeの投稿時刻表示をカスタマイズしようと思い調べてると、テンプレートファイルの$MTEntryDate$をいじればいいことがわかりました。たとえばメインページの時刻表示を変更するには、環境設定のテンプレートでメインページを選び、<$MTEntryDate format="%x %X"$>となっている部分を変更します。

       <MTElse>
           日時: <$MTEntryDate format="%x %X"$>
       </MTElse>

%xが日付表示、%Xが時間表示に該当するので、次のように変更すると 日付だけが表示されます。

       <MTElse>
           日時: <$MTEntryDate format="%x"$>
       </MTElse>

ただしこのままだとメインページの投稿時刻表示しか変更されません。個別ページの投稿時刻表示もカスタマイズしたい場合はそれぞれのテンプレートを変更する必要がありそうです。全体一括設定みたいなのは見つかりませんでした。

2007年06月21日

mvn packageで生成するjarにバージョン番号がつかない?

mvn packageで生成するjarファイルにバージョン番号がつかないので、てっきりMaven2のバグ か仕様変更のせいだろう思っていたら自分のpom.xmlファイルの書き間違いでした( ´ー`)フゥー...

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>junit.extensions.converter</groupId>
  <artifactId>string-converter</artifactId>
  <packaging>jar</packaging>
  <version>1.2.2</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>string-converter</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    <plugins>
      <plugin>
        <inherited>true</inherited>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
          </executions>
      </plugin>        
    </plugins>
  </build>  
</project>

このpom.xmlファイルを使ってmvn packageを実行すると、string-converter.jarとstring-converter-sources.jarが targetディレクトリの下に作られます。なぜかバージョン番号である1.2.2がファイル名に含まれません。理由は finalNameを指定していたせいでした。

   <finalName>string-converter</finalName>

いつのまに(゚Д゚≡゚Д゚)。これを削除してmvn packageを実行すると、めでたくstring-converter-1.2.2.jarとstring-converter-1.2.2-sources.jarができました。ありがたや。

絶対強者ティガレックス突破

噂の絶対強者ティガレックスを突破しました。村ですが。噂のずっと俺攻撃をくらって二死したのですが、最後の神風アタックでなんとかやっつけました( ´ー`)フゥー...。武器はずっとつかってる鬼斬破でした。ただやみくもに振り回しているだけだったのでこつもなにもないですが、薬と閃光弾山盛りでいどんだのが良かったかと。戦争の鍵は兵站にありですよ。ローマ軍もそういってました。

さぁ村レベル5もがんばろう。

2007年06月22日

CentOS 4.4 on VMware Workstation 5.5.4

VMware Workstation(Host Windows XP sp2)にCentOS 4.4のDVD isoイメージを直接マウントしてインストールしようと試みたのですがなぜかできませんでした。インストーラーは起動するもののCD-ROMドライブが見つからないと言われそこで止まってしまいます。ひょっとしてDVDイメージだから失敗するのでしょうか?

centos.jpg

いろいろ検索してみると、VMware Workstation 6.0がリリースされていることを発見。ろくにつかってないのに またバージョンアップしろと?(゚Д゚≡゚Д゚)

2007年06月25日

Tomcat自動起動スクリプト

CentOS4.4で運用するTomcat5のための自動起動スクリプトを作りました。 Tomcat の起動 | 自宅サーバー Fedoraを参考にさせていただき サクっと動くだろうと考えていたら割とめんどうでした。

  • 上記サイトの内容を/etc/init.d/tomcatに保存。
  • JAVA_HOME、TOMCAT_HOME、PATHの設定を追加。
  • chkconfigで登録
    • chkconfig --add tomcat
    • chkconfig tomcat on
  • 再起動。

これだと何度起動してもTomcatの起動部分で止まってしまいます。しかたないので 起動ログをファイルに落としてみたところ、何やら見慣れない文字が含まれていました。

/etc/init.d/tomcat

/bin/su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >/tmp/tomcat.log 2>&1

/tmp/tomcat.log

Do you want to choose a different one? [n]
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/java/jdk1.5.0_11
Your default context is user_u:system_r:unconfined_t. 

"Do you want to choose a different one"と表示されるのは SE Linuxの機能が 働いているのが原因みたいです。解決策は、"su" -> "runuser"に変更すること。って 工工工エエエエエエェェェェェェ(゚Д゚)ェェェェェェエエエエエエ工工工。

最終的にこんな感じになりました。

File Edit Options Buffers Tools Insert Help                                                                                            
# chkconfig: 2345 85 15                                                                                                                
# description: Apache Tomcat Java Servlets and JSP server                                                                              
# processname: tomcat                                                                                                                  
# pidfile: /var/run/tomcat.pid                                                                                                         
# config: /usr/local/tomcat/conf/server.xml                                                                                            

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

# Source networking configuration.                                                                                                     
. /etc/sysconfig/network

###### added by src #####                                                                                                              
export JAVA_HOME=/usr/java/jdk1.5.0_11
export PATH=$JAVA_HOME/bin:$PATH
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=$TOMCAT_HOME
###### added by src #####                                                                                                              

TOMCAT_SCRIPT=$CATALINA_HOME/bin/catalina.sh
TOMCAT_USER=tomcat

[ -f $TOMCAT_SCRIPT ] || exit 0

# See how we were called.                                                                                                              
case "$1" in
    start)
        # Start daemons.                                                                                                               
        if [ -f /var/lock/subsys/tomcat ] ; then
            echo "Tomcat already started!"
            exit 1
        fi
        echo -n "Starting Tomcat: "        #/bin/su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >/tmp/tomcat.log 2>&1                                           
        ###### su->runuser by src #####                                                                                                
        /sbin/runuser -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start"
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/tomcat
        ;;
    stop)
        # Stop daemons.                                                                                                                
        if [ ! -f /var/lock/subsys/tomcat ] ; then
            echo "Tomcat already stopped!"
            exit 1
        fi
        echo -n "Shutting down Tomcat: "
        $TOMCAT_SCRIPT stop
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/tomcat
        ;;
    status)
        status tomcat
        exit $?
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: $TOMCAT_PROG {start|stop|status|restart}"
        exit 1
esac

exit 0

2007年06月28日

updatedbを毎朝実行する

CentOSのデフォルト設定だとupdatedbが自動実行されないようです。毎日実行するためには、 /etc/updatedb.confのDAILY_UPDATEを"yes"に変更します。

# To enable the updatedb in cron, set DAILY_UPDATE to yes
DAILY_UPDATE=yes

PRUNEFS="sysfs selinuxfs usbdevfs devpts NFS nfs nfs4 afs sfs proc smbfs cifs autofs auto iso9660 udf"
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /net /sfs /selinux /udev /mnt/floppy /media"
export PRUNEFS
export PRUNEPATHS

cronの設定ファイルは/etc/cron.daily/slocale.cronに存在していて、DAILY_UPDATEの値を見て実行するかどうするか 決定していたという事らしいです。

#!/bin/sh
. /etc/updatedb.conf
[ "$DAILY_UPDATE" != "yes" ] && exit 0
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb

従って、updatedb.confを変更すれば次回からupdatedbが毎日実行されるようになります。

タグクラウド表示

以下のサイトを参考にさせていただき、MovableTypeのタグクラウドを表示するように 設定してみました。カテゴリーで分類すると限界を突破するのでタグで管理していきたいと思います。

CentOS4.3→4.5アップグレード

CentOSはyumを使って簡単にアップグレードする事ができます。 4.3から4.5に更新しました。

/etc/redhat-releaseを見ると現在のバージョンが確認できます。

[root@dev workspace]# more /etc/redhat-release 
CentOS release 4.3 (Final)

yum updateを実行します。

[root@dev workspace]# yum update

...以下延々と続く...

Complate!

再度/etc/redhat-releaseを確認します。

[root@dev workspace]# more /etc/redhat-release 
CentOS release 4.5 (Final)

成功しますた。

DB2のFixPak適用方法

Linux上のDB2(V8)にFixPakを適用しようとしてはまったのでメモ。

現在のFixPak状況を確認

db2levelコマンドで確認します。「FixPak "14" です。」と表示されたらFixPak14が適用されています。

V8用のFixPakをダウンロード

V8の場合以下のリンクからたどっていきます。しかしIBMのURLはころころ変わるので すぐリンク切れると思われ。

Select Oneとなっているところを変更します。CentOS4.5の場合、Kernel2.6を使っているので x86(32bit)の2.6 kernelを選択し、"GO"を押します。

ページが変わったら、Regular FixPak for V8 FixPak 14を選択し(現在の最新)、ダウンロード します。たいていサイズがでかいので注意。

FixPak適用

tar ballなので適当に展開します。

# tar xvf FP14_MI00176.tar 

installFixPakを実行します。"-y"オプションをつけると全ての質問にyesで答えます。

# /installFixPak -y

db2iupdtを実行します。"-e"オプションをつけると全てのインスタンスをアップデートします。 これを実行しないと start database managerが失敗します。SQLSTATE=58004予期せぬ エラーが発生します。ここで何回もはまった私。

#/opt/IBM/db2/V8.1/instance/db2iupdt -e

確認

db2levelで確認します。

2007年06月30日

DB2自動起動せず

FixPakを当てたらDB2が自動起動しなくなりました。

db2iauto on db2inst1

とかすれば自動起動するはずらしいけどしない(゚Д゚≡゚Д゚)。 これがIBMクオリティ。いや俺クオリティ。

2007年07月02日

DB2で自動起動

DB2V8にFixPakをあてたら自動起動しない設定になってしまったようなので、自動起動するように いろいろ頑張ってみました。

現象

DB2V8にFixPakをあてたらDB2が自動起動しない。手動でdb2 start database managerすればOK。

対策

# db2iauto -on  db2inst1

でOK(かも)。障害モニター関連でいろいろやってたら知らないうちに起動するようになった(;゚Д゚)

補足・障害モニターについて

DB2には障害モニターというものがあり、DB2のインスタンスが不慮の事故で止まってしまったときに 復活させる機能をうけもっているらしい。設定をいろいろいじっていたものの結局 よく分からないまま。以下メモ

db2fmcd

db2fmcdは障害モニターdb2fmd(DBのインスタンスごとに一つ作られる)の調整を行うデーモン。 inittabで設定されシステム起動時に自動起動される。inittabに登録するには次のように実行する。

 # /opt/IBM/db2/V8.1/bin/db2fmcu -u -p /opt/IBM/db2/V8.1/bin/db2fmcd 

db2fmd

障害モニター本体。db2fmcdから起動される?db2fmコマンドで設定を変更することができる。例えばインスタンスdb2inst1の 現在の設定は、/home/db2inst1/sqllib/fm.dev.localdomain.regなどで確認できる(devはホスト名)。

FM_ON = no # updated by db2fm
FM_ACTIVE = yes # default
START_TIMEOUT = 60 # default
STOP_TIMEOUT = 60 # default
STATUS_TIMEOUT = 20 # default
STATUS_INTERVAL = 20 # default
RESTART_RETRIES = 3 # default
ACTION_RETRIES = 3 # default
NOTIFY_ADDRESS = db2inst1@dev.localdomain # default

DBのインスタンスの他に、DASのインスタンスも存在している。それは、/home/dasusr1/das/fm.dev.localdomainで確認できる。

FM_ON = yes # default
FM_ACTIVE = yes # default
START_TIMEOUT = 60 # default
STOP_TIMEOUT = 60 # default
STATUS_TIMEOUT = 20 # default
STATUS_INTERVAL = 20 # default
RESTART_RETRIES = 3 # default
ACTION_RETRIES = 3 # default
NOTIFY_ADDRESS = dasusr1@dev.localdomain # default

IBMによるとFM_ON=yesかつFM_ACTIVE=yesのときだけ障害モニターが自動起動するとのことなので、 上記設定ではdasの障害モニターだけしか自動起動してない(のか?)。

で、上記設定でもdb2inst1のインスタンスは自動起動してる。自動起動してないときは、 db2fmcdがrootとdasusr1の二つのユーザーで起動してたみたいだけどそのせい? 謎は深まる( ´ー`)フゥー...

参考リンク

2007年07月03日

Continuumのビルドスケジュール指定方法

Continuumではcron形式でビルドスケジュールを指定します。

フィールド

フィールドは最大6(+1)で左から順に次のような意味を持ちます。
フィールド名許される値許される特殊文字
0-59, - * /
0-59, - * /
0-23, - * /
1-31, - * ? / L W
1-12 or JAN-DEC, - * /
曜日1-7 or SUN-SAT, - * ? / L #
年(Optional)空白 or 1970-2099, - * /

特殊文字

"*"
全ての値に一致。例えば分フィールドで指定すると、"毎分"を意味する。
"-"
範囲指定。例えば時フィールドで"10-12"を指定すると、10、11、12時を意味する。
"?"
日または曜日フィールドで許され、特に値を指定しないことを意味する。
","
複数の値。曜日フィールドに"MON,WED,FRI"を指定すると、月、水、金曜日を意味する。
"/"
増分指定。例えば秒フィールドで"0/15"を指定すると、0、15、30、45秒を意味する。

サンプル

意味
0 0 12 * * ?毎日正午に実行
0 0/15 9-19 ? * MON-FRI月~金の9時~19時は15分おきに実行

となります。

2007年07月04日

java.lang.OutOfMemoryError: Java heap space

現象

開発中のClick製Webアプリで、急に検索結果が表示されなくなったので調査してみると、OutOfMemoryErrorが 発生していました。発生している箇所はHtmlStringBufferのコンストラクタで、lengthは34763100でした。
    public HtmlStringBuffer(int length) {
        characters = new char[length];
    };

大量の検索結果をテーブルでレンダリングしようとして、Table.toString()を呼び出したところでOutOfMemoryErrorが発生していたみたいです。Javaではヒープサイズを起動時パラメータで 指定するのが流儀なのでとりあえず起動時パラメータを変更して対応することにしました。

対策

EclipseのTomcat Pluginの設定を変更します。ウィンドウ→設定→Tomcat→JVM設定を選択し、 「JVMパラメータへ追加」で、パラメータを追加します。

  • -Xms256m
  • -Xmx512m

※ちなみに他にもパラメータがある場合は、-Dname=value形式で追加できるようです。 1行に複数指定できるかどうかは未確認。

結果

再起動して再度試してみるととりあえず表示できました。しかし検索結果出し過ぎという根本的な 問題があるのでそれは別の方法で対処したいと思います。

2007年07月05日

getoptは非推奨になっていたらしい(遅

仕事で使うRuby製小物ツールでコマンドラインオプションを解析する必要に迫られたので、 サンプルを検索してみたら、getoptがどうやら非推奨になった(なる?)という事を発見しました(゚Д゚≡゚Д゚)([ruby-list:40502] Re: getopt)。しかたないのでoptparseで書くことにしました(遅

optparse

眺めてみると必要十分な機能はありそうです。

  • "-w"…ファイル書き出しのみ指定
  • "-t テーブル名1,テーブル名2"…テーブル名の指定(値つき引数)

上記オプションを解析したい場合、次のように書きます。

require 'optparse'

opt = OptionParser.new
opt.on('-w') {|v| p v }
opt.on('-t TABLE', '--table=TABLE') {|v| p v.split(/,/) if v }
opt.parse!(ARGV)
print opt.help

複数オプションを指定するときのやりかたがよく分からなかったので、困ったときのCSVでごまかしてみました。

2007年07月11日

radio SHARK 2売り切れる

Just MyShop - Griffin USB対応FM/AMラジオチューナー radio SHARK 2(製品の特長/動作環境・カタログ) -

パソコンに接続して録音できるラジオチューナー。数日前にJust MyShopからメールがきていたので興味がひかれて いたのですが、今日みたら既に売り切れていました。なくなると急激にほしくなる罠…。ただインターネット上の 評価だとAM放送の受信感度が低いらしいのが問題かな?

2007年07月12日

Maven2のCargoプラグインが止まる

仕事で、Continuum+Maven2のCargoプラグインを使って、Tomcatに自動デプロイするビルド環境を運用しています。最初はなかなか快調にビルドされていたのですが、たまに?止まっていることがあります。

undeployまたはdeploy時にTomcatが止まってしまっている?のが原因みたいです。

公式サイトによるとcargo:deployer-redeployっていうのが使えるみたいです。今までは、 cargo:undeploy cargo:deployを使用していたので、これが原因で不安定だったのかなと。 これで良くなればよいのですが。

はてなスターキタ━ヽ(ヽ(゚ヽ(゚∀ヽ(゚∀゚ヽ(゚∀゚)ノ゚∀゚)ノ∀゚)ノ゚)ノ)ノ━!!!!

で、MovableTypeでどうやって対応すれば(゚Д゚≡゚Д゚)。 はてな日記にフカーツしろと?(゚Д゚≡゚Д゚)。

2007年07月13日

[IBM][CLI Driver] CLI0114E 日時フィールドがオーバーフローしました。 SQLSTATE=22008

S2DaoでDTOのDate型のフィールドに時刻をセットして更新しようとするとエラーが発生しました。

[IBM][CLI Driver] CLI0114E  日時フィールドがオーバーフローしました。 SQLSTATE=22008

SQLのログを表示したところ、明らかに正規の日時文字列('2007-07-13')でオーバーフローしていなかったのでかなり 困惑してしまったのですが、DTOにセットする日付を、

new java.util.Date()

で生成していることを発見したので、これを変更し、時分秒部分を0クリアしてみるとうまく動いてしまい ました。時分秒部分があるおかげでオーバーフロー扱いなんでしょうか?120%釈然としないので メモっときます。

2007年07月15日

Bookmark Sync and Sort

Firefoxでブックマークをネットワーク経由で同期するソフトを探してみました。

BookmarkSyncAndSort

BookmarksSynchronizer の後継として 開発されたソフトらしい。FTP、WebDAVなどを利用してSync。自宅サーバー可。

Google Browser Sync

Google謹製。ブックマークだけではなく履歴やパスワードなども保存できる。やりすぎ?(゚Д゚≡゚Д゚)。 自宅サーバー不可。

Foxmarks Bookmark Synchronizer :: Firefox Add-ons

アカウント必要で自宅サーバー不可?

結論

Google Browser Syncは一時期使っていたのですが、エントリーがだぶったり逆になくなったりして いまいちでした。ほんとに使ってるのかと。あと共有サーバーに情報を保存するタイプはやっぱり 気持ち悪いので、BookmarkSyncAndSortの一択かなぁ?

bs.jpg

2007年07月25日

mvn archetype:createに失敗する

現象

mvn archetype:createでロジェクトを作ろうとしたらBUILD ERRORが発生して失敗しました。

D:\temp>mvn archetype:create -DgroupId=com.softantenna -DarchefactId=sacore
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] org.apache.maven.plugins: checking for updates from central
[WARNING] repository metadata for: 'org.apache.maven.plugins' could not be retri
eved from repository: central due to an error: Error transferring file
[INFO] Repository 'central' will be blacklisted
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] The plugin 'org.apache.maven.plugins:maven-archetype-plugin' does not exi
st or no valid version could be found
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Wed Jul 25 18:02:03 JST 2007
[INFO] Final Memory: 1M/2M
[INFO] ------------------------------------------------------------------------

解決方法

Nortonが通信をブロックしている可能性があるというblogの記事を発見したので(ふぅ: [Maven2] mvn archetype:create出来ない・・・ part2)、ためしにファイアウォールをオフにしてみたら、見事に動きました(汗。ここにいたるまでかなりはまりました。最初はセントラルリポジトリがおかしいのかと思ってましたよ…。

Norton Internet Security 2007がファイアウォールのjava.exeのプログラム制御を自動できめ、かつ その設定でMaven2の通信が自動で遮断されてしまうのが原因のようです。Nortonをアンインストールというのも有力な解決方法だと思いましたが、今回はjava.exeのプログラム制御を変更することにしました。

Norton Internet Security 2007 のファイアウォール設定で、[プログラム制御]を選択します。そこでjava.exeを 選択し、[修正]を選択します。下記ダイアログでチェックがついているルールを削除します。これで使用可能になるはず。

norton.jpg

2007年07月29日

WindowsXPでネットワークドライブが切断されてしまう

WindowsXPでネットワークドライブが切断されてしまう場合は次の項目を確認する。

  • ネットワークドライブの割り当て時に、「ログオン時に再接続する」にチェックを入れておく。
  • コントロールパネル→管理ツール→ローカルセキュリティポリシー→セキュリティオプション→ Microsoft ネットワークサーバー: ログオン時間の有効時間が切れるとクライアントを切断するを無効にする。

2007年08月02日

キザミS、ザザミS

異常震域がどうしてもだめぽなので、ザザミS、キザミS装備+ガンランスでせめてみようと思い立ちました。 が、しかし今までほぼ太刀オンリーですすめてきたので、必要な装備がありません。 とりあえず防具をそろえるために、上位ショウグンキザミをやっつけにいったら逆にやっつけられそうになりました。 ガルルガU(激運)でなんとか頑張ったので報酬がいっぱいでましたがまだ全然たりず。 先は長い…。

2007年08月07日

Charu3ストックモードは便利

クリップボード拡張ツールのCharu3を愛用しています。

クリップボードの履歴管理や定型文の入力に大変便利なツールなのですが、ストックモードというのを今日はじめて使ってみて便利さに感動しました。

ストックモードは簡単にいうと、CTRL-Cでコピーした順にCTRL-Vで貼り付けできる 機能のことです(先入れ先出し)。普通何度CTRL-CでクリップボードにコピーしてもCTRL-Vで貼り付けることができるのは最後にCTRL-Cした内容だけなので、違いは分かると思います。

例えばヘルプにあるサンプルで説明すると、

埼玉県浦和市本町789-168
岐阜県三和市吉田町5丁目7-96
千葉県鴨川市東条4-9-98 

から、埼玉、岐阜、千葉という文字列をコピーするのに使えます。 埼玉を選択してCTRL-C、岐阜を選択してCTRL-C、千葉を選択してCTRL-Cを押し、 CTRL-Vを三回押すと次のようにペーストされます。

埼玉
岐阜
千葉

ストックモードじゃない場合、一回ごとにCTRL-C、CTRL-Vを繰り返さないといけないので大変めんどくさい です。こんなに簡単にWindowsの限界を突破できるなんて(゚Д゚≡゚Д゚)

2007年08月10日

DecimalFormatのparseでBigDecimalを返す

  • DecimalFormatのparseの戻り値はNumber。
  • 何もしないと、Double(小数っぽい文字列の場合) or Long(整数っぽい文字列の場合)を返す。
  • しかしsetParseBigDecimal(true)するとBigDecimalを返すようになる。

例えば次のように使えます。

        //parseがBigDecimalを返すかどうか
        DecimalFormat fmt = new DecimalFormat("##.00");
        fmt.setParseBigDecimal(true);
        String value = "10.1";
        BigDecimal n = (BigDecimal) fmt.parse(value);

そもそもなんでこんなことを調べていたかというと、ClickのDoubleFieldを拡張してBigDecimalを扱える ように改造していたから。何もケアしないと入力のBigDecimalと出力のBigDecimalでスケールがことなり Beanの比較で失敗していたので、いろいろ調べていたのでした。

結局DoubleFieldを継承したクラスで次のようにメソッドをオーバーライドし、コンストラクタで渡された 小数部の長さをスケールとして持つBigDecimalを返すようにしました。

  public Number getNumber() {
        String value = getValue();
        if (value != null && value.length() > 0) {
            try {
                BigDecimal n = (BigDecimal) getNumberFormat().parse(value);
                //スケールを合わせないとequalsで等しいと見なされない。
                // ex 100.00と100は等しくない
                return n.setScale(decimalPartMaxLength);
            } catch (ParseException nfe) {
                return null;
            }
        } else {
            return null;
        }
    }

    public BigDecimal getBigDecimal() {
        return (BigDecimal) getNumber();
    }

    public Object getValueObject() {
        return getBigDecimal();
    }

2007年08月18日

WinCVSごった煮版はどこに?

CVSリポジトリに保存してあったファイルをSVNリポジトリに保存しなおそうとして困ってしまいました、最近はTortoiseSVNばかりでCVSはほとんど使っていなかったせいでCVSクライアントを全くインストールしていなかったからです。以前使っていた「WinCVSごった煮版」を探してみたのですが、もともとの配布サイトに接続できずどのページもリンク切れになっています。今のCVSクライアントの主流って何なんでしょうか?

結局あろはだよCVSからダウンロードできたのでよかったのですがちょっと苦労しました。というメモ。

2007年09月03日

CF-W5A購入

安くなってきたCF-W5Aを購入しました。レッツノート秋モデルの発表が9月末にあるらしいのであんまりいいタイミングとはいえませんが、仕事の道具だから仕方ないです。

よい点。

  • 軽い。
  • なんだかんだいってDVDマルチ内蔵は便利。
  • 頑丈。

わるい点。

  • 発熱する。SpeedFanで計ったら内部の温度はそうでもないけど底が暑いです。
  • HDDの回転音が結構聞こえる。ファンっぽい音が(;゚Д゚)
  • Vista使い勝手がなぁ…。

メモリは1G追加したので重いと評判のVistaもそこそこ動いているみたいです。正直初めてVista使ってるので重いのか軽いのか判断がつかないのですが死ぬほど重いってことはないって感じ? 速攻XPに入れ替えようかと思ってましたがしばらく使ってみようと思います。

2007年09月17日

iTunes導入に伴う不要サービスを停止する

iTunesを導入すると、iTunesHelper.exeやiPodService.exeといったiTunes単独で使う分には全く不要(?)なサービスが常駐してしまいます。デスクトップPCで使う分には別にいくら常駐してもよいと富豪的に考えていたのですが、非力ななノートPCだとちょっと気持ち悪いです。そこでこれらの余計なサービスを止める方法を調べてみました。

iTunesHelper.exeの停止

iTunesHelper.exeはスタートアップから起動されているのでmsconfigを使って起動しないように設定を変更します。qttask.exeもおそらく起動する設定になっているのでこれも起動しないようにします。

iPodService.exeの停止

iPodServiceの停止はめんどくさいです。サービスとして登録されているのでコントロールパネル→管理ツール→サービスでスタートアップを無効に変更すればよさそうなのですが、iTunesを起動すると、無効が手動に変更され、それと同時にiPodServiceも起動してしまいます。iPodService.exeの実体ファイルは、C:\Program Files\iPod\bin\iPodService.exeなのでこれを削除してみたのですが、勝手に復活してしまいます。とりあえずiPodService.exeのセキュリティ設定を変更して、実行できないようにしてみたら起動しないようになりました。

とりあえず今のところこの設定でうまくいっているみたいです。

2007年09月21日

Eclipseのショートカットキー

CodeZine:Eclipseでマウスを使わずに効率よくプログラムを作成する(ショートカット, プラグイン, Eclipse)を読みました。

結構しらなかった。

  • [Alt]+[Shift]+N…新規作成メニュー
  • [Ctrl]+. [Ctrl]+,…次の出現箇所への移動?。出現箇所でチェックしたところに移動するみたい。
  • [Ctrl]+D…行削除
  • [Alt]+[Shift]+X、J…Javaプログラムの実行
  • [Ctrl]+[F6]、[Ctrl]+[F7]…エディタの移動。パースペクティブの移動。

あとたけぞうさんのトラックバックで知った

  • [Ctrl]+E…開いているエディタを選択。

あと最近何かのひょうしにしってしまった

  • [Ctrl]+Q…前の編集箇所に戻る。

2007年09月23日

Debianのパーティションを切り直す

現状

Debian(etch)のパーティションを切り直そうと思いました。現状は次の通りです。

Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda1              6728280   2923896   3462604  46% /
tmpfs                  1034424         0   1034424   0% /lib/init/rw
tmpfs                  1034424         0   1034424   0% /dev/shm
/dev/sda6            144434356  38561568  98535908  29% /home

/と/homeを分けていて、/のサイズが逼迫してきています。この二つのパーティションを分けるのはやめて、 /bootと/に分けることにします。

手順

次の手順で作業します。

  • メインHDDの内容をバックアップHDDにバックアップ。
  • バックアップHDDが起動するか確認。
  • メインHDDのパーティションを切り直し。
  • バックアップHDDの内容をメインHDDにリストア。

メインHDDの内容をバックアップHDDにバックアップ

S-ATAのバックアップHDDを接続します(/dev/sdb)。認識していることを確認したらfdiskでパーティションを切ります。バックアップ用のHDDなので古いパーティションの切り方でも、新しいパーティションの切り方でもどちらでやってもいいのですが、新しいやりかたで起動できることを確認したかったので、/と/bootを分けるように パーティションを分けました(/bootは100Mぐらい。/はswapをのぞくのこり全部)。

/boot/dev/sdb1
swap/dev/sdb5
/dev/sdb6

/dev/sdb1と/dev/sdb6はmkfs.ext3でフォーマットします。/dev/sdb5はmkswapします。次にバックアップ HDDをマウントします。

# mount /dev/sdb6 /mnt
# mount /dev/sdb1 /mnt/boot

データをコピーします。/で実行。*となってますが、実際は/proc、/sys、/mntは除外しておきます。 bashを使っているならばCTRL-X * でアスタリスクを展開しておいてからコマンドラインで編集すれば 楽だと思います。

# cp -a * /mnt

このままでは起動できないので、grubをバックアップHDDのMBRにコピーします。

# grub-install --root-directory=/mnt /dev/sdb

grub-installはわかりずらいです。--root-directoryはbootディレクトリが存在するディレクトリを指定します。 今回の場合バックアップHDDの/は/mntにマウントしさらに/bootは/mnt/bootにマウントしているので、/mntを 指定すればよいことになります。/dev/sdbはMBRをインストールするデバイス名です。

BIOSうんたら…のエラーが発生した場合は、/boot/grub/device.mapを確認します。足らなければ追加します。

(hd0)   /dev/sda
(hd1)   /dev/sdb

コマンド実行後、/mnt/boot/grub以下のgrub関係ファイルの日付を確認し、現在の日付かどうか確認しておきます。この日付が古かったりファイルがなかったりした場合、--root-directoryの指定が間違えている可能性が高いと思います。

最後にバックアップHDDのmenu.lst、fstabを変更し、新パーティションにあわせておきます。

バックアップHDDが起動するか確認

バックアップHDDと1台目のS-ATAディスクとして接続し起動してみます。うまく起動した場合は 次に進みます。

メインHDDのパーティションを切り直し

バックアップHDDを1台目、メインHDDを2台目として接続し、メインHDDのパーティションを切り直します。

バックアップHDDの内容をメインHDDにリストア

切り直した後は、先ほどのバックアップ手順と同じようにして(今度は逆に)バックアップデータをリストアします。 同じようにmountしてcp -a し、grub-installします。メインを1台目としてつなぎ直し再起動すれば完了です。

2007年09月24日

redMineインストール

概要

Debian(etch)サーバーにプロジェクト管理ツールredMineをインストールしました。アプリケーションサーバーとしてmongrelを、自動起動用としてmongrel_clusterを使いました。Apacheとの連携は設定していません。Debianパッケージではなくtarball&RubyGemsを使ってセットアップしました。

前準備

rubyのインストール

ruby-1.8.6を/usr/local/以下にソースからコンパイルしてインストールしました。

$ configure
$ su
# make install

/usr/local以下に最新のrubyがインストールされます。

RubyGemsのインストール

RubyForge: RubyGems: Project Infoからrubygems-0.9.4.tgzをダウンロードし展開します。

$ cd rubygems-0.9.4
$ su
# ruby setup.rb

railsのインストール

gemコマンドを使ってインストールします。

gem install rails --include-dependencies

redMineのインストール

準備ができたらいよいよredMineをセットアップします。

データベースの準備

redMineで使用するデータベースをあらかじめ作っておきます。データベースの文字コードはUTF8にしておきます(指定しない&&日本語を使用した場合セットアップの途中でエラーになりました)。

mysql> create database redminedb default character set UTF8;

ユーザーとパスワードも設定しておきます。

mysql> grant all privileges on redminedb.* to redmineuser@localhost identified by 'redminepasswd';

redMineの設定

RubyForge: Redmine: ファイルリストからredmine-0.5.1.tar.gzをダウンロードし展開します。

config/database.ymlを編集し、database、username、passwordなどを変更します。encodingはこれがないとエラーになりそうだったので追加しました。


production:
  adapter: mysql
  database: redminedb
  host: localhost
  username: redmineuser
  password: redminepasswd
  encoding: utf8 

次の順でコマンドを入力するとサーバーのポート3000でredMineが起動します。

$ rake db:migrate RAILS_ENV="production"
$ rake load_default_data RAILS_ENV="production"
$ ruby script/server -e production

自動起動設定

デフォルトのWEBrickを使った設定だと自動起動スクリプトを作るのがめんどくさいので、mongrelと、 mongrel_clusterを使って自動起動を設定します。まずインストールします。

# gems install mongrel
# gems install mongrel_cluster

これ以降はRubyist - バリケンのRuby日記 - mongrel_clusterを参考させていただき同様に設定しました。bbs→redmine の置き換えだけでほぼ同じです。

2007年09月25日

Trac日本語版をDebianにインストール

Trac日本語版をDebian(etch)にインストールしようといろいろやっていたのですがうまく動かない。 しかたないのでソースからインストールしようと思ってコンパイルしていたのですがこれはめんどくさすぎるので途中で断念(中途半端にパッケージとソースからコンパイルしたのが混在して管理しきれな…)。

しかし、最初にもどってよくしらべてみると、Trac日本語版以外はDebianのパッケージを使ってなんとかなりそうな 気がしてきました。すくなくともstandaloneだとみることができました。俺涙目。

2007年09月26日

redMine再び

やっぱTracかと思って設定していたのですが、やっぱプロジェクトごとにユーザー登録したりするのはめんどくさすぎるので、redMineを再評価することにしました。一応いまのところ使えそうです。ただしいくつかはまった点が ありました。

「リポジトリに、エントリ/リビジョンが存在しません」

プロジェクトのリポジトリを閲覧しようとすると、「リポジトリに、エントリ/リビジョンが存在しません」というエラーが表示されて、中身をみることができませんでした。ググってみてもファイル名に日本語が使われているとダメ的な情報しかなく途方にくれてしまいましたが、mongrelのログを見てピントきました。

'https://xxx.home.com:443' のサーバ証明書の認証中にエラーが発生しました:
 - 証明書は信頼のおける機関が発行したものではありません。証明書を手動で認証
   するためにフィンガープリントを用いてください!

自宅いんちきSSLサーバーのせいでだめだったみたいです、安直に リポジトリの指定をhttps://からfile:///に変更することで解決(?)しました。

diffビューの"リビジョン"が文字化け

ファイルのdiffを表示させてみると、先頭行の右端にあるかっこの中、リビジョン番号の前にある文字が文字化けしています。 ソースを調べてみると"svn diff"で表示させた結果をとりこんで整形し表示しているみたいです。ためしにsvnをサーバーで実行させてみると、"リビジョン"といカタカナが該当部分に表示されておりこのカタカナが文字化けして表示されているみたいです。とりあえずですが abstract_adapter.rbの先頭でrequire 'kconv'し、ファイル名部分をUTF-8に変更してから取り込むようにしてみました。

              @file_name = Kconv.toutf8($2)

Firefoxでみるとフォントが明朝体っぽいのに

これは完全に好みの問題ですが、Firefoxで表示させると見出し部分が明朝体っぽいフォントで表示されたので、cssをいじりました。h1などに適用されているfont-familyを次のように変更します。

font-family: verdana, arial, helvetica, Sans-Serif;

これでとりあえずしばらく使ってみたいと思います。

2007年09月27日

eclipseで関連づけの変更

eclipseの関連づけを変更しようと思って、[ウィンドウ]→[設定]で検索してみたのですが、いくら検索してもでてきません。と思っていたら、「関連」じゃなく、「*関連」で検索したらでた(;゚Д゚)。完全一致にする必要性がわからんw

eclipse.jpg

2007年10月01日

CF-W5A XP導入

XPダウングレード手順

ちょっと前からCF-W5A Vistaモデルを購入して使用しているのですが、XGAの解像度ではVistaがあまり使い勝手がよくない(タイトルバーが太い。クラシックモードは見た目が変などなど)&多少重いのが気にくわなかったのでXPにさくっとダウングレードしました。手順は次のT5のダウングレードを参考にし普通に成功しました。

基本はXPをクリーンインストールし対応するビジネス用モデルのXP版ドライバをダウンロードして入れていくだけなのですが、順番も気をつけたほうがいいみたいですね。でもCF-W5の場合DVDマルチドライブが使えるので、T5より若干楽だと思います。

Vistaに戻せるか

元のVistaに戻せるかどうかは気になったので、ハードディスク初期化後に一回リカバリDVDを使ってリカバリしてみたのですが、隠し領域を含めて完全に復活しました。問題なしです。

XP vs Vista

最初に少し書いたのですが、Vistaの不満点は以下の通りです。

  • Aero見た目はかっこいい(?)がタイトルバーが太く、XGAの解像度だと作業領域が狭くなってしまう。
  • かといってクラシック表示にすると、Win95並のクラシックぶりで唖然(2000/XPのクラシックより断然クラシックなので注意!!)
  • 隙間の多いメイリオがシステムフォントに設定されているせいでダイアログなどから文字がはみでてしまう アプリがある。
  • 重いような気がする(バックアップで動くサービスが増加?)。まぁ重いと言っても十分動くレベルだったのですが。
  • メモリ使用量も増加している。

高解像度のデスクトップではVistaもありかもしれませんが、XGAノートだとちょっとつらいです。XPにすることで以上の不満は全て解消できました。とりあえずVista SP1がでるまでこのままの体制で移行と思います。

2007年10月21日

CF-W5でUSBマウスとタッチパッドを動じに使う

CF-W5AでUSBマウスとタッチパッドが同時に使えないので調べてみたところ、「USBマウスヘルパー」 というソフトをアンインストールすることで同時に使うことができるようになりました。

XPをクリーンインストールしたときに余計なものまでインストールしていたみたいです。普通はマウスとタッチパッドが排他制御されていたほうがいいのでしょうか?

2007年10月29日

MS-IME(W-ZERO3)

今更ですがW-ZERO3でアプリケーションを起動したときのIMEの入力モードを制御できるみたいです。OperaのURL入力時に全角→半角入力モードに戻す必要がなくなるのは嬉しい。あと

さらにSHIFT押した後に、変換を押すことで、ひらがなモードから半角英数モードへ一発で移行できるみたいです。今までPQzIIの機能を使っていたのですが、これを使えば必要ないかも? そもそも全角カナ、半角カナ、全角英字大文字、全角英字小文字のモードが不要なのではっていう気がするのですが。最低限ここらへん最初からカスタマイズできるようにしてほしいです。

2007年10月30日

W-ZERO3機種変のみ不可能?

現在W-ZERO3無印をつなぎ放題(年間契約、A&B割)で契約して使っています。最近だいぶくたびれてきたので ウィルコムストアでW-VALUE SELECTの分割払いで、Advanced/ W-ZERO3[es] に機種変更しようとしてみたのですが、「*現在の料金プランは適用できません」となってしまい機種変更のみのボタンが押せない状態になっています。一応サポートに問い合わせてみたのですが激しくやる気をそがれてしまいました(;・∀・)。 もうちょっと詳細な説明がないとかなり不親切ですよね。

ひょっとして適用できない理由ってA&B割のせいなんでしょうか?それならそうといってくれれば機種変あきらめるのにw。

2007年10月31日

java.text.ParseException: Unparseable date

S2TestCaseを継承したテストクラスで、readXlsAllReplaceDbを使ってテストデータを挿入したところ、

java.text.ParseException: Unparseable date

が発生。ググってみると同様な報告がMLにてなされていた。

レスがついてないので華麗にスルーされたのかもしれない。とりあえずs2-framework-2.3.21だと発生する。 場所はDateConversionUtilの下記メソッド。

    public static Date toDate(String s, String pattern, Locale locale) {
        SimpleDateFormat sdf = getDateFormat(s, pattern, locale);
        try {
            return sdf.parse(s);
        } catch (ParseException ex) {
            throw new ParseRuntimeException(ex);
        }
    }

例外が発生する日付と発生しない日付があり、発生する日付は、日付文字列の最後のミリ秒部分に.0が ついていた。ミリ秒部分がついていたら例外が発生するのは分かるのだがなぜついたりつかなかったりするのかは不明。

対処方法もMLの投稿と全く同じで、日付セルの先頭にアポストロフィを挿入するというもの。釈然としないがみんなスルーしてるみたいなので私も華麗にスルーすることにしますた。

2007年11月02日

管理画面が重いです……

MovableType3.31-jaを使っているのですが、管理画面が重いです。再構築はもっと重いです。 エントリー100いってないのに…。WordPressとか検討すべきか?

About PC

ブログ「src's note」のカテゴリ「PC」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

次のカテゴリはその他です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。