2019年6月30日日曜日

ubuntuマシンにapacheでサーバーを立てる方法

概要

ubuntuマシンにapacheでサーバーを立てる方法をメモします。

用語

・Ubuntu:LinuxのOS。
・Apache:世界中でもっとも多く使われているWebサーバソフトウェア

事前準備(前提とする環境)

・Ubuntu16.04

手順

apache2をインストール

apache2をインストールします。aptでインストールするのみです。

$ sudo apt updete
$ sudo apt upgrade
$ sudo apt-get install apache2

apache Webサーバーへのアクセス

あとはアクセスするのみです。以下を入力すればアクセス可能です。

http:///80

例)私の開発環境の場合
http://192.168.33.10/80

htmlファイルの場所

htmlファイル本体は以下にあるので、必要なファイルはここに置いたらokです。

  /var/www/html/

2019年6月27日木曜日

PostgreSQLのコマンドメモ

(Linux)ユーザ変更方法

・インストールが完了するとユーザ「postgres(=PostgreSQLのスーパーユーザ)」が自動(勝手に?)追加される
※postgresにユーザ変更する場合はsudoあり、postgresから元に戻る時はsudo無し

$ sudo su - postgres
$ su - USER

PostgreSQL接続

$ psql -h [hostname] -U [username] -d [databasename]

PostgreSQL切断

postgres=# \q

バージョン確認方法

(Linux上から)
$ psql —version
(PostgreSQLから)
postgres=# select version(); 

DB一覧の確認

postgres=# \l

DB作成

ownerの指定は省略可能。省略した場合はownerはpostgresとなる。

postgres=# create database [sample] owner [user];

DB変更

postgres=# \connect [databasenanme];

DB削除

postgres=# \drop database [databasenanme];

テーブル一覧の確認

postgres=# \dt

テーブル作成

postgres=# CREATE TABLE STORE (
postgres=#     store_id     char(6),           -- 店舗ID
postgres=#     store_name   varchar(128),      -- 店舗名
postgres=#     car_space    int,               -- 駐車場台数
postgres=#     area         double precision,  -- 敷地面積
postgres=#     open_date    date               -- オープン日
postgres=# );

テーブル削除

postgres=# \drop table [tablenanme];

テーブル定義修正方法

p
ostgres=# \d [tablenanme];

テーブル名変更方法

postgres=# \alter table [before tablenanme] rename to [after tablename];

ファイルのインポート

postgres=# copy [tablename] from '/home/vagrant/shared/data/hoge.csv' with csv header;

2019年6月25日火曜日

VBAの文法まとめ

関数の作成方法

Sub func()
  ' 処理を記載
End Sub

処理内から他の関数を呼び出す方法

Call func()

メッセージボックス

Sub Sample()
    MsgBox "Hello World!!"
End Sub

For文

' 基本形
For i = 0 To 10
    MsgBox (i)
Next i

' iを2ずつカウントアップする場合
For i = 0 To 10
    MsgBox (i)
Next i Step 2

' シート名の一覧を取得して表示させる
For i = 1 To Worksheets.Count
    MsgBox (Worksheets(i).Name)
Next

' 配列の数だけループ
Dim array(19) As String
For i = 1 To UBound(array)
    MsgBox (array(i))
Next

if文

' 基本形
If ActiveCell.Value = "五反田" Then
    MsgBox "五反田です"
Else
    MsgBox "五反田ではありません"
End If

' 不一致の場合
If ActiveCell.Value <> "五反田" Then
    MsgBox "五反田です"
Else
    MsgBox "五反田ではありません"
End If

' 部分一致の場合
If InStr(ActiveCell.Value, "五反田") > 0 Then
    MsgBox "五反田を含んでいます"
Else
    MsgBox "五反田を含んでいません"
End If

空白行まで繰り返し処理を行う

Dim i As Integer
i = 1
Do Until Cells(i, 1) = ""
    MsgBox (i)
    i = i + 1
Loop

Vlookup

