Visual Studio 2015 を使ったCLIアプリケーション開発 (第2回)

前回はVisual Studio 2015 Communityをインストールするところまで紹介しました。

tuttitan.hatenablog.com

 

 

今回は、簡単なC++/CLIアプリケーションを作成するところまで紹介したいと思います。

 

はじめてVisual Studio 2015 Communityを起動すると次のような画面が現れます。アカウントがあったほうがよいのですが、ここではひとまず「後で行う。」をクリックして先に進みます。

f:id:tuttitan:20161226212825p:plain

 

好みの配色テーマを選択して、「Visual Studio の開始」をクリックします。

f:id:tuttitan:20161226213100p:plain

 

しばらくするとVisual Studioのメイン画面が現れるので、「メニュー」より [ファイル] → [新規作成] → [プロジェクト] を選択します。

f:id:tuttitan:20161226213501p:plain

 

どのようなプロジェクトを作るのかと聞かれるので、左方にある [テンプレート] から [Visual C++] → [CLR] を選択。「空のCLRプロジェクト」を選択して、プロジェクトの「名前」を「場所」を適当に入力して「OK」ボタンをクリックする。

f:id:tuttitan:20161226230749p:plain

 

空のプロジェクトが作成されたのを確認して、「メニュー」より [プロジェクト] → [新しい項目の追加...] を選択する。

f:id:tuttitan:20161226231009p:plain

 

どのような項目を追加するのか聞かれるので、左方より [Visual C++] → [UI] を選択。「Windowsフォーム」を選択して、名前を適当に入力してから [追加] ボタンをクリックする。
ここで入力した名前がクラス名になりますので考えて入力しましょう。(場所に関してはそのままでよいでしょう)

f:id:tuttitan:20161226231404p:plain

 

以上で空のプロジェクトに Myform.h と Myform.cpp が追加されますが、下のようなエラーメッセージが表示されるかも知れません。

「データが失われる可能性を防ぐため、デザイナーの読み込み前に以下のエラーを解決する必要があります。」と言われても困りますよね。

f:id:tuttitan:20161226231703p:plain

 

これはDebugに自動的に生成されたファイルに不具合があるために起こる現象なのではないかと推察できます。なので、プロジェクトファイル(.vproj)の下にあるDebugフォルダの中身を一度削除します。(フォルダ自体は削除しないこと)

f:id:tuttitan:20161226231928p:plain

 

MyForm.h タグを一度閉じて、[ソリューション エクスプローラ] から開きなおすと初期状態のフォームが正しく表示されるようになります。

f:id:tuttitan:20161226232202p:plain

 

今回は簡単な C++/CLI アプリケーションを作成するということなので、「HelloWorld」という文字を表示するフォームを作りたいと思います。まずはメニューより [表示] → [ツールボックス] を選択します。

f:id:tuttitan:20161226232411p:plain

 

ツールボックスが表示されるので、[コモンコントロール] より [Label] を選択してフォーム上に配置します。

f:id:tuttitan:20161226232639p:plain

 

続いて、追加したラベル(今回は "label1" )が選択されていることを確認して右下にある [プロパティ] ウィンドウの Font と Text を編集します。
今回、文字を大きくしたかったのでFontは32ptで、Textは "HelloWorld" としました。

f:id:tuttitan:20161226233145p:plain

 

次にプログラムを編集します。[ソリューション エクスプローラ] から MyForm.cpp を選択して、以下のコードを入力します。

#include "MyForm.h"

using namespace System;


[STAThreadAttribute]
int main(void) {
	HelloWorld::MyForm^ form = gcnew HelloWorld::MyForm();
	form->ShowDialog();
	return 0;

}

f:id:tuttitan:20161226233428p:plain

 

続いてプロジェクトのプロパティを変更します。「メニュー」より [プロジェクト] → [HelloWorld のプロパティ...] を選択します。

f:id:tuttitan:20161226233803p:plain

 

「プロパティ ページ」が現れるので、左方にある [リンカー] → [システム] を選択し、「サブシステム」に "Windows" を選択します。(プルダウンメニューより選択)

f:id:tuttitan:20161226234016p:plain

 

[システム] の下方にある [詳細設定] を選択して、「エントリ ポイント」に main を指定します。(ここは手入力)
以上の2箇所を変更したら [OK] ボタンをクリックして「プロパティ ページ」を閉じます。

f:id:tuttitan:20161226234218p:plain

 

ソリューションをビルドして実行すれば、HelloWord と表示されたフォームが現れるはずです。

f:id:tuttitan:20161226234613p:plain

 

途中で罠(エラー)がありましたが、これで C++/CLI アプリケーションを作成できるようになりました。めでたし。

 

 

参考Webページ

 

Visual Studio 2015 を使ったCLIアプリケーション開発 (第1回)

