会社ではMacを主に使用しているのですが、家ではメモリをたっぷり積んでリーズナブルなマシンがWindowsしかなく、仕方なく使っています。 今は、Docker for WindowsやWindows Subsystem for Linuxが登場し、だいぶ使えるようになってきたので、Windowsを使った場合のWeb開発環境を構築するにあたり、記録したい項目についてこのブログでシリーズとして書いていきます。
Debian StretchのBOXファイルを作成する
Debian Stretchが2017年6月17日にリリースされました。早速BOXファイルを作成してみましょう。
1. Virtual BoxにDebianをインストールする。
Virtual BOXにベースとなるDebian Stretchをインストールします。インストール時に注意することは以下となります。
2. 新しく作成した仮想マシンにログイン
新しく作成した仮想マシンにrootユーザでログインします。
3. sudo/curlをインストール
root@debian:~# apt install sudo curl
4. sudoの設定
vagrantユーザがsudoできるようにします。 まず、visudoコマンドを実行します。
root@debian:~# visudo
以下の行を追加して保存&終了します。
vagrant ALL=(ALL) NOPASSWD: ALL
4. sshキーのインストール
一旦ログアウトし、vagrant ユーザでログインし、以下のコマンドを実行します。 やっていることは、vagrantユーザの公開鍵をインストールしています。これをしないと、vagrantが仮想マシンにログインして仮想マシンの制御を行えません。
vagrant@debian:~$ mkdir .ssh vagrant@debian:~$ chmod 0700 ~/.ssh vagrant@debian:~$ curl -k -L -o ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub vagrant@debian:~$ chmod 0600 ~/.ssh/authorized_keys
5. VirtualBox の Guest Additions をインストール
VirtualBoxのGuest Addtionsをインストールします。
Virtual BoxのGuest Addtionsをマウント
Virtual Boxで、インストールした現在準備中の仮想マシンウインドウを選択し、「デバイス」メニューから、「Guest Additions CDイメージの挿入」を選択します。こうすると、Guest AddtionsのCDが選択された仮想マシンに挿入されます。
CDのマウント
以下のようにしてVirtual Box Guest AddtionsのCDをマウントします。
root@debian:~# mount -t iso9660 /dev/cdrom /mnt
Guest Addtionsをセットアップ
以下のコマンドでセットアップします。
root@debian:~# apt-get install build-essential module-assistant dkms root@debian:~# /mnt/VBoxLinuxAdditions.run
その他セットアップ
以上で必要最小限のセットアップはできました。お好みでboxファイルに含めておきたい追加のセットアップをしておきます。
OSを終了
セットアップが終了したらOSを終了します。
root@debian:~# shutdown -h now
BOXファイルの作成
ホストマシン上でBOXファイルを作成ます。 以下コマンドを実行します。 “Debian-stretch"の部分は、Virtual Boxの仮想マシン名です。
$ vagrant package --base Debian-stretch
作成したBOXファイルを登録
作成したBOXファイルをVagrantが使えるように登録します。
vagrant box add yakubouzu/debian-stretch package.box
追加後、一覧を表すると登録したBOXが表示されるはずです。
$ vagrant box list yakubouzu/debian-stretch (virtualbox, 0)
試しに起動
作ったBOXファイルを使ってvagrantで仮想マシンを作成してみます。
まずは設定ファイルであるVagrantfileの作成をvagrant init
コマンドで行います。
$ vagrant init yakubouzu/debian-stretch A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
作成できたら仮想マシンを起動。
$ vagrant up
無事エラーが表示されず起動すればOKです。
TP-Link AC1900無線LAN子機を購入しました
昔から気になっていた、TP-LinkのAC1900 デュアルバンド PCI-E 無線LAN子機 (Archer T9E)を購入してみました。
何故気になっていたかというと、MacOSX86のサイトtonymacosx86.comのByers Guideで、WiFIアダプターとして掲載されていたからです。 導入してみた結果、追加のドライバーなしでMacOS標準の無線LANとして使用することができ、なかなか良い感じです。 感度も悪くなく、速度も上がりました。 買うかどうか悩んでいたのですが、やはり買ってみて良かったと思ってます。
FxPro MetaTrader 5で書いたExpertAdvisorが取引しない
FxProのMetaTrader 5で、MQL5 Wizardで作成したExpertを実行しても、なぜかポジションを全くオープンしません。恐らくOrderSendを行うときにエラーになっていると思われるのですが、エラーメッセージが何も出ないのでお手上げです。
そこで、デバッグ機能を使用して調べてみました。
すると、CTrade::FillingCheckメソッドでFillModeが期待するモードになっていないためfalseを返しており、取引を行っていませんでした。FxProの場合、OrderTypeのFillModeを、ORDER_FILLING_IOCに指定しないとダメなようです。
解決策としては、MQL5のWizerdで作成されたソースのOnInit()関数に以下のコードを加えることにより、取引するようになりました。 取引するときのクラス、CExpertTradeクラスを生成し、FillingTypeをORDER_FILLING_IOCに設定してExtExpertオブジェクトに設定しています。 デフォルトのFillModeは、ORDER_TYPE_FOCのようです。
int OnInit() { //--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(INIT_FAILED); } //-- ここから追加 CExpertTrade *trade = new CExpertTrade; trade.SetTypeFilling(ORDER_FILLING_IOC); trade.SetAsyncMode(false); ExtExpert.InitTrade(Expert_MagicNumber, trade); //-- ここまで //--- Creating signal
FxProのMetaTrader 5はFillModeがちょっと違うようで、巷のMQL 5で書かれたExpertAdvisorがそのままでは動作しないようです。気を付けたほうがよいでしょう。