概要

TeraTerm のウィンドウタイトル部分に任意の文字列を表示する方法を説明。
TeraTerm で複数のログを監視しているなどの場合に「どのウィンドウがどのログを見ているかが分かりやすいといいなぁ」という時に便利な機能。

準備

まず最初に以下の作業を行う。

(1) TeraTerm 設定変更

TeraTerm の 「設定」メニュー => その他の設定 => 「制御シーケンス」タブ で「ウィンドウタイトルの変更要求を受け入れる」を「上書き」に変更する。

(2) bash デフォルト設定のタイトル制御を無効化

CentOS 6 の bash のデフォルト設定では、現在のディレクトリがウィンドウタイトルに設定されるようになっているので、これを無効化する。

~/.bashrc に以下の記述を追加する。

PROMPT_COMMAND=''
変更したら以下のコマンドで再読み込みを行うか、再ログインを行う。
. ~/.bashrc

(4) window_title.sh の作成

/usr/local/bin などパスが通っている場所に、window_title という名前のスクリプトを作成する。
cd /usr/local/bin
vi window_title
chmod 755 window_title
window_title スクリプトの内容は以下の通り。
#!/bin/sh

T=$1

printf "\033]0;$T\007"

使い方

window_title "テスト"

参考文献

概要

Tomcat 6 から Tomcat 7 にかけて、context.xml の Manager タグで指定する maxActiveSessions の扱いに変更があった。
Tomcat 6.x to Tomcat 7.x の Migiration Guide には記載されていないので注意。

Tomcat6 での動作

アクティブセッション数が maxActiveSessions を超えるとスワップが開始される。ただし、minIdleSwap 秒経過していないセッションは除く。

Tomcat7 での動作

maxActiveSessions を超えて request.getSession() を呼びだそうとすると TooManyActiveSessionsException 例外が発生する。

Apache Tomcat Configuration Reference 内の maxActiveSessions の記述を見比べてみると、 Tomcat6 と比べ、Tomcat7 では次の記述が追加された。
When the limit is reached, any attempt to create a new session (e.g. with HttpServletRequest.getSession() call) will fail with an IllegalStateException.

詳細

ManagerBase の createSession() で次のコードが追加された。
if ((maxActiveSessions >= 0) &&
        (getActiveSessions() >= maxActiveSessions)) {
    rejectedSessions++;
    throw new TooManyActiveSessionsException(
        sm.getString("managerBase.createSession.ise"),
        maxActiveSessions);
}

概要

Windows 7 でテキストエディターなどを大量に開いているとき、10数件あたりまではサムネイルが表示され、一定数を超えるとサムネイルが表示されないシンプルな表示モードになる。

扱っているファイルの場所を記憶しながら作業しているのに、ふいにサムネイルが表示されたりされなかったりすると作業しにくい!
ということで、サムネイルが表示されないようにする方法を調査。

設定手順

Windows Taskbar Thumbnail Customizer をダウンロードし、Windows Taskbar Thumbnail Customizer.exe を実行する。


そして、Max Thumbs を 16 から 1 に変更し、「Apply Settings」ボタンを押して完了。

概要

Eclipse 4.2 Juno になり、Eclipse アプリケーションは css でカスタマイズできるようになった。
設定画面から 一般 ⇒ 外観 とカテゴリを選ぶと、「テーマ」という項目があり、ここを変更した後、Eclipse を再起動すると反映される。

一方で、一般 ⇒ 外観 ⇒ 色とフォント カテゴリー内の「ビューおよびエディター・フォルダー」での設定は使用できなくなったらしい。

複数のワークスペースを切り替えて利用する場合、ワークスペースの配色を変えておくと、自分が今どのワークスペースで作業しているか、分かりやすくなる。
Eclispe 4 でのまっとうなやり方は Eclipse 4 CSS Styling- Tutorial に記述されているが、わざわざプラグインを作るのは面倒。以下に述べる手順で簡略的に実現できる。

Step 1 - ベースとなるテーマを選ぶ

一般 ⇒ 外観 の中にあるテーマ一覧の中から、自分がベースとしたいテーマを決めておく。
自分の場合は「クラシック」をベースとすることにした。

なお、テーマを変更したら Eclipse を再起動しないと、完全には反映されないので注意。

Step 2 - css ファイルのコピー

eclipse\plugins\org.eclipse.platform_4.2.0.v201206081400\css フォルダの中にテーマの css 一覧が置かれている。
ここから e4_classic_win7.css をコピーして green.css を作成した。

Step 3 - plugin.xml の修正

1つ上の階層にある plugin.xml をテキスト・エディターで開き、theme タグを追加する。
<theme
      basestylesheeturi="css/green.css"
      id="org.eclipse.e4.ui.css.theme.green"
      label="green">