さて2016年ももう終わりですが、Microsoftより無償で使えるIDE Visual Studio 2015 Communityが提供されています。

その昔、それなりの機能が使えるVisual Studioは有償(Express版は無償)で提供されていたのですが、2015からはタダで使えるになっています。これを使わない手はありませんね。

 

Visual Studio 2015 Community」を使って C++/CLI アプリケーションのこと始め的な記事を複数回に分けて書いてみようと思っています。今回はソフトのダウンロードからインストールまでの勝手を紹介します。

 

以下のリンクにアクセスして、「Download Community 2015」のところをクリックする。

https://www.visualstudio.com/vs/community/

f:id:tuttitan:20161226181128p:plain

 

インストーラーがダウンロード開始されるので、ダウンロード完了後にファイルを実行する。

f:id:tuttitan:20161226181447p:plain

 

インストーラーの準備が整ったら下のような画面になるので、「インストール場所」を設定し(任意)、「インストールの種類」は「カスタム」を選択し、「次へ」をクリックする。

f:id:tuttitan:20161226181726p:plain

 

「機能の選択」は「プログラミング言語」→「Visual C++」を選択する。そして「次へ」をクリックする。(下図ではMFCも一応使いたかったのでチェックが入っています)

f:id:tuttitan:20161226183625p:plain

 

確認画面になるので設定を確認して、問題がなければインストールを開始する。環境にもよるけどインストールには20~30分くらいかかるのでコーヒーでも飲んで待ちましょう。

f:id:tuttitan:20161226182037p:plain

 

...20~30分後。

f:id:tuttitan:20161226183950p:plain

 

時間は少しかかりますが、ここまでは簡単ですね。

ssh接続でpassphraseを毎回入力するのは嫌だ

WindowsCygwin環境からsshコマンドを叩いたときの話。

 

前書き

SSHサーバをこしらえて、セキュリティの観点から認証方法を公開鍵認証(RSA)にしたのだけど、SSHサーバに接続する都度『id_rsaのpassphraseを入力してね』と聞かれて面倒くさい。

Macなら一度passphraseを入力してしまえば、基本的に聞かれることはないのにどうしたものかと調べてみたら、Cygwinでも使える便利なものがありました。

 

便利ツール

その名も「keychain」というツール。(Macのそれとは違うみたい)

これはLinux/Gentooディストリビューションの親戚Funtooのプロジェクトで開発されているツールのようでCygwinにも入れることができました。keychainを使うことでターミナルがpassphraseの情報を記憶してくれるようになるっぽいです。

 

導入方法
  1. gitにkeychainのソースがあるのでgit cloneするかzipをダウンロードする

    https://github.com/funtoo/keychain

  2. 展開した(Makefileがある)ディレクトリに移動してmakeする
    $ cd keychain
    $ make
  3. 「keychain」という実行可能形式のファイルができるので、/usr/binにコピーする
    $ cp keychain /usr/bin/
  4. Cygwin起動時に自動実行するように ~/.bashrc に以下を追記する
    if [ -e /usr/bin/keychain ]; then
        eval `/usr/bin/keychain --eval --agents ssh id_rsa`
    fi
    
  5. 端末を開き直すか、source ~/.bashrc で起動スクリプトを読み込む

 

参考Webページ

iroha Board を試してみる。その2

前回の記事からの続きになります。

 

tuttitan.hatenablog.com

 

今回は手順4〜手順9の手順補足をします。

 

手順概要(再掲)
  1. ゲストOSのイメージをダウンロードする
  2. ゲストOSをインストールする
  3. ゲストOSの使い勝手をよくする(以降はゲストOSでの作業)
    a. ソフトウェアアップデートを行なう
    b. Parallels Toolsをインストールする
    c. (必要に応じて)作業用のアカウントを作成し、適当に権限を付ける
    d. vim, emacs, chromiumをインストールする
    e. ホームディレクトリを英語表記に直す
    f. キーボード入力メソッドの設定を行なう
  1. 「iroha Board」のWebページでインストール手順を確認する
  2. apache2をインストールする
  3. mysqlをインストールする
  4. php5.6をインストールする
  5. iroha BoardとCakePHPのソースをダウンロードする
    a. 公開ディレクトリを用意する
    b. ダウンロードしたソースを用意したディレクトリに展開する
  6. mysqlの設定を行なう
  1. データベースを作成する
  2. cake phpが動作することを確認する
    a. 所有者をapache(www-data)に変更する
    b. Security.salt と Security.cipherSeed の値を変更する
    c. rewriteモジュールを有効にする
    d. apacheのディレクティブを変更する
  3. iroha board の設定を行なう
    a. database.php を修正する
    b. core.php を修正する

 

手順補足

