2015年5月1日金曜日

Ubuntu on ESXi on VMWare Player on Win7

下記の構成で、ESXiの検証環境を作れたのでメモ

1. まず物理環境
OS:Windows 7
CPU: Xeon e5440

2. 1の上にVMWare Player 7.1.0 (Build 2496824)をインストール

3. 2の上にESXi 6.0.0 (249585)をインストール

4. 3の上にUbuntu 32bitをインストール。

なお、Xeon e5440はEPT(Extended Page Table)機能がないために、4として64ビットOSをインストールすることが出来ない。

参考文献


CPUの機能要件についてはこちらが詳しい
Having Difficulties Enabling Nested ESXi in vSphere 5.1?


VM Player上でESXiの動作が公式にサポートされているのかは見つけられなかったが、vmware.comドメインで運営されている下記でVMWare Playerに言及されているので、公式にサポートされているとみなしても良さそう。

Running Nested VMs

他にも個人運営のブログ等ではESXiをVMWare Player上で動かした際の情報がたくさん見つかる。古いバージョンの話なので、最新のバージョンの動作保証とするには少々微妙だが。

2015年4月16日木曜日

CFR(Counterfactual regret minimization)でdudo

CFR で三目並べに続いてdudoというdiceゲームをCFRで書いてみた。


GitHubのソースコード

dudoのゲームルールはこちらを参照。
三目並べと比較すると、dudoは非完全情報ゲームなので、CFRを適用するにはちょうどいい対象である。


CFRの評価がしたかったので、ゲームの実装は実際のdudoに比べて下記のように簡略化してある。


  • 1の目はワイルドカードとしてカウントしない。
  • プレイヤーの数は二人
  • 各プレイヤーが持つダイスの数は2つ。


200回ほどトレーニングをさせたCFRと、単純に相手のコールにひとつだけ上乗せをする戦略をとるBoarPlayerを戦わせたところ、大体75%ほどの勝率でCFRは勝利を収めた。


MSCFの理解に役立ったリンク


ファイルサーバを例に設定の仕方が細かく載っている。
Failover Cluster Step-by-Step Guide: Configuring a Two-Node File Server Failover Cluster

VMWare上のWindows 2008R2でMSFC

VMware Playerの上で動かしたwin2008R2同士でクラスタを組んだ。

どっちも同じvmdkファイルをコピーして使いまわしていたら、フェールオーバクラスタマネージャの構成の検証でネットワーク周りのエラーが出た。

こんな感じのエラー

ネットワークトポロジを読み込み中にエラーが発生しました 0x90070005

無視して進もうにも、クラスターの作成、のウィザードで「アクセスが拒否されました」とエラーメッセージが出て進めなかった。

いろいろ調べたところ、原因はvmdkファイルを使いまわしたことによってドメインSIDが重複していることがわかった。これは、クラスターのノードとなる2008R2のアプリケーションログを見ることによって発見した。

下記のページの手順に沿ってSIDを再度設定しなおしたところ、構成の検証が通るようになった。



ドメインSIDについてはこちらを参照

2015年3月24日火曜日

classloaderとstatic変数

classloaderとstatic変数の関係を調査してみた。

基本的にはclassloaderが異なると、static変数の値も異なるというのが仕様のようだ。
ただし、classloaderのhierarchyで同じparentを共有していると、static変数は共有される。

詳細はstackoverflowで。

Multiple instances of static variables


ちなみに下記の日本語ブログでも、static変数はクラスローダごとに別になるとの情報があるが、ブログに載ってるサンプルコードを実行したところ、2つのクラスローダでstatic変数は共有されているようだった。

[Java]別々の ClassLoader にロードされたクラスのフィールドは別になる


URLClassLoaderとPluginClassLoaderが階層的にどういう関係にあるのか調べてないけど、親をどっかで共有してたりするのだろうか。または、2006年の情報なのでjavaのバージョンが関係して足りすのだろうか。


2015年3月19日木曜日

pipでプロキシを設定する方法

環境変数に設定する。

%> export https_proxy="http://<proxy.server>:<port>"
%> pip install <xxxxx>


参考文献
http://stackoverflow.com/questions/19080352/how-to-get-pip-to-work-behind-a-proxy-server

 

RHELでCentOSのレポジトリを使用する方法まとめ

RHELは標準構成ではほとんどソフトウェアがインストールされていないので、いろいろ開発していると追加でインストールする必要が出てくる。 RHELにソフトウェアをインストールする方法は大きく2つ。
  1. rpmをどっかから持ってきてインストール
  2. yumを使う
ただし、yumを利用する場合RedHatの契約が必要になる。 正式運用環境ならともかく、単なる開発環境ではそんなもの用意してられないので、こういう時はCentOSのレポジトリにつないでインストールするといい。 ここではそのための設定をまとめる。

レポジトリの設定

下記のパスのファイルを新規作成し、下記の内容を記述する。
/etc/yum.repos.d/CentOS-Base.repo


プロキシの設定

プロキシを使っていない場合は、この設定は不要。
下記のファイルに
/etc/yum.conf

下記の設定を行う
proxy=<url>:<port>