</theme>

plguin.xml ファイルを修正したので、 eclipse.exe と同じフォルダ上にある eclipse.exe -clean.cmd を実行してキャッシュをクリアしておく。

設定画面の 一般 ⇒ 外観 でテーマ一覧を見ると「green」が増えているので、これを選択する。

Step 4 - Css Spy プラグインのインストール

  • Eclipse で「ヘルプ」メニュー ⇒ Eclipse マーケットプレース を選ぶ。
  • 検索窓で「css」と入力して Enter キーを押すと、CSS Spy が見つかるので、インストールする。
  • インストール完了したら、Eclipse を再起動する。

Step 5 - 配色の調査

  • Eclipse を再起動後、右上にある「クイック・アクセス」で「css」と入力する。
  • すると、「Open CSS Spy」が見つかるので、これを選択すると、CSS Spy ダイアログが起動する。
  • Widget を選択すると、それに該当するEclipse 上の部品が赤枠で囲まれるので、これで修正したい箇所を見つける。
    例えば、CSS Id が「org-eclipse-ui-main-toolbar」のコンポーネントを選択すると、ツールバーが赤枠で囲まれる。
  • 「CSS プロパティ」のところで「background-color」を変えると、ツールバーの背景色が変わるので、これで具体的に設定したい値を決定する。

Step 4 - css ファイル修正

先ほど作成した green.css ファイルを開き、例えば以下の記述を追加すると、ツールバーとステータスバーの背景色を緑がかった灰色になる。
.MTrimBar {
  background-color: #c9d9c9;
}
css ファイルを修正したら Eclipse を再起動すると反映される。

概要

Java7では、メソッド名やフィールド名で・(中黒, 中点; U+30FB)を利用できなくなった。 次のプログラムは Java6 では true を返すが、Java7 では false を返す。
System.out.println(Character.isJavaIdentifierPart('・'));

詳細

詳細は コチラ が詳しい。
UNICODE で、中黒が「連結句読点文字(Pc)」から「その他の句読点文字(Po)」変更され、その仕様に Java7 が対応したことが理由とのこと。

概要

OpenVZ (Virtuozzo) サーバ内で Java を起動する際、メモリに余裕があるにも関わらず、以下のエラーメッセージが出力されることがある。
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

原因

アプリケーションに割り当てられるプライベートメモリの上限に引っかかっている。

root で以下のコマンドを実行する。

# cat /proc/user_beancounters
Version: 2.5
    uid  resource                held          maxheld          barrier                limit      failcnt
  1838:  kmemsize            33351771         47149056        215981162            237579278            0
         lockedpages             9727             9727            10545                10545            0
         privvmpages           410414           892808          1048576              1048576          345
         shmpages               11162            11818           255834               255834            0
         dummy                      0                0                0                    0            0
         numproc                  115              198             5272                 5272            0
         physpages             216325           429549                0              1048576            0
         vmguarpages                0                0           524288               524288            0
         oomguarpages          100958           257789           426391  9223372036854775807            0
         numtcpsock                56               79             5272                 5272            0
         numflock                   3               15             1000                 1100            0
         numpty                     4                4              160                  160            0
         numsiginfo                 0               51             1024                 1024            0
         tcpsndbuf             629496          1823912          5039960              7199372            0
         tcprcvbuf            1024856          2261032         50399608             71993720            0
         othersockbuf          174424           321944          2519980              4679391            0
         dgramrcvbuf                0            26456         25199804             25199804            0
         numothersock             194              224             5272                 5272            0
         dcachesize          16874504         32772941         47171603             48586752            0
         numfile                 1404             1775            84352                84352            0
         dummy                      0                0                0                    0            0
         dummy                      0                0                0                    0            0
         dummy                      0                0                0                    0            0
         numiptent                 38               38              200                  400            0
ここで、privvmpages 行の failcnt 値が上昇していることが確認できる。
各パラメータの意味は 【OpenVZ】リソース パラメータ が詳しい。

[VPS] Virtuozzoのメモリはfreeやtopでなくてprivvmpagesを見るべし を参考に、使用できるメモリ量を確認すると、
beans=`cat /proc/user_beancounters | grep priv`
max=`echo $beans | awk '{ print $4;}'`
use=`echo $beans | awk '{ print $2;}'`
let "per=$use*100/$max"
let "mb=$use/256"
let "mmb=$max/256"
echo "privvmpages usage: $mb MB ($per% of $mmb)"
このサーバの場合は
privvmpages usage: 1606 MB (39% of 4096)
となった。

対策

その1: Java の使用メモリを減らす

Java の起動オプションで
java -Xmx1024m -Xms512m
の箇所を調整する。