手順4:バージョンアップによって導入手順が変わっていたら困るので、公式ホームページでインストール手順を確認する。執筆時点ではバージョンは0.9.7で、手続きとしては以下の通り。

  1. iroha Board のソースをダウンロードして展開
  2. CakePHP のソースをダウンロードして展開
  3. 公開ディレクトリに展開したファイルを配置
  4. データベースの設定をする
  5. 必要に応じてwebrootの設定ファイルを修正する
  6. ブラウザよりインストールする

手順5:普通にaptより入れる。
$ sudo apt-get install apache2

手順6:普通にaptより入れる。途中でMySQL root のパスワードを何にするか問われるので予め決めておく。
$ sudo apt-get install mysql-server

手順7:lubuntu 16.04 のデフォルトのphpは7.0なのでphp5.6をインストールできるようにppaを追加する。
$ apt show php
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo atp-get install php5.6
phpmysqlを扱うので、php5.6-mysql パッケージもインストールする。
$ sudo apt-get install php5.6-mysql

手順8:iroha Board の公式Webページにリンクが張ってあったのでそこからソースをダウンロードする。

手順8.a:通常、apacheの公開ディレクトリは /var/www/html あたりだけど、ごちゃごちゃになるといけないので今回は /var/www/iroha を新規作成し、ここを公開ディレクトリとして設定する。
# mkdir /var/www/iroha
/etc/apache2/apache2.conf に以下を追記。
Alias /iroha/ "/var/www/iroha/"
<Directory /var/www/iroha>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>

手順8.b:/var/www/iroha はroot所有になっているので展開はroot権限で行なう。
$ sudo mv ~/Downloads/source.tar.gz /var/www/iroha
$ cd /var/www/iroha
$ sudo tar xvzf source.gz.tar
ソースを展開後、ディレクトリ名を "iroha Board" は "irohaboard" に変更、"cakePHP" は "cake" に変更しておく。(別に名称は任意でよいが)

手順9:iroha Boardでは初期設定時にデータベース無効な日付(0000-00-00 00:00:00)を書き込むため、SQLの設定にALLOW_INVALID_DATES を指定しておく必要がある。
/etc/mysql/my.cnf などの設定ファイルに以下を追記。
[mysqld]
sql_mode=ALLOW_INVALID_DATES
追記後、サービスを再起動させる。
$ sudo service mysql restart
サービス再起動後、mysqlにrootで入り、sql_modeを確認する。
mysql> select @@sql_mode;

 

一応、ここまでが iroha Board を導入するまでの下準備になります。

手順10以降の手順詳細は次の記事で紹介します!

 

参考Webページ

iroha Board を試してみる。その1

OSSOpen Source Software)を使って手軽にe-Learning環境を構築できないか?

兼ねてよりe-Learningには関心があり、有名どころのmoodleあたりを触ってみようかなと考えていたのだけど、ネットで調べてみると『iroha Board』なる軽量なLMS(Learning Management System)があるとのこと。

https://irohaboard.irohasoft.jp/

 

これはシンプルで良さげ!というわけで、とりあえず入れてみることに...
が、これの導入に少し手を焼いたので記事としてまとめます。

 

必要なもの

LMSを構築するにあたり最終的に必要となるものを以下にざっくり列挙する。

  • Linux環境
  • Webサーバ
  • php
  • MySQL
  • iroha Board ソース(公式よりダウンロード)
  • Cake PHP ソース(公式よりダウンロード)

 

前提としての環境

いきなりネイティブに入れるのは、面倒くさかったのでVM上で環境を作ることにした。

