概要

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 クラスの中で次のように利用します。

概要

CentOS 5 (x64) に maven2 を JPackage の rpm でインストールする手順について説明します。
ただし、こちらの Linux への Maven2 のインストール手順 による導入を推奨します。

JPackage 環境が必要な方は、以下の手順をご参考ください。

インストール前の注意事項

  • JDK は 1.6.0 Update 3 (x86) をインストールします。x64 版や最新の Update には対応しません。

インストール手順

/etc/yum.repos.d/CentOS-Base.repo 修正

[base] の項目に以下の行を追加します。
exclude=java-1.4.2-gcj-compat jakarta-commons-collections mx4j eclipse-ecj xml-commons-resolver

/etc/yum.repos.d/jpackage.repo 作成

まず /etc/yum.repos.d/jpackage.repo を作成。
[jpackage-5.0-free]
name=JPackage 5.0 free
baseurl=ftp://ftp.riken.jp/Linux/jpackage/5.0/generic/free
enabled=1

[jpackage-5.0-nonfree]
name=JPackage 5.0 nonfree
baseurl=ftp://ftp.riken.jp/Linux/jpackage/5.0/generic/non-free
enabled=1

jdk インストール

Oracle の Java ダウンロードページ から JDK 6u3 をダウンロードします。
Platform は Linux を選択すること。 Linux x64 を選択しないように注意。

jdk-6u3-linux-i586-rpm.bin をダウンロードし、インストールします。

実行例
lftpget 'http://cds.sun.com/is-bin/.../jdk-6u3-linux-i586-rpm.bin'
sh dk-6u3-linux-i586-rpm.bin

maven2 インストール

yum install maven2

maven2 のグローバル設定

サーバ共通の設定ファイルは /usr/share/maven2/conf/settings.xml にあります。

例えば、サーバ共通でリポジトリを持たせる場合は、次のように設定を行います。

  /var/maven2/repo

さらに、次のようにディレクトリを作成。
mkdir -p /var/maven2/repo
chmod 2777 /var/maven2/repo
これで mvn コマンドが利用できるようになります。

epel リポジトリ利用時の注意

Fedora の EPEL リポジトリを使用している場合は、次のように exclude 行を追加してください。
exclude=bea-stax bea-stax-api
SELECT
  relname,
  relkind,
  to_char(reltuples, '999,999,999') as rows,
  to_char(pg_relation_size(relname), '999,999,999,999') as bytes
FROM pg_class
WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname='public')
order by bytes desc;

参考

PostgreSQLでテーブルサイズを確認する by y-kawaz

概要

StringBuider で append() を使い1文字を追加するとき、
sb.append('\t');
のように char 型を追加するときと
sb.append("\t");
のように文字列型で追加するときに性能差を調査した。

結果

追加データ実行時間 [s]
'\t' 2.165
"\t" 7.788

1つの文字を追加する場合は、 char 型で追加したほうが文字列で追加するより 3.6 倍高速だった。

概要

PostgreSQL 上に作成したテーブルに対し、Java で時刻を timestamp 型ではなくミリ秒(long 値)のまま格納した場合、それを select で timestamp 型として取り出すには以下のように SQL を記述する。
SELECT
    (lastaccess / 1000) :: text :: interval + '1970-01-01' :: timestamp
FROM
    table1;
lastaccess は bigint 型のカラム。これを1000分の1して秒単位にし、 epoch 秒(グリニッジ標準時間1970年1月1日00:00:00からの経過秒数) に足している。

例: DB に格納された tomcat のセッションでサイズの大きいものを見つける

次のような SQL を実行する。
SELECT
	length(data) as len,
	session_id,
	(lastaccess / 1000) :: text :: interval + '1970-01-01' :: timestamp
FROM
	tomcat_sessions
ORDER BY len desc
LIMIT 20;

概要

Windows7で Eclipse 3.3 を動作したときに「パッケージ・エクスプローラ」ビューが自動的に横スクロールするのを停止する方法について説明。
32bit, 64 bit 環境の違いなく簡単に解決できるので便利。
多分 Vista でも同じ方法で解決する。

背景

Windows7(と Vista)でEclipseを利用時、イライラする現象がある。

画面左側の「パッケージ・エクスプローラ」ツリービューにおいて、深いパッケージ階層にアクセスしている時に、勝手に横スクロールする



十分な横幅の画面で作業していれば、このビューを横に広げてこの問題を回避できるが...。

この新たな機能は Windows Vista からツリービューに搭載されたものらしい。。。
せめて挙動を選択できるようにして欲しかった。

32bit ユーザなら Explorer Construction で!

Explorer Constructionというツールを使うことで、この横スクロールを無効化できるらしい。

ソフト起動後、「水平方向の自動スクロールを無効にする(A) 」にチェックを入れるだけ。
残念ながら 64bit 環境では動作しない。本当に残念...。

Windows 互換モードで実行することで 64bit でも解決!

しばらく探しまわって、やっと解決法を見つけた。 ⇒disable dynamic horizontal scrolling in Vista

内容は簡単。「Eclipse を Windows XP 互換モードで動かすだけ」でした。

Eclipse のショートカットを作成し、プロパティを表示。 「互換性」タブで「互換モードでこのプログラムを実行する」にチェックを入れ、 「Windows XP (Service Pack 3)」を選択するだけでよい。



この方法は Eclipse だけでなく他のアプリケーションでも適用できる。

概要

PostgreSQLの各プロセスがどのテーブルでどの種類のロックを行っているか調べる方法について説明。

さらに、そのプロセスを下記手順で終了することで、ロックしていた処理を強制的に中断できる。

手順

プロセスIDの確認

コマンドラインなどで、次のSQLを実行する。
SELECT l.pid, db.datname, c.relname, l.locktype, l.mode
FROM pg_locks l
        LEFT JOIN pg_class c ON l.relation=c.relfilenode
        LEFT JOIN pg_database db ON l.database = db.oid
ORDER BY l.pid;
pid がプロセスIDを意味する。

プロセスの停止

プロセスIDが分かったら、次のSQLでプロセスを停止できる。
SELECT pg_cancel_backend(プロセスID);

2011年2月

    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