その2: VPS の privvmpages 値を増やす

レンタル VPS サーバではなく自前で VPS サーバを立ち上げている場合、設定ファイルで privvmpages 値を増やすことができる。
詳細は OpenVZ VPS and Java Memory Error and how to fix it を参照。

参考文献

概要

MySQLで実行中のSQLを停止する方法について。

手順

プロセスIDの確認

コマンドラインで、次のコマンドを実行する。
mysqladmin processlist
Id がプロセスIDを意味する。

プロセスの停止

プロセスIDが分かったら、次のコマンドでプロセスを停止できる。
mysqladmin kill 13415

概要

Web アプリケーション開発時、Firefox で http://localhost/ にアクセスして表示を確認しようとする際に起こるトラブル。

Apache なり Tomcat が停止していると、Firefox は勝手に www. と .com を付加し、 www.localhost.com という FQDN でアクセスを試み、全く関係ないサイトを表示してしまう。

以下の方法でこの動作を停止できる。

設定方法

  1. ロケーションバーに about:config と入力。
  2. フィルタに browser.fixup.alternate.enabled と入力。
  3. browser.fixup.alternate.enabled をダブルクリックし、値を true から false に変更する。

参考文献

No more www.localhost.com

概要

前回 は Jpackage の rpm を使ってインストールする手順を解説しました。
今回は rpm を使わず最新版の Maven をインストールする手順について説明します。

rpm でインストールする場合と比べ、以下の利点があります。
  • インストールが簡単
  • 最新版の maven を導入できる
  • Java のバージョンに依存しない

導入手順

maven のインストール

Maven ダウンロードページ から tar.gz ファイルをダウンロードします。
以下では Maven 2.2.1 を例に挙げて手順を説明します。

apache-maven-2.2.1-bin.tar.gz をダウンロードし、/opt/apache-maven-2.2.1 に展開します。
lftpget http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-2.2.1-bin.tar.gz
tar zxf apache-maven-2.2.1-bin.tar.gz
mv apache-maven-2.2.1 /opt/

システム共通設定1 - プロファイル

/etc/profile.d/maven.sh を作成します。
PATH=$PATH:/opt/apache-maven-2.2.1/bin
export M2_HOME=/opt/apache-maven-2.2.1
/etc/profile.d/maven.csh を作成します。
set path=( $path /opt/apache-maven-2.2.1/bin )
setenv M2_HOME /opt/apache-maven-2.2.1
実行権限を設定します。
cd /etc/profile.d/
chmod 755 maven.*

システム共通設定1 - 共通リポジトリ

デフォルトでは、各ユーザの ~/.m2/repository にリポジトリが作成されます。
利用ユーザで共通の場所を利用するには /opt/apache-maven-2.2.1/conf/settings.xml を設定します。
mv settings.xml settings.xml.default
vi settings.xml
settings.xml を以下のように設定します。

  /var/maven2/repository

ディレクトリを作成します。
mkdir -p /var/maven2/repository
chmod 2777 /var/maven2/repository

概要

JPA(EntityManager) + Hibernate + Ehcache(二次キャッシュ) + Seasar2 の組み合わせで利用しているとき、二次キャッシュを利用せずにエンティティを生成 (insert) する方法について解説します。

想定するケース

  • Ehcache を使い、マルチキャストにより LAN 内で二次キャッシュを共有している。
  • あるエンティティは @Cache アノテーションにより、二次キャッシュを利用している。
  • 大量にそのエンティティを追加するときは二次キャッシュを利用したくない。
この場合、最も簡単かつ推奨する方法は
  • 二次キャッシュを利用しない設定で構築した Web サーバまたはコマンドライン・プログラムを用意し、そこで処理を実行する。
ですが、なんらかの理由で二次キャッシュを利用した web サーバ上で処理を実行しなければならない場合、以下の手順で実現できます。

設定手順

META-INF/persistence.xml に記述を追加

META-INF/persistence.xml で既存の persistenceUnit タグをコピーし、二次キャッシュを利用しない設定を行います。 具体的には、以下の修正を行います。
  • persistence-unit タグの name 属性を db1nocache_persistenceUnit のような名前に変更してください。
  • 利用するエンティティを明示的に class タグで宣言してください。中で別のエンティティを参照している場合、それらもすべて宣言する必要があります。
  • hibernate.cache.use_query_cache を false に設定。
  • hibernate.cache.use_second_level_cache を false に設定。

jpa_nocache.dicon を作成

jpa.dicon から jpa_nocache.dicon を呼び出す

jpa.dicon の components タグの後ろに、次の記述を追加します。
	

利用手順

Service クラスの中で次のように利用します。

2015年6月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30