ホスト環境(MacBook

ゲスト環境

  • OS:lubuntu 16.04.1 LTS(Desktop環境)
  • SQLmysql 5.7.16
  • PHPphp 5.6.29
  • Webサーバ:apache 2.4.18

 

手順概要

Macに仮想化ツールがすでにインストールされている前提で進めます。

  1. ゲストOSのイメージをダウンロードする
  2. ゲストOSをインストールする
  3. ゲストOSの使い勝手をよくする(以降はゲストOSでの作業)
    a. ソフトウェアアップデートを行なう
    b. Parallels Toolsをインストールする
    c. (必要に応じて)作業用のアカウントを作成し、適当に権限を付ける
    d. vim, emacs, chromiumをインストールする
    e. ホームディレクトリを英語表記に直す
    f. キーボード入力メソッドの設定を行なう
  1. 「iroha Board」のWebページでインストール手順を確認する
  2. apache2をインストールする
  3. mysqlをインストールする
  4. php5.6をインストールする
  5. iroha BoardとCakePHPのソースをダウンロードする
    a. 公開ディレクトリを用意する
    b. ダウンロードしたソースを用意したディレクトリに展開する
  6. mysqlの設定を行なう
  7. データベースを作成する
  8. cake phpが動作することを確認する
    a. 所有者をapache(www-data)に変更する
    b. Security.salt と Security.cipherSeed の値を変更する
    c. rewriteモジュールを有効にする
    d. apacheのディレクティブを変更する
  9. iroha board の設定を行なう
    a. database.php を修正する
    b. core.php を修正する

 

手順補足

長くなりそうなのでこの記事では手順3までを補足します。(手順概要の赤枠のところ)

手順1〜2:普通に行なう。なおゲストOSには以下のイメージを使用した。

Lubuntu 16.04.1 LTS 32-bit PC (i386) desktop image

http://cdimage.ubuntu.com/lubuntu/releases/16.04.1/release/lubuntu-16.04.1-desktop-i386.iso

手順3.a:ゲストOSの初回ログイン時にソフトウェアの更新を提案されるのでそれに従う。

手順3.b:ゲストOSウィンドウの右上にビックリマークがあるので、クリックして「Parallels Tools をインストールする」を選択。(メニューバーからもいけるはず)
Parallels Toolsのメディアがマウントされるのでマウントポイントに移動して、
$ sudo ./install
インストールが完了したらゲストOSを再起動し、マウントポイントからメディアをアンマウントする。

手順3.d:使いやすいエディタやWebブラウザのパッケージをインストールする。

手順3.e:xdg-user-dirs-gtk-update するとParallels Desktopでは不都合があるので、次のようにシンボリックリンクを張るようにする。
$ ln -s ~/デスクトップ ~/Desktop

 

続きは次回に!

tuttitan.hatenablog.com

 

参考Webページ

秋イベを振り返る。その6

艦これの2016年秋イベントの話になります。
今回はE4海域輸送部門について...

この海域はMAP左半分が輸送作戦、右半分が戦闘作戦になっていて、難易度リセットすると輸送作戦からまたやり直しという意地の悪いMAPになっています。そして甲種に挑んだ私はラスダン運ゲーに泣き、乙種でやり直すことに...

輸送に関しては甲でも乙でも難しさとしては変わらない感じでした。(必要になる輸送量が甲種のほうが多いくらいで)

f:id:tuttitan:20161208095344p:plain

輸送作戦はある程度軽い編成でないと最短ルートを航行できないので、軽巡1、駆逐2、航巡2の編成にしました。編成が軽い上に敵が強いので道中支援は必須でした。なお、Hマスにフラヲ改がいるので道中支援を出していても事故るときは事故ります。

大発動艇を入れつつ がっちり対空装備を固めます。索敵値がないとLマスに逸れるということみたいなので航巡には水戦に加え水観を載せています。

f:id:tuttitan:20161208095813p:plain

ボスまで辿り着けば夜戦でA勝利は確実なので、疲労を抜いて回していればその内 輸送量が満了します。輸送作戦ではレア艦のドロップはありませんでした。

なお、道中支援は駆逐2、正母2、高速戦艦2(全艦キラキラ)でしっかり出しておきましょう。

 

秋イベを振り返る。その5

E3海域攻略の記事になります。

MAPを見ると複雑に見えますが、この海域もE2と同様史実艦をある程度(7隻以上?)編成に入れるとルートを固定できるみたいです。
...固定というよりは編成の条件を緩和できる感じでしょうか。

E2とE3は共通の札なのでE2で使った史実艦をここでも使えます。史実艦としては嵐、野分、祥鳳、瑞穂、蒼龍、飛龍、愛宕高雄、羽黒、妙高、神通、摩耶、鳥海、木曽あたりがレベル的に使えそうな感じ。

空母機動部隊編成ですが正規空母を3隻以上入れると逸れてしまうので、軽空母を配して艦戦多めです。道中に航空戦が2回あり、ボスは連合艦隊になっています。

 

ひとつ前の記事で編成をすでに紹介していますが、こんな感じになります。

 

第1艦隊

f:id:tuttitan:20161208133452p:plain

 

第2艦隊

f:id:tuttitan:20161208133533p:plain

 

道中の航空戦マスで事故ることがあるので、基本的にラスダン以外は決戦支援を出さない方向で攻略を進めました。全キラの決戦支援を出しても(12隻中)2~3隻落としてくれればいいところでカスダメのことも多かったので支援効果は薄かったように思えます。

また、道中は潜水艦マスと航空戦マスしかないので支援の必要はなかったです。ルート的には、1BEILQ を進みます。

f:id:tuttitan:20161208143015p:plain

 

ギミック解除でどの程度弱くなったのかは分かり兼ねますが、ラスダンになってから10数回挑むことになったので、すんなりクリアという風には運びませんでした。(甲作戦にて)

なお、欲しいレア艦はE2で既に出ていたので堀りのことを考えることなく清々しく攻略しました。

 

次回は本イベント最高難易度との呼び声が高い、魔のE4海域です...