JRockit JVMのガベージコレクションのまとめ
JRockit JVM の ガベージコレクションの仕組みを、公式のドキュメント読んでざっくりまとめてみました。
改めて調べてみると、HotSpot JVM とほとんど変わらないみたいです。既にご存知の方には釈迦に説法ですが、JVM のメモリ管理について初学者の方は、参考にしてみてください。
JRockit JVM が使用するメモリ領域
スタック領域や、パーマネント領域といった分け方もありますが、参照先では以下のような分け方で説明されています。
- ヒープメモリ
- 二世代のガベージコレクションが利用される場合、「ナーサリ(若い領域)」と「古い領域」の2つの領域(世代)に分割される *1
- ナーサリ(若い領域)
- 新しいオブジェクトの割り当てのために予約されている領域
- 古い領域
- 若いコレクションで昇格されたオブジェクトや、大規模オブジェクトが割り当てられる領域
- ヒープメモリ以外のメモリ領域
若いコレクションと、古いコレクション
二世代のガベージコレクションを利用する場合、ガベージコレクションには、「若いコレクション」と「古いコレクション」とがあります。
- 若いコレクション
- ナーサリに保持された古いオブジェクトを、古い領域に「昇格(移動)」する処理
- 古いコレクション(後述)や一世代のガベージコレクション(ナーサリのないヒープに対するガベージコレクション)よりも、格段に速くメモリ領域を開放できる
- ナーサリの「保持領域」
- ナーサリの一部に確保される領域
- ここに保管されたオブジェクトは、直後の若いコレクションで昇格されない。このことにより、オブジェクトが割り当てられた直後に昇格してしまうのを防止する
- 古いコレクション
- 古い領域のガベージコレクション
- 実際にメモリを開放する処理
小規模オブジェクトと大規模オブジェクト
JRockit JVM では、オブジェクト割り当て時に小規模オブジェクトと大規模オブジェクトが区別されます。
小模オブジェクトと大規模オブジェクト
- 通常 2 ~ 128 KB が区別の基準となる
- 小規模か大規模化は、おおよそ以下の項目により決定される
- JVMのバージョン
- ヒープサイズ
- ガベージコレクション
- プラットフォーム
小規模オブジェクト
- スレッドローカル領域(TLA)に割り当てられる
- 二世代のガベージコレクションの場合、TLA はナーサリから確保される
- 大規模オブジェクト
- TLA に収まらないオブジェクト
- 二世代のガベージコレクションの場合、古い領域に割り当てられる
- 大規模オブジェクトの割り当てには、複数の Java スレッド間の、オブジェクトキャッシュの同期を頻繁に行う必要がある *2
ガベージコレクション
二世代のガベージコレクションを利用している場合、ここでの記述内容は、古いコレクションに該当します。 マーク アンド スイープ モデルという、ガベージコレクションのアルゴリズムについての説明です。
- マーク アンド スイープ モデル
- JRockit JVM のガベージコレクションモデル
- マークフェーズとスイープフェーズからなる
- マークフェーズの動作
- 現在使用されているオブジェクトを識別し、マークを付ける
- 以下のようなオブジェクトが生存状態としてマークされる
- Java スレッド、ネイティブ ハンドルおよびその他のルートソースから到達可能なオブジェクト
- 上記のオブジェクトから到達可能なオブジェクト
- スイープフェーズの動作
- マークフェーズとスイープフェーズの組み合わせ方により、いくつかの方式がある
- モーストリ コンカレント マーク アンド スイープ モデル(コンカレント ガベージコレクション)
*4
- ガベージコレクション処理の大部分で、Java スレッドが実行され続ける。同期のために数回停止する必要はある
- パラレル マーク アンド スイープ モデル(パラレル ガベージコレクション)
- システム内の利用可能な CPU すべてを使用して、可能な限り高速でガベージコレクションを行う
- ガベージコレクション処理の間、すべての Java パレットは休止する
- モーストリ コンカレント マーク アンド スイープ モデル(コンカレント ガベージコレクション)
*4
モースト コンカレント マーク アンド スイープ における処理の詳細
モースト コンカレント マーク アンド スイープ では、マーク処理とスイープ処理において、それぞれ4つのフェーズが順に実行されます。
モーストリ コンカレント マークの4つのフェーズ
名前 | 動作 | Java スレッドの停止 |
---|---|---|
初期マーキング | 生存しているオブジェクトのルートセットを識別する | あり |
コンカレント マーキング | ルートセットからの参照にしたがって、生存している残りのオブジェクトを検索してマークする | なし |
プレクリーニング | コンカレント マーキング中のヒープの変更を識別し、生存しているオブジェクトを検索してマークする | なし |
最終マーキング | プレクリーニング中のヒープの変更を識別し、生存しているオブジェクトを検索してマークする | あり |
モーストリ コンカレント スイープ の4つのフェーズ
名前 | 動作 | Java スレッドの停止 |
---|---|---|
スイープ(1回目) | ヒープの半分をスイープする。この間、オブジェクトは残り半分のヒープ領域に割り当てられる | なし |
休止(1回目) | 残り半分に切り替えるための休止 | N/A |
スイープ(2回目) | 残り半分のヒープをスイープする。この間、オブジェクトは残り半分のヒープ領域に割り当てられる | なし |
休止(2回目) | 同期、および統計の記録のための休止 | N/A |
世代別ガベージコレクション(若いコレクション)
二世代のガベージコレクションを利用している場合、ヒープメモリ上にナーサリが存在します。ナーサリの保持領域外のオブジェクトを古い領域に昇格するのが、若いコレクションです。
若いコレクションの間、Java スレッドは停止します。
Windows + Cygwin + Vagrant で WebLogic Server を動かす ~ java、WebLogic インストール編
前回の記事に引き続き、VirtualBox 上のゲストOSに、java と WegLogic サーバーをインストールしていきます。
本記事は、Vagrant を使ってゲストOSを構成する記事の続きですが、手順自体は Vagrant に依存するものではありません。Linux に WebLogic サーバーをインストールする際には、広く参考にしていただけると思います。
java のインストール
1. java のダウンロード
Oracle のダウンロードサイトより、最新のJDKを取得します。*1
Linux x64 用の tar.gz アーカイブをダウンロードして下さい(本記事の執筆時点では、jdk-8u60-linux-x64.tar.gz が最新です。以降の手順は、これをダウンロードしたものとして記します)。
2. java の tar.gz アーカイブをゲストマシンに転送
ダウンロードした tar.gz アーカイブを Cygwin のホームディレクトリに配置しておき、以下のコマンドを実行します。
$ scp ~/jdk-8u60-linux-x64.gz wls_ol:~/
このコマンドで、wls_ol の ssh 接続設定を使って、ホームディレクトリ直下にファイルを転送します。
以下のようにコンソールに出力されたら、転送完了です。
jdk-8u60-linux-x64.gz 100% 173MB 43.2MB/s 00:04
3. java のアーカイブを展開して、PATH を設定
以下のコマンドを順次実行し、java のアーカイブを展開します。
$ ssh wls_ol
$ mkdir ~/java
$ mv ~/jdk-8u60-linux-x64.gz ~/java
$ tar zxvf ~/java/jdk-8u60-linux-x64.gz -C ~/java
続いて、.bashrc に java コマンドへの PATH を通す記述を追加し、再読み込みします。
$ echo export JAVA_HOME=~/java/jdk1.8.0_60 >> ~/.bashrc
$ echo export PATH=\$PATH:\$JAVA_HOME/bin >> ~/.bashrc
$ source ~/.bashrc
java コマンドの動作を確認しておきます。
以下のコマンドで java のバージョン情報が表示されれはOK。
$ java -version
WebLogic サーバーのインストール
1. WebLogic サーバーのダウンロード
java と同じく、Oracle のダウンロードサイトより、最新の開発者用zipアーカイブを取得します(本記事の執筆時点では、wls1213_dev.zip が最新です。以降の手順は、これをダウンロードしたものとして記します)。
2. WebLogic サーバーの zip アーカイブをゲストマシンに転送
ダウンロードした zip アーカイブを Cygwin のホームディレクトリに配置しておき、以下のコマンドを実行します。
$ scp ~/wls1213_dev.zip wls_ol:~/
3. unzip のインストール
今回使用している Oracle Linux には、unzip が入っていないので、yum で取得します。 以下のコマンドを実行してください。
$ ssh wls_ol
$ sudo yum install unzip
途中、インストールしてもOKか確認するメッセージが表示されますので、y + [Enter] を入力します。
以下のようにコンソールに出力されればOKです。
Resolving Dependencies
--> Running transaction check
…
Installing : unzip-6.0-15.el7.x86_64 1/1
Verifying : unzip-6.0-15.el7.x86_64 1/1
Installed:
unzip.x86_64 0:6.0-15.el7
Complete!
4. zip アーカイブを展開して、PATHを設定
以下のコマンドを順次実行し、WebLogic サーバーの zip アーカイブを展開します。
$ ssh wls_ol
$ mkdir ~/wls
$ mv ~/wls1213_dev.zip ~/wls
$ unzip wls1213_dev.zip -d ~/wls
続いて、環境変数に MW_HOME(WebLogic サーバーのホーム)を追加します。.bashrc に環境変数を設定する追加し、再読み込みします。
$ echo export MW_HOME=~/wls/wls12130 >> ~/.bashrc
$ source ~/.bashrc
5. WebLogic Server のインストール
いよいよ WebLogic Server を実際にインストールしていきます。
$ cd $MW_HOME
$ source $MW_HOME/configure.sh
…
Do you want to configure a new domain? [y/n]? n
ドメインはこの後で作成するので、ドメインを作成するかどうか聞かれたら、n + [Enter] とします。
続いて WebLogic サーバー用の環境設定を行います。
$ source $MW_HOME/wlserver/server/bin/setWLSEnv.sh
…
Your environment has been set.
最後に、ドメインの作成です。
$ mkdir ~/domain
$ cd ~/domain
$ java $JAVA_OPTIONS -Xmx1024m -XX:MaxPermSize=256m weblogic.Server
…
No config.xml was found.
Would you like the server to create a default configuration and boot? (y/n): y
config.xml を使用せずにデフォルトの構成でドメインを作成するので、y + [Enter] とします。
Enter username to boot WebLogic server:weblogic
Enter password to boot WebLogic server:
For confirmation, please re-enter password required to boot WebLogic server:
WebLogic サーバーの管理ユーザーのユーザー名、パスワードを聞かれるので、設定したい値を入力します。
以下のようにコンソールに出力されたら、無事にインストールが完了し、WebLogic サーバーの管理コンソールが起動しています。
<07/09/2015 2:10:36 PM AEST> <Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.>
<07/09/2015 2:10:36 PM AEST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.>
"http://localhost:8001/console" にアクセスすると、管理コンソールのログイン画面が表示されるはずです。
前回の記事で、Vagrant 上にゲストOSを構成するときに 8001 -> 7001 のポートフォワードの設定をしていますので、左記のURLにアクセスすると、ゲストOSの7001番ポートにリクエストを投げていることになります。
6. Weblogic Serverの停止/起動
WebLogic Server を停止するには、WebLogic サーバーを起動させているコンソールで、[Ctrl] + c を入力します。 また、起動するには以下のコマンドを実行します。
$ ~/domain/startWebLogic.sh
VirtualBox 上のゲストOSに java と WegLogic サーバーをインストールする手順は、以上です。
*1:wgetコマンドで、ゲストOS上に直接ダウンロードする方法もあります: Linuxでjdkをwgetする方法
Windows + Cygwin + Vagrant で WebLogic Server を動かす ~ ゲストOSセットアップ編
Window 上に Vagrant のゲストOSを立てて、WebLogic Server の開発環境を作成しようとしています。2回の記事に分けて手順を紹介する予定で、今回はVagrant でゲストOSをセットアップするまでの手順をまとめてみました。
前提
- ホストマシン
- vagrant の box ファイル
- 今回は、terrywang さんが公開している Oracle Linux 7 の Base Vox を利用させていただきます
Cygwin のインストール時の注意
ssh と scp を利用するので、Cygwin のインストール時に、インストールウィザードの [Select Package] で、openssh の Bin を選択しておく必要があります。
ゲストOSのセットアップ手順
1. ゲストOSの起動まで
Cygwin を起動し、以下のコマンドを順次実行します。
$ vagrant box add oraclelinux-7.1-x86_64 http://cloud.terry.im/vagrant/oraclelinux-7-x86_64.box
$ mkdir vagrant
$ cd vagrant
カレントディレクトリに "Vagrantfile" という名前のファイルを作成し、以下の内容を記述します。
Vagrant.configure(2) do |config| # VM settings config.vm.define :wls_ol, primary: true do |wls_ol| wls_ol.vm.box = "oraclelinux-7.1-x86_64" wls_ol.vm.network "forwarded_port", guest: 7001, host: 8001 end # VM provider settings config.vm.provider "virtualbox" do |vb| vb.name = "wls_ol" vb.cpus = "2" vb.memory = "2048" end end
後々インストールする WebLogic サーバーの管理画面は、ゲストOSの7001番ポートで動作しますので、ポートフォワーディングの設定で 8001 -> 7001 となるようにしています。
続いて先ほどまで操作していた Cygwin ターミナルで、以下のコマンドを実行します。
$ vagrant up wls_ol
コンソールに以下のようなメッセージが表示され、仮想マシンが起動します。
Bringing machine 'wls_ol' up with 'virtualbox' provider...
==> wls_ol: Importing base box 'oraclelinux-7.1-x86_64'...
==> wls_ol: Matching MAC address for NAT networking...
==> wls_ol: Setting the name of the VM: wls_ol
==> wls_ol: Clearing any previously set network interfaces...
==> wls_ol: Preparing network interfaces based on configuration...
wls_ol: Adapter 1: nat
==> wls_ol: Forwarding ports...
wls_ol: 7001 => 8001 (adapter 1)
wls_ol: 22 => 2222 (adapter 1)
==> wls_ol: Running 'pre-boot' VM customizations...
==> wls_ol: Booting VM...
==> wls_ol: Waiting for machine to boot. This may take a few minutes...
wls_ol: SSH address: 127.0.0.1:2222
wls_ol: SSH username: vagrant
wls_ol: SSH auth method: private key
wls_ol: Warning: Connection timeout. Retrying...
wls_ol:
wls_ol: Vagrant insecure key detected. Vagrant will automatically replace
wls_ol: this with a newly generated keypair for better security.
wls_ol:
wls_ol: Inserting generated public key within guest...
wls_ol: Removing insecure key from the guest if it's present...
wls_ol: Key inserted! Disconnecting and reconnecting using new SSH key...
==> wls_ol: Machine booted and ready!
==> wls_ol: Checking for guest additions in VM...
wls_ol: The guest additions on this VM do not match the installed version of
wls_ol: VirtualBox! In most cases this is fine, but in rare cases it can
wls_ol: prevent things such as shared folders from working properly. If you see
wls_ol: shared folder errors, please make sure the guest additions within the
wls_ol: virtual machine match the version of VirtualBox you have installed on
wls_ol: your host and reload your VM.
wls_ol:
wls_ol: Guest Additions Version: 4.3.24
wls_ol: VirtualBox Version: 5.0
==> wls_ol: Mounting shared folders...
wls_ol: /vagrant => C:/cygwin64/home/user/vagrant
ここで、ssh でゲストOSに接続してみます。vagrant で ssh 接続するには、以下のコマンドを実行します。
$ vagrant ssh wls_ol
vagrant up で仮想マシンを起動した時点で、ssh 接続の構成が行われていますので、上記のコマンドだけで接続が可能です。
2. SSH 接続の設定
今後の作業では、Vagrant のコマンドを使わずに ssh 接続できた方が便利ですので、通常の ssh 接続をするための手順を行います。 exit で現在の ssh 接続から抜けてから、以下のコマンドを実行します。
$ vagrant ssh-config >> ~/.ssh/config
$ vi ~/.ssh/config
~/.ssh/config に、仮想マシン wls_ol に接続するための設定情報が出力されていると思います。これだけで、通常の ssh 接続で "vagrant" ユーザーで仮想マシンにつなぐことができます。
$ ssh wls_ol
例えば "root" ユーザーなどで接続したい場合は、"vagrant" ユーザーの設定を同ファイルの末尾にコピーして、必要な部分を "root" ユーザー用に変更します。 以下、記述例です。
Host wls_ol
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile C:/cygwin64/home/user/vagrant/.vagrant/machines/wls_ol/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
Host wls_ol-root
HostName 127.0.0.1
User root
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication yes
IdentityFile C:/cygwin64/home/user/vagrant/.vagrant/machines/wls_ol/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
変更を保存して、以下のコマンドを実行すると、"root" ユーザーで仮想マシンに接続する事ができます。"root" ユーザーのパスワードは "vagrant" なので、パスワードの入力を求められたら、それを入力してください。
$ ssh wls_ol-root
参考までに、セットアップ後のスクリーンショットを。
まずは、Cygwin の画面
続いて、VirtualBoxの管理画面
ゲストOSのセットアップは以上です。次回の記事では、ゲストOSに java と WebLogic サーバーのインストールを行っていきます。
Developer Cloud Serviceのビルド成果物をMavenリポジトリに公開する
Developer Cloud Service(以下、DevCS)は、Gitリポジトリ、バグトラッカーなどの開発ツール群を一括で提供する、Oracle社のクラウドサービスです。
DevCSでは、HudsonベースのCI(継続的インテグレーション)ツールでMavenビルドをおこない、さらに成果物をDevCS上のMavenリポジトリに公開することができます。
今回は、DevCSのMavenリポジトリを使って、以下の機能を実現する方法をご紹介します。
1. ビルド成果物をDevCSのMavenリポジトリに公開する
1-1. MavenリポジトリのURLを確認する
DevCSでビルドしたいプロジェクトのHomeにアクセスすると、画面右に、Gitリポジトリ、MavenリポジトリのURLが表示されています。 ここでMavenリポジトリの [HTTP] を選択し、URLをテキストエディタ等にコピーしておきます。
1ー2. pom.xmlにデプロイ用の設定を記述する
pom.xmlに記述する内容は、通常の記述と同様です。 jackrabbitプラグインと、デプロイ先リポジトリの情報を記述します。
distributionManagement > repository > urlのタグには、1-1で控えておいたリポジトリのURLを記述します。
以下、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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.charleysdiary</groupId> <artifactId>HelloWorld</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- Build Settings --> <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav-jackrabbit</artifactId> </extension> </extensions> </build> <!-- Environment Settings --> <distributionManagement> <repository> <id>com.charleysdiary.HelloWorld</id> <name>Sample HelloWorld Project</name> <url>dav:https://developer.us2.oraclecloud.com/profile/developer00000-sampledomain00000/s/sampledomain-sampledomain00000_HelloWorld/maven/</url> </repository> </distributionManagement> </project>
この例では、ビルド環境と同じDevCSプロジェクトのMavenリポジトリに、成果物を公開します。このような場合、Mavenリポジトリにアクセスする際の認証情報等の設定は不要です。
pom.xmlの修正だけで作業完了です。
1-3. Cyberduckで確認してみる
Cyberduck(WebDAVクライアント)で、公開された成果物を確認してみます*1。
まずは、Cyberduckをダウンロード&インストールします。
続いて、Cyberduckを起動し、[新規接続]をクリック
[新規接続]ダイアログで、以下の画像のように入力します。 [Server]は1-1で控えておいたURLのホスト名、[Path]は同URLのPath部分、ユーザー名とパスワードにはDevCSにログインするときのものを入力します。
[Connect]をクリックすると、Mavenリポジトリにデプロイされた成果物を確認することができます。
2. 1. で公開された成果物に依存するMavenプロジェクトを作成する
2-1. pom.xmlに依存関係を記述する
依存元のプロジェクトのpom.xmlで、repositoryとdependencyの配下に、依存先のリポジトリとモジュールの情報を記述します。
以下、記述例です。
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.charleysdiary</groupId> <artifactId>HelloWorldClient</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- Environment Settings --> <dependencies> <dependency> <groupId>com.charleysdiary</groupId> <artifactId>HelloWorld</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>com.charleysdiary.HelloWorld</id> <name>Sample HelloWorld Project</name> <url>https://developer.us2.oraclecloud.com/profile/developer00000-sampledomain00000/s/sampledomain-sampledomain00000_HelloWorld/maven/</url> </repository> </repositories>
依存先のプロジェクトが、DevCSの同一アイデンティティ・ドメイン上のプロジェクトの場合、必要な作業はこれだけです。
2-2. settings.xmlに参照先リポジトリの認証情報を記述する
依存元のプロジェクトが、依存先リポジトリのアイデンティティドメイン外にある場合(e.g. ローカルでビルドするとき)、依存先リポジトリにアクセスするための認証情報を、settings.xmlに記述します。
username、passwordには、アイデンティティドメインにログインするときに使用する値を設定します。
以下、記述例です。
<?xml version="1.0" encoding="UTF-8"?> <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <servers> <server> <id>com.charleysdiary.HelloWorld</id> <username>sample@charleysdiary.com</username> <password>password</password> </server> </servers> </settings>
OracleのID管理系製品群を整理してみた
Oracle社のID管理製品について学ぶ必要が出てきたのですが、似たような名前で複数の製品が出ているので、それぞれの役割の違いを整理してみました。
ここに上げた以外にも多くの製品があるようですが、代表的と思われるものに絞ったつもりです。
OUD
OAM
OIF
- Oracle Identity Federation
- パートナー間のフェデレーション機能を提供
- Oracle Access Managementプラットフォームの共有サービス
→Oracleのサイトより。よく意味が分からないが、OAMと連携してSAMLの構成をつくるのが、やり易いということっぽい
Webgate
- OAMを使ってエージェント型のSSOを構成するときに使用する、SSOエージェント
以上。
Oracle Stream Explorer サーバーのインストール手順
Oracle Stream Explorerは、Oracle社が提供しているCEP(Complex Event Processing)製品です。
今回は、Windows 環境に、Stream Explorer サーバーをインストールする手順を紹介します。
インストール手順
0. JDKをインストールする
JDKをおなじみの手順でインストールしますが、インストール先のディレクトリのパスにスペースが含まれると、パッチ適用でエラーになってしまいます^^;
標準のインストール先ですと"Program Files"フォルダにスペースが入ってしまうので、インストール先を変更して、入れておく必要があります。
本記事では、JDKのインストール先を"%JAVA_HOME%"と記述します。
1. インストーラとパッチをダウンロードする
ダウンロードサイトはこちら
- Stream Explorer 12.1.3 Runtime(本体)
- ofm_sx_generic_12.1.3.0.1_disk1_1of2.zip
- Stream Explorer 12.1.3 User Experience(パッチ)
- ofm_sx_generic_12.1.3.0.1_disk1_2of2.zip
ダウンロードしたzipファイルは解凍しておきます。以下、本体、パッチのzipを解凍してできたフォルダのパスを、それぞれ"%INSTALLER_HOME%"、"%PTACH_HOME%"と記します。
2. 本体をインストールする
2-1. 管理者権限でコマンドプロンプトを起動する
[スタート] > [アクセサリ] の順に選択し、[コマンド プロンプト] を右クリックします。展開したコンテキストメニューで、[管理者として実行] を選択してください。
2-2. インストールを実行する
2-1. で起動したコマンドプロンプトで、以下のコマンドを実行します。
> %JAVA_HOME%\bin\java.exe -jar %INSTALLER_HOME%\fmw_12.1.3.0.0_oep.jar
あとは、インストールウィザートにしたがって、インストールを進めてください。
途中、ORACLE_HOME(インストール先となるフォルダ)のパスを聞かれますが、以降このパスを "%ORACLE_HOME%"と記述します。
3. パッチを適用する
3-1. 管理者権限でコマンドプロンプトを起動する
2-1. と手順は同じです。
3-2. インストールを実行する
3-1. で起動したコマンドプロンプトで、以下のコマンドを順次実行します。
> cd %PATCH_HOME%\ofm_sx_generic_12.1.3.0.1_disk1_2of2\20636710
> %ORACLE_HOME%\OPatch\opatch.bat apply -jre %JAVA_HOME%\jre
以下のようなメッセージが表示されるので、"y"をタイプしてリターン
ローカル・システムにパッチを適用する準備ができましたか。[y|n]
最後に"OPatch succeeded."と表示されれば、パッチ適用は完了です。
Oracle Stream Explorer サーバーのインストール手順は以上です。
ロジクールのマウスM510のチルトボタンに、ウィンドウスナップを割り当てる
ロジクールのマウスは、SetPointというアプリケーションにより、各ボタンの機能をカスタマイズすることができます*1
しかし、中にはSerPointでも割り当てられない機能があって、例えばウィンドウを画面の右/左半分に寄せる、ウィンドウスナップが該当します。
本記事では、SetPoint拡張メモ:拡張手順の概略を参考にさせていただきながら、ウィンドウスナップをマウスのボタンに割り当てられるようにSetPointをカスタマイズする手順を紹介します。
マウスからウィンドウスナップをできるようにしておくと、アプリケーションを起動してウィンドウを配置を調整する一連の操作がシームレスにできるので、とても便利ですよ。
手順
筆者は、M510というチルト機能のあるマウスを使っています。M510の左右チルトに、左右のウィンドウスナップを割り当ててみます。
1. M510のデバイスファイルを特定する
SetPoint拡張メモ:拡張手順の概略の、1. 及び2. の手順にしたがってデバイスファイルのファイルパスを特定します。
M510の場合、デバイスファイルの絶対パスは"C:\ProgramData\Logishrd\SetPointP\Devices\PointingDevice\10000A9\10000A9.xml"となります。
2. デバイスファイルを編集する
デバイスファイルでは、マウスの各ボタンで割り当て可能な機能のセット(HandlerSetとHandlerSetGroup)が指定されています。
この記述により、SetPointの画面でマウスのボタンを選んだときに表示される選択肢が決まります。
ここをうまく編集して、SetPointで左右チルトを選んだときに、ウィンドウスナップが指定できるようにすればよいわけです。
デバイスファイルを開いたら、Button Number="7"、Button Number="8"となっているタグを見つけてください。それぞれ左チルトボタン、右チルトボタンに対応しています。このタグの配下の、TriggerState Nameタグの属性を以下のように変更します。
ボタン | 属性 | 変更前 | 変更後 |
---|---|---|---|
左チルト | HandlerSet | HorzScrollLeftSet | SnapLeft |
↑ | HandlerSetGroup | ScrollLeftFloresGroup | SmrkndSnapLeft |
右チルト | HandlerSet | HorzScrollRightSet | SnapRight |
↑ | HandlerSetGroup | ScrollRightFloresGroup | SmrkndSnapRight |
変更後のデバイスファイル(抜粋)は、以下の様な感じです。
<!-- <Button Number="7" Name="6"> <Trigger Class="ButtonPress"> <PARAM Button="7" Type="Tilt" /> <TriggerState Name="ButtonDownUp" HandlerSet="HorzScrollLeftSet" HandlerSetGroup="ScrollLeftFloresGroup"/> </Trigger> </Button> --> <Button Number="7" Name="6"> <Trigger Class="ButtonPress"> <PARAM Button="7" Type="Tilt" /> <TriggerState Name="ButtonDownUp" HandlerSet="SnapLeft" HandlerSetGroup="SmrkndSnapLeft"/> </Trigger> </Button> <!-- <Button Number="8" Name="7"> <Trigger Class="ButtonPress"> <PARAM Button="8" Type="Tilt" /> <TriggerState Name="ButtonDownUp" HandlerSet="HorzScrollRightSet" HandlerSetGroup="ScrollRightFloresGroup"/> </Trigger> </Button> --> <Button Number="8" Name="7"> <Trigger Class="ButtonPress"> <PARAM Button="8" Type="Tilt" /> <TriggerState Name="ButtonDownUp" HandlerSet="SnapRight" HandlerSetGroup="SmrkndSnapRight"/> </Trigger> </Button>
3. SetPointで、ウィンドウスナップを割り当てる
デバイスファイルの編集ができたら、SetPointを再起動してください。
タスクトレイに常駐しているSetPointのアイコンをクリックすると、「終了」を選択することができます。その後、スタートメニューから「マウスおよびキーボードの設定」を探して起動します。
正しくカスタマイズされていると、以下の様な画面となります。左右チルトに、ウィンドウスナップが割り当てられるようになっています。
上の画像を見るとお気づきになるかと思いますが、本記事の方法では、ウィンドウスナップ以外の機能を選択することはできなくなります。他の機能を含めて選択できるようにするには、SetPoint拡張メモ:拡張手順の概略と、他一連の記事を参照し、SetPointの各種設定ファイルを使いこなしてください!
最後に、改めて、元記事を作成してくださった@did2memo様に感謝いたします。
ウィンドウスナップをM510のチルトボタンに割り当てる手順は、以上です。
*1:最近リリースされたいくつかのマウスは、Logicool Optionsという新しいアプリケーションに変わっているため、本記事で紹介する手順は利用できません