JavaでString.format

.NETではString.Formatの引数の順番を{0}で指定できるがJavaでもできるみたいです。


public class Hoge{
public static void main(String[] args){
String hoge = null;
        //%数字$d 0埋め等もフォーマットを変えることでで指定できる。
hoge = String.format("%2$d %1$d %3$d", 1, 2, 3);
System.out.println(hoge);
}
}
出力結果

213
エス

VB.NETでmdbを最適化する。


Private Sub OptimizeMDB()
Dim jroEngin As JRO.JetEngine = Nothing
Const CompactPath As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}"
Const MDB_DIR As String = "C:\hoge"
Const MDB_NAME As String = "foo.mdb"

Try
'まず、バックアップファイルを作成
Dim originalMDB As String = MDB_DIR & "\" & MDB_NAME
Dim cloneMDB As String = originalMDB & ".Backup"
System.IO.File.Copy(originalMDB, cloneMDB, True)

'圧縮条件作成
jroEngin = New JRO.JetEngine
Dim beforeCompact As String = String.Format(CompactPath, originalMDB)
Dim afterConpact As String = String.Format(CompactPath, originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME))

'New_foo.mdbが存在するとエラーが出るのであるなら削除
If IO.File.Exists(originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME)) Then
IO.File.Delete(originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME))
End If

'圧縮 
jroEngin.CompactDatabase(beforeCompact, afterConpact)
jroEngin = Nothing

'圧縮ファイルに置き換える。
System.IO.File.Replace(originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME), originalMDB, originalMDB & ".bk")
Catch ex As Exception
Throw
End Try
End Sub

こんな感じジャン。

ホスト名の設定ミスでOracle APEXは起動しない。

サーバー環境をFedora13 On Xen3.0.3 On CentOS 5.5から、Fedora13 On KVM On Fedora14へ移行したときのトラブル。

Fedora13にOracle 10g XEをインストールして、クライアントからブラウザでアクセス(http://192.168.0.90:8080/apex)しても、APEXがみれない。


SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
これは既に打っている。SELinuxiptablesを確認しても、問題はない。ポートもsqlplusで確認済み。

これは一体どうしたもんか。
KVMのブリッジ接続を散々怪しんだが、他のゲストOSには通じるので問題なさそう。
試しにポートスキャンしてみると、1521はしっかり開いているのに8080が開いてない。

http://otn.oracle.co.jp/forum/thread.jspa?threadID=35005868&tstart=60
ここを見て何となく確認してみたら、


$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=oracle.hoge.piyo

$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.90 oracle oralce.hoge.piyo

まさか、このタイポが諸悪の根源とは!!orz

XenとPAE

ホストがCentOS5.5(32bit)だとメモリの認識量が4GBの壁にぶち当たったので、64bitのFedora14に変更した。

あれ?xen-kernelならPAEがサポートされてるなら32bitでも4GB突破できるんじゃない?
結論言うと、その通りだと思います。

Fedora14(64bit)をインストールした後、メモリ認識量を確認して愕然としました。


# cat /proc/meminfo
MemTotal: 3339660 kB
え?これって32bitの時と変わってないじゃない!どういうこっちゃ!!!!
不審に思いBIOSの確認。BIOS上ではちゃんと8GB認識されているようです。謎です。さては格安のASROCK製のマザボ(G31M-GS R2.0)がいかんのか!?と色々ggってみましたが、得にそう言う情報は落ちていなさそう。
もう一度BIOSをチェックしてみると、ありました。MemoryReMappingとかいう機能が。これがdisabledになっていたから認識してくれなかったのです。
ということは、おそらく32bitでもxen-kernelなら4GBは突破できると思います。(未確認ですが)

Oracle Database 10g Express Edition On Fedora 13

最小構成のFedora 13にOracle 10g XEのインストール方法。

まずoracle-xe-univ-10.2.0.1-1.0.i386.rpmをダウンロードする。米オラクルのアカウント登録が必要。
wgetだと取得できないのでCUIマシンならftp等で転送する。
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html


インストールに必要なパッケージを入れる。
# yum -y install libaio.i686
# yum -y install bc

oracle 10 xeのインストール
# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm

セットアップ
# /etc/rc.d/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration

                                                                                                • -

This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:(web管理画面のポート番号デフォルトは[8080])

Specify a port that will be used for the database listener [1521]:(データベースアクセスのポート番号デフォルトは[1521])

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:(オラクルのsystemユーザーのパスワード)
Confirm the password:(確認でもう一回入力)

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:(OS起動時にオラクルを起動させるか)

Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:設定したweb管理画面のポート番号/apex"

使用するFedoraユーザーの.bash_profileに追記
# su YourUser
$ vi ~/.bash_profile
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

反映させる
$ source ~/.bash_profile
$ sudo /etc/rc.d/init.d/oracle-xe restart
Shutting down Oracle Database 10g Express Edition Instance.
Stopping Oracle Net Listener.

Starting Oracle Net Listener.
Starting Oracle Database 10g Express Edition Instance.

ちょいと設定
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);を設定することで、127.0.0.1以外からのアクセスを許可する。
$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on 木 12月 2 00:40:50 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

ユーザー名を入力してください: system
パスワードを入力してください: (パスワード)


Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
に接続されました。
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

PL/SQLプロシージャが正常に完了しました。

SQL> exit
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Productionとの接続が切断されました。

これでhttp://127.0.0.1:設定したweb管理画面のポート番号/apexにアクセス。
(外部からならマシンのIPに変更してくださいね)

あとはweb上でUser追加するなり、データベース作ったり、とお好みに!
sqlplusコマンドが見つからない場合は.bash_profileの記述間違いです。(恥ずかしながら私はxeをexと打ち込んで散々ハマりました。)
どうしてもできない場合は、


$ . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
と打ち込んだ後にsqlplusコマンドを再トライしてみてください。

Fedora 13 on Xen

Dom-UにFedora 13をインストールする手順。

基本的な方法は前回とほぼ同じ。


/home/hogeに移動。ここにisoを置く。
# cd ~/hoge/
インストールイメージのダウンロード
# wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/i386/iso/Fedora-13-i386-DVD.iso
# ls
Fedora-13-i386-DVD.iso

インストール開始
#virt-install --nographics --prompt --paravirt
What is the name of your virtual machine? FedoraOS
How much RAM should be allocated (in megabytes)? 512
What would you like to use as the disk (path)? /hoge/foo/FedoraOS.img
How large would you like the disk (/hoge/foo/FedoraOS.img) to be (in gigabytes)? 20
What is the install location? /home/hoge/Fedora-13-i386-DVD.iso

インストーラーが立ち上がるので、言語の設定。
途中、Installation Methodとか言うのを問われるので、URLを選択し下記を入力。
http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/i386/os

後はCentOSと違い、ストレージのフォーマットをしたりと実機へのインストールに近い印象。
「テキストモードのインストールだと限定的な内容しかインストールされないけど、どうするよ?」
みたいな事を問われるので、お好みで。(自分はテキストモードでそのままインストール)

これにて完成。