WorksheetFunction.VLookup(検索値, 範囲, 列番号, 検索方法)

例外処理(エラーを無視)

' vlookupで検索失敗(=検索結果ゼロ)した場合でも処理が続くように例外処理
On Error Resume Next
  value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, 検索方法)
  If Err.Number <> 0 Then
    value = ""
  End If
On Error GoTo 0

他のファイルを開く/閉じる方法

Dim filePath As String
Dim fileName As String
Dim sheetName As String
filePath = "\\c:"
fileName = "sample.xlsx"
sheetName = "sample1"
' ファイルをオープンしてもチラチラさせない(チラチラをoff)
Application.ScreenUpdating = False
' ファイルをオープン
Workbooks.Open fileName:=filePath + "\" + fileName
' オープンしたファイルの指定シートをアクティブ化
Sheets(sheetName).Activate
' ファイルをクローズ
Workbooks(fileName).Close
' ファイルをオープンしてもチラチラさせない(チラチラをon)
Application.ScreenUpdating = True

シートのセルの値を取得する

Dim sheetName As String
sheetName = "sample1"
MsgBox(Sheets(sheetName).Cells(1, 1).Value)

2019年6月24日月曜日

OpenCV3.4.1で人の顔認識を行う

概要

WindowsでAnaconda + OpenCVを用いて画像認識(配布されている分類器を用いる)を行います。

※UbuntuにOpenCV3.4.1をビルドして画像認識を試みた事もありましたが、必要なライブラリが足りず(しかも何がどう足りないのかさっぱりわからず)うまくいきませんでしたので、Windows + Anacondaの環境にOpenCVをインストールして実施する事をおすすめします。

用語

・Anaconda:PythonとR向けのデータサイエンス用ディストリビューション
・OpenCV:インテルが公開しているOSSの画像解析フレームワーク

事前準備(前提とする環境)

・Windows10
・Anaconda5.3

構築する環境

OpenCV3.4.1

手順

openCVインストール後、cascadeファイルを準備します。cascadeファイルとは、「人の顔とは何か?」を定義したファイルになります。cascadeファイルを用いて画像解析プログラム(python)によって対象画像を分析する、という流れになります。

※以降、cascadeファイル・画像解析プログラム・分析対象画像はすべて同一ディレクトリ内に存在する前提とします。

openCVのインストール

Anaconda Promptで以下を実行し、openCVをインストールします。

$ conda install -c conda-forge opencv

cascadeファイルの取得

cascadeファイル(haarcascade_frontalface_default.xml)を準備します。「haarcascade_frontalface_default.xml」は、正面からの人の顔を判断する分類器になります。

※本ファイルは、公式の他にもGitHubなどにも公開されていますが、必ずOpenCVの公式(https://opencv.org/)からダウンロードしてください。公式のもの以外を用いてしまうと、下記のエラーが発生してプログラムが動かないためです。

$ python test.py
cv2.error: C:\projects\opencv-python\opencv\modules\core\src\persistence.cpp:448
4: error: (-49) Input file is empty in function cvOpenFileStorage

検証対象ファイルの準備

画像分析したいファイルを準備し、上記cascadeファイルや下記実行ファイルと同フォルダに配置します。下記プログラムでは、woman.jpgが検証対象ファイルになります。

実行プログラムの準備

以下サイト様で紹介されているプログラムなどで実行出来ます。

http://sh0122.hatenadiary.jp/entry/2017/10/30/210411

実行結果

画像ファイル上の顔と判断された箇所に枠が描画されると思います。

2019年6月23日日曜日

Ubuntu16.04にOpenCV3.4.1をインストールする手順

概要

Ubuntu16.04にOpenCV3.4.1をインストールする手順を記載します。

※Ubuntuをクリーンインストールした環境では、公式の手順ではcmakeに失敗して詰まってしまいます。

用語

・Vagrant:Virtual Boxに仮想環境を構築するためのツール。
・Ubuntu:LinuxのOS。
・OpenCV:インテルが公開しているOSSの画像解析フレームワーク

事前準備(前提とする環境)

Vagrant(ubuntu/xenial64)で構築したUbuntu16.04

構築する環境

OpenCV3.4.1

手順

パッケージのアップデート

$ sudo apt -y update
$ sudo apt -y upgrade

OSライブラリのインストール

$ cwd=$(pwd)

$ sudo apt -y remove x264 libx264-dev
$ sudo apt -y install build-essential checkinstall cmake pkg-config yasm
$ sudo apt -y install git gfortran
$ sudo apt -y install libjpeg8-dev libjasper-dev libpng12-dev
$ sudo apt -y install libtiff5-dev
$ sudo apt -y install libtiff-dev
$ sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
$ sudo apt -y install libxine2-dev libv4l-dev

$ cd /usr/include/linux
$ sudo ln -s -f ../libv4l1-videodev.h videodev.h
$ cd $cwd
 
$ sudo apt -y install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
$ sudo apt -y install libgtk2.0-dev libtbb-dev qt5-default
$ sudo apt -y install libatlas-base-dev
$ sudo apt -y install libfaac-dev libmp3lame-dev libtheora-dev
$ sudo apt -y install libvorbis-dev libxvidcore-dev
$ sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev
$ sudo apt -y install libavresample-dev
$ sudo apt -y install x264 v4l-utils
$ sudo apt -y install libprotobuf-dev protobuf-compiler
$ sudo apt -y install libgoogle-glog-dev libgflags-dev
$ sudo apt -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
$ sudo apt -y install libsm6 libxext6
$ sudo apt -y install libfontconfig1 libxrender1

Pythonライブラリのインストール

$ sudo apt -y install python-dev python-pip python3-dev python3-pip
$ sudo -H pip2 install -U pip numpy
$ sudo -H pip3 install -U pip numpy
$ sudo apt -y install python3-testresources

$ sudo -H pip2 install virtualenv virtualenvwrapper
$ sudo -H pip3 install virtualenv virtualenvwrapper
$ echo "# Virtual Environment Wrapper" >> ~/.bashrc
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
$ cd $cwd
$ source /usr/local/bin/virtualenvwrapper.sh

$ mkvirtualenv OpenCV-"$cvVersion"-py2 -p python2
$ workon OpenCV-"$cvVersion"-py2
$ pip install numpy scipy matplotlib scikit-image scikit-learn ipython
$ deactivate

$ mkvirtualenv OpenCV-"$cvVersion"-py3 -p python3
$ workon OpenCV-"$cvVersion"-py3
$ pip install numpy scipy matplotlib scikit-image scikit-learn ipython
$ deactivate

openCVのインストール

$ sudo pip3 install opencv-python
$ sudo pip3 install opencv-contrib-python

openCVのインストール確認

$ python3
>> import cv2
>> print(cv2.__version__)
'3.4.1'

上記のとおりバージョンが正しく表示されれば完了です。

2019年6月20日木曜日

Nuxt.js 2.0.0の実行方法

目次

  • 概要
  • 用語
  • 事前準備(前提とする環境)
  • 手順
  • 概要

    Nuxt.js 2.0.0がリリースされたので、スターターテンプレートを動作させてみたメモです。 その中で、「TypeError: Cannot read property 'eslint' of undefined」が発生したのでその対処方法も記載します。

    用語

    Nuxt.js:Vue.jsをより開発しやすくするためのフレームワーク

    事前準備(前提とする環境)

    Ubuntu 18.04(Virtual Boxに構築)(Python3.5.2含)

    手順

    基本的には、Nuxt.jsの公式に記載しているとおりの手順でインストールし、スターターテンプレートを実行するように準備します。

    まずは、Nuxt.jsインストールの事前準備としてnpmとvueをインストールします。

    $ sudo apt-get install npm
    $ npm install -g @vue/cli @vue/cli-init
    

    準備完了したら、スターターテンプレートのインストールを行います。nuxt_testは適当につけたプロジェクト名なので、お好きな名前にアレンジしてOKです。

    $ vue init nuxt-community/starter-template nuxt_test
    

    インストールが終わったらnpmを起動します。

    $ cd nuxt_test
    $ npm install
    $ npm run dev
    

    このあと、http://localhost:3000にアクセスすれば起動できたのですが、以下のようなエラーが発生して起動できなくなっています。

    ERROR in ./.nuxt/client.js
    Module build failed (from ./node_modules/eslint-loader/index.js):
    TypeError: Cannot read property 'eslint' of undefined
        at Object.module.exports (/node_modules/eslint-loader/index.js:148:18)
    

    こちらへの対応策は以下2パターンです。

    ①原因を解決する。
    本件の原因は、Nuxt2.0.0からisClientが利用出来なくなった事によるようです。ですので、以下ファイルを修正する事で解決できます。

    【nuxt.config.js】
    (修正前)
        extend (config, { isDev, isClient }) {
          if (isDev && isClient) {
    
    (修正後) extend (config, { isDev }) { if (isDev && process.client) {

    ②バージョンを戻す
    当然、Nuxt1.0.0の時は使えたのでバージョンを戻す事で再び動作させる事が出来ます。バージョンを戻すのは以下のファイルを修正する事で可能です。

    【package.json 】
    (修正前)
    "dependenceies": {
        "nuxt":"^2.0.0"
    },
    
    (修正後) "dependenceies": { "nuxt":"^1.0.0" },

    これで改めて「npm run dev」し、http://localhost:3000にアクセスしてみてください。正しく動作する事が確認出来ると思います。

    2019年6月19日水曜日

    Ubuntu18.04でホスト名を変更する方法

    概要

    Ubuntu18.04のホスト名やユーザ名を変更する方法を記載します。

    用語

    Ubuntu:LinuxのOS。

    事前準備(前提とする環境)

    Ubuntu18.04がクリーンインストールされたマシン。

    手順

    ホスト名の変更

    「hostname」ファイルのホスト名を修正します。

    $ sudo nano /etc/hostname
    

    下記のとおり修正してください。
    (修正前)k-VirtualBox
    (修正前)j-VirtualBox

    「hosts」ファイルのホスト名を修正します。(「hostname」と同一にしてください!)

    $ sudo nano /etc/hosts
    

    下記のとおり修正してください。
    (修正前)k-VirtualBox
    (修正前)j-VirtualBox

    修正後、再起動します。

    $ sudo reboot
    

    以下のように反映されます。

    ユーザ名の変更

    ユーザーは変更ではなく、下記にて追加する形になります。

    $ sudo adduser temp
    

    追加したユーザにsudo権限を追加します。権限追加後は再起動します。

    $ sudo gpasswd -a temp sudo
    $ sudo reboot
    

    以下のように反映されます。

    以上になります。

    2019年6月17日月曜日

    Virtual BoxでWindows 10にUbuntuをインストールする方法

    概要

    Virtual BoxでUbuntu18.04環境を構築する手順を記載します。

    また同時に、ホストマシンとバーチャルマシン(Ubuntu)の間でコピー&ペーストが出来るように設定し、共有フォルダを作成します。

    用語

    Virtual Box:仮想環境を構築するためのソフト。
    Ubuntu:LinuxのOS。

    手順

    Virtual Boxのダウンロード

    下記、Oracleの公式サイト(https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp)からVirtualBoxをダウンロードします。

    ダウンロードは画面に沿って進めればOKです。

    Ubuntuのisoファイルダウンロード

    Ubuntuの公式サイト(https://www.ubuntu.com/download/desktop)からisoをダウンロードします。

    Ubuntu18.04のインストール

    VirtualBoxを起動し、上記でDLしたisoを指定してゲストマシンを構築します。

    ※もし64bitOSをインストール出来ない場合は、PCの仮想化支援機能がOFFになっている可能性があります。
    起動時にPCメーカーのロゴが表示されている画面でF2、F11キーなどを押して(メーカー毎にBIOS画面への入り方は異なるので確認してみてください)BIOS設定に入り、「Advanced」->「CPU Configuration」にチェックを入れる事で64bitOSをインストール出来るようになります。

    共有設定(要再起動)

    コピー&ペーストの設定方法

    Virtual Boxメニューから、「デバイス」->「クリップボードの共有」を押下して「双方向」を選択する。

    ドラッグ&ドロップの設定方法

    Virtual Boxメニューから、「デバイス」->「ドラッグ&ドロップ」を押下して「双方向」を選択する。

    共有フォルダの設定

    インストールしたOSを右クリック->「設定」を選択

    「共有フォルダ」->「+」ボタンを選択

    共有するフォルダ(ホスト側)を指定(下記例では、「C:\temp」配下を共有フォルダに指定しています)

    続いてCDイメージを挿入

    これでゲストマシン側に共有フォルダ「media/sf_common」が作成されます

    これだけでは下記のとおりアクセス権限が無いため、ゲストマシンの共有フォルダへアクセス権限を追加します(要Reboot)

    $ sudo gpasswd -a ユーザ名 vboxsf
    

    以下のコマンドを実行してsfグループにユーザを追加し、再起動をしてください

    以上になります。

    2019年6月16日日曜日

    Pythonでjsonを読み書きする方法

    概要

    Pythonでjsonを読み書きする方法をメモします。

    用語

    ・Python:機械学習プログラミングに人気のプログラミング言語。
    ・json:人間にとって読み書きが容易でコンピュータにとっても簡単にパースや生成を行なえる形式の、軽量のデータ交換フォーマット。JavaScriptをベースに作られている。

    事前準備(前提とする環境)

    ・Ubuntu16.04

    手順

    jsonのimport

      import json
    

    jsonファイルの作成

      # jsonに記述したいデータの作成
      best_params = {'n_layer': 1, 'mid_units': 102.0, 'dropout_rate': 0.29894787265743417, 'activation': 'sigmoid', 'optimizer': 'rmsprop'}
      # 「hyperparam.json」という名前のjsonファイルを作成する
      fw = open('hyperparam.json', 'w')
      # jsonファイルに書き込み
      json.dump(best_params, fw, ensure_ascii=False, indent=4, sort_keys=True, separators=(',', ': '))
    

    作成出来たjsonファイル

    上記を実行すると以下のような記載がされたjsonファイルが作成されます。
      {
        "activation": "sigmoid",
        "dropout_rate": 0.29894787265743417,
        "mid_units": 102.0,
        "n_layer": 1,
        "optimizer": "rmsprop"
    }
    

    jsonファイルの読み込み

    以下を実行するとjsonファイルの中身を読み出す事が出来ます。
      # jsonファイルのopen・load
      f = open("hyperparam.json", 'r')
      json_data = json.load(f)
      # データの読み込み
      n_layer = json_data["n_layer"]
      mid_units = int(json_data["mid_units"]) # 中間層のユニット数
      dropout_rate = json_data["dropout_rate"] # 中間層のドロップアウト率
      activation = json_data["activation"] # 中間層の活性化関数
      optimizer = json_data["optimizer"] # 最適化アルゴリズム
      print(n_layer)
      print(mid_units)
      print(dropout_rate)
      print(activation)
      print(optimizer)
      # 実行結果は以下
      # 1
      # 102.0
      # 0.29894787265743417
      # sigmoid
      # rmsprop
    

    2019年6月15日土曜日

    Ubuntu OSのアップデート方法

    目次

  • 概要
  • 手順
  • 概要

    Ubuntu OSのバージョンアップ(例:Ubuntu16.04⇒Ubuntu18.04)の方法をメモします。

    手順

    まず、apt-getの更新を行います。

    $ sudo apt-get update
    $ sudo apt-get upgrade
    

    続いて、OSアップデートがあるかを確認します。

    $ do-release-upgrade -c
    

    OSのアップデートがある場合は実行します。

    $ sudo do-release-upgrade
    

    ※OSをアップデートする場合は、インストール容量がかなり多くなります。もし容量が足りなくなった場合は、apt-getをcleanすることで容量が減る場合があります。(特にUbuntuを仮想マシンに入れている場合は容量不足が発生することがあります)

    $ apt-get clean
    

    今回は以上になります。

    2019年6月13日木曜日

    UbuntuにMy SQLサーバを構築してテーブルを作る

    概要

    Vagrantで作成したゲストマシン①から、ゲストマシン②上に構築したDBサーバへアクセスする手順を記載します。

    用語

    ・ホストマシン:PC本体
    ・ゲストマシン:ホストマシン上にVirtual Boxで構築する仮想マシン
    ・Vagrant:Virtual Boxに仮想環境を構築するためのツール。
    ・MySQL

    事前準備

    【ホストマシン】
    ・Windows10 Professional
    ・Virtual Box 5.2.6

    【ゲストマシン】
    ゲストマシン①:ubuntu/xenial64
    ゲストマシン②:ubuntu/xenial64

    構築する環境

    ゲストマシン①:mysql-client
    ゲストマシン②:mysql-server

    手順

    ゲストマシン①から②へアクセスできるよう設定

    ゲストマシン②がprivete network上で参照出来るように設定します。参照設定は、下記ファイルの編集によって行います。
    編集対象ファイル:C:\Vagrant\ubuntu\Vagrant
    (修正前)# config.vm.network "private_network", ip: "192.168.33.10"
    (修正後)config.vm.network "private_network", ip: "192.168.33.11"

    ゲストマシン②から①にアクセスできる事を確認します。確認は以下のとおり、ifconfigが正しく行える事を確認します。

    
    $ vaglant reload
    $ vaglant ssh
    $ vagrant@vagrant-ubuntu-xenial-64:~$ ifconfig 192.168.33.11
    
    

    My SQLのインストール

    ゲストマシン①にmysqlのクライアントアプリをインストール

    
    $ echo これをやらないとmysqlclientのインストールでエラーになります
    $ sudo aptitude install libmysqlclient-dev
    $ sudo apt install mysql-client
    
    

    ゲストマシン②にmysqlのサーバーアプリをインストール

    
    $ sudo apt install mysql-server
    
    

    ゲストマシン②のDBへのアクセス許可

    下記ファイルを開きます。
    
    $ sudo nano /etc/home/my.cnf
    
    
    以下箇所をコメントアウトしてください。
    
    (修正前)
    bind-address = 127.0.0.1
    (修正後)
    # bind-address = 127.0.0.1
    
    

    ゲストマシン②のDBサーバにデータベース・ユーザ追加

    
    $ create database if not exists inv;
    $ grant all privileges on inv.* to vagrant@"192.168.33.11" identified by 'vagrant' with grant option;
    
    

    ゲストマシン①からゲストマシン②のDBにアクセス

    
    $ sudo mysql vagrant@192.168.33.11 -p
    > show tables;
    
    
    これでゲストマシン①から②のDBサーバへアクセス出来ました!

    おまけ

    mysqlを扱うにあたり使えそうなコマンドをご紹介します。
    
    # DBの指定
    $ use inv;
    # DBの一覧確認
    $ show databases;
    # テーブルの一覧確認
    $ show tables;
    # ユーザの一覧確認
    $ select host, user from mysql.user;
    # ユーザの権限一覧確認
    $ show grants;
    
    

    2019年6月12日水曜日

    ゲストマシンに構築したFlaskサーバへホストマシンからアクセスする方法

    概要

    ホストマシンから、ゲストマシンのFlaskサーバへアクセスする環境を構築する手順を記載します。

    まず、Virtual Box上にUbuntu18.04の仮想環境(=ゲストマシン)を構築します。あわせてゲストマシンにプログラムファイルを配置するために共有フォルダ設定を行います。
    また、ゲストマシン上にFlaskをインストールし、Flaskで構築したサーバにホストマシンからアクセスできるように設定を行います。
    今回、仮想環境構築にあたっては、Ubuntu18.04のisoを用いてインストールするのではなく、Vagrantを用います。Vagrantであればネットワーク設定が簡単に出来るからです。

    ※アプリケーションのバージョンが異なると環境構築に失敗する場合があります。

    用語

    ・ホストマシン:PC本体
    ・ゲストマシン:ホストマシン上にVirtual Boxで構築する仮想マシン
    ・Vagrant:Virtual Boxに仮想環境を構築するためのツール。
    ・Box:仮想マシンにインストールするOSやネットワーク設定などの1セット。技術者によって公開されているものがある。
    ・Flask:簡易にpythonサーバを構築できるOSSフレームワーク。

    事前準備(前提とする環境)

    【ホストマシン】
    ・Windows10 Professional
    ・Virtual Box 5.2.6

    【ゲストマシン】
    (空)

    構築する環境

    【ホストマシン】
    ・Vagrant 2.1.5

    【ゲストマシン】
    ・ubuntu 18.04(python3.6.5含)
    ・pip3
    ・Flask 1.0.2

    手順

    Vagrantのインストールとセットアップ

    以下からVagrantをインストールします。
    https://www.vagrantup.com/downloads.html

    Vagrantファイルを落とすディレクトリ(フォルダ)を作成します。
    以下の例ではCドライブ直下にVagrantディレクトリ、Vagrantディレクトリは以下にubuntuディレクトリを作成していますが、好きなところに作成してOKです。

    $ mkdir C:\Vagrant
    $ cd C:\Vagrant
    $ mkdir ubuntu
    $ cd ubuntu
    

    VirtualBox上で構築するBoxを検索します。今回は、同サイトに掲載されているBoxの「ubuntu/bionic64」を用います。
    https://app.vagrantup.com/boxes/search

    構築するBoxを指定して、Vagrant初期化します。初期化を行うと「ubuntu」ディレクトリ配下にファイルが作成されます。

    $ vagrant init ubuntu/bionic64
    

    Vagrantを起動します。これでゲストマシン上にubuntu環境が構築されました。

    $ vagrant up
    

    ホストマシンとゲストマシンとの共有フォルダ作成

    共有フォルダするディレクトリを指定します。指定は、下記ファイルの編集によって行います。
    編集対象ファイル:C:\Vagrant\ubuntu\Vagrant
    (修正前)# config.vm.synced_folder
    (修正後)config.vm.synced_folder "./shared", "/home/vagrant/shared", owner: "vagrant", group: "vagrant"

    共有フォルダ作成のためのvagrantプラグインをインストールします。

    $ vagrant plugin install vagrant-vbguest
    

    ここで、vbguestのバージョンを確認し、以下のように一致していればOKです。

    $ vagrant vbguest
    [default] GuestAdditions 5.2.6 running --- OK.
    

    ubuntuのバージョンが古い(14.04など)とhostとguestでバージョンアンマッチになる場合があります。その際は、以下のようにバージョンを揃えてください。

    $ vagrant vbguest
    [default] GuestAdditions versions on your host (5.2.6) and guest (4.3.36) do not match.
    $ vagrant halt
    $ vagrant vbguest
    [default] GuestAdditions 5.2.6 running --- OK.
    

    共有フォルダの設定が完了したら、Vagrantを再起動します。

    $ vagrant up
    

    Flaskのインストール

    ゲストマシンにssh接続します。

    $ vagrant ssh
    

    username:vagrant
    password:vagrant

    ゲストマシンにFlaskをインストールするためにpip3をインストールし、その後にFlaskをインストールします。

    vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt install python-pip python3-pip
    vagrant@vagrant-ubuntu-trusty-64:~$ sudo pip3 install Flask
    

    ゲストマシンにFlaskをインストールするためにpip3をインストールし、その後にFlaskをインストールします。

    sudo apt-get update
    

    ホストマシンへのIPアドレス公開設定

    一旦ゲストマシンからログアウトします。

    vagrant@vagrant-ubuntu-trusty-64:~$ exit
    logout
    Connection to 127.0.0.1 closed.
    

    ゲストマシンの接続先IPアドレスを「Vagrant」ファイルに設定します。
    編集対象ファイル:C:\Vagrant\ubuntu\Vagrant
    (修正前) # config.vm.network "private_network", ip: "192.168.33.11"
    (修正後)config.vm.network "private_network", ip: "192.168.33.10"

    vagrantをリロードと起動をします。

    $ vagrant reload
    $ vagrant up
    

    サーバサイドプログラムの配置とFlaskサーバへ接続

    ホストマシンの共有フォルダ(C:\Vagrant\ubuntu\shared)にサーバサイドプログラム(以下)を配置します。

    【プログラム】hello.py
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/') def hello_world():     return "Hello World!"
    if  __name__ == '__main__':     app.run(host='0.0.0.0')

    再度、ゲストマシンへsshログインします。

    $ vagrant ssh
    

    ゲストマシンからも「hello.py」を確認します。

    vagrant@vagrant-ubuntu-trusty-64:~$ cd shared/
    vagrant@vagrant-ubuntu-trusty-64:~/shared$ ls
    hello.py
    

    ゲストマシンのrebootなどでフォルダ共有は解除されます。解除された場合はvegrantのreloadからやり直してください。

    $ vagrant reload
    $ vagrant up
    

    ゲストマシンから「hello.py」が確認できたら、サーバーを起動します。

    vagrant@vagrant-ubuntu-trusty-64:~/shared$ python3 hello.py
    

    これで準備完了です!ホストマシンから以下にアクセスしてください。ブラウザに「Hello World」が表示されます。
    http://192.168.33.10:5000/

    2019年6月10日月曜日

    Hello, World

    GoogleのBloggerにブログを作ってみました。

    ソフトウェア工学を専攻しシステムアーキテクトをしている自分が日々勉強して理解した事を残そうと思います。

    勉強しようと思っている事のまず1つは、まずはコンピュータ・ネットワーク工学(ハードウェア・ネットワーク・OS・プログラミング言語・オープンソースソフトウェア)です。これがアーキテクトやプログラマーの基礎知識になります。

    続いて機械学習です。ハードウェア・ソフトウェアの大幅性能UPによりビッグデータ、IoT、機械学習が学術的なレベルを超えて産業界でも実用化されたこんにち、各企業の基幹システム等に当たり前のように予測モデル(機械学習により構築)が搭載されるのはもはや時間の問題です。これを勉強しない手はありません。

    その次は数理統計学です。機械学習を使うためには、データのクレンジングや基礎分析といった技術が必要であるである事がわかりました。そのためには機械学習の知識だけでは不足であり、勉強することにします。

    次は心理学です。仕事をしていたら当然相手がいるわけで、相手と交渉したりなんなりといった事は日常茶飯事かと思います。この時に相手にYESと言わせるにはどうしたら良いのか・・・という事で勉強してみようと思います。

    次あたりから趣味が混ざってきますが・・・次は占いです。占いは胡散臭いものも中にはありますがどうやら統計的な根拠があるようです。そのため、 実際のところどんなものなのか調べてみようと思っています。

    次は株です。お金欲しいし・・・。そして株は心理学×統計学で何とか語れないのかな・・・という意味で。

    最後は猫、料理、DIYです。これは完全に趣味です。気が向いたら記事化させてい頂きます。

    FX自動トレード_2021年6月実績

          概要 2021年6月が終わり、FX自動トレードによる収益実績を取り纏めましたので振り返ってみたいと思います。 2021年6月結果 2021年6月の実績は、実利利益額:\66,761、実績利益率は1.42%でした。 今月もボラが全く出ず。利益率の連続過去最低記録更新は免...