2015年11月24日火曜日

Linux(CentOS7)にVisual Studio Codeをインストールし、C#アプリを実行する

CentOS7にVisual Studio Codeをインストールし、C#アプリケーションをデバッグする。

動作環境
・CentOS 7
 

インストールするもの

インストールするものは以下。

  • Visual Studio Code 
  • Mono
  • DNVM、DNX
  • Node.js

Visual Studio Code単体ではコンパイルできないため、LinuxでのC#実行環境であるDNX、DNXの動作に必要なMonoのインストールが必要となる。
DNVMは.NETのバージョン管理で、DNXをインストールするのに必要となる。
Node.jsは、Visual Studio Codeのインテリセンスに必要となる。

 

Monoのインストール

MonoをLinuxのインストール用ページに記載されている方法でインストールする。

software.opensuse.org: Install package home:tpokorra:mono / mono-opt

20151121000345

ウェブブラウザで上記のページを開いた後、CentOSをクリックする。
上の画像のように、インストール方法が表示される。
記載されているコマンドを実行する。

% cd /etc/yum.repos.d/
% wget http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-7/home:tpokorra:mono.repo
% yum install mono-opt

monoのインストール中、何度かYes/Noの入力を促されるため、「y 」を入力する。
インストール完了後、環境変数MONO_HOMEを設定し、Monoのコマンドを実行可能にする。


% vi /etc/profile.d/mono.sh

#!/bin/bash
MONO_HOME=/opt/mono
PATH=$PATH:$MONO_HOME/bin
export PATH MONO_HOME
export CLASSPATH=.


設定用のシェルに実行権限を与える。

% chmod +x /etc/profile.d/mono.sh

環境変数を有効にする。


% source /etc/profile.d/mono.sh


インストールが完了していることの確認として、バージョンを表示する。


% mono --version


 


DNVM、DNXのインストール


DNVMを下記のコマンドでインストールする。


% curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh


インストールが完了していることの確認として、バージョンを表示する。


% dnvm -v


 


DNXを下記のコマンドでインストールする。


% dnvm upgrade -r mono


インストールが完了していることの確認として、バージョンを表示する。


% dnx --version


 


Node.jsのインストール


Node.jsを下記のコマンドでインストールする。


% yum install epel-release
% yum install nodejs


インストールが完了していることの確認として、バージョンを表示する。


% node -v


 


Visual Studio Codeのインストール


VisualStudioのサイトからダウンロードする。


Visual Studio Code - Code Editing. Redefined.


 20151122145155


ダウンロード後、zipファイルを展開する。
展開したディレクトリ内の「Code」というシェルファイルを実行することによって、VisualStudioCodeが起動する。


 20151123004245


 


C#プロジェクトの作成、実行、デバッグ


ここから、C#アプリケーションのプロジェクト、コードを作成する。


Visual Studio Codeの左上のアイコン「Explore」を押し、「Open Folder」を押す。
任意のフォルダを作成する。
ここでは、「HelloWorld」というフォルダを作成することにする。


作成したフォルダ名の横のアイコン「New File」を押し、csファイルを作成する。
ここでは、「HelloWorld.cs」というファイルを作成することにする。


HelloWorld.csに下記のコードを記述する。



using System;

namespace HelloWorld
{
public class HelloWorld
{
static public void Main()
{
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}


次に、作成したフォルダ名の横のアイコン「New File」を押し、csprojファイルを作成する。
ここでは、「HelloWorld.csproj」というファイルを作成することにする。


HelloWorld.csprojに下記の設定内容を記述する。



<Project DefaultTargets = "Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "HelloWorld.cs"/>
</ItemGroup>

<Target Name = "Build">
<!-- Run the Visual C# compilation using input files of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="full"
Optimize="no"
OutputAssembly="HelloWorld.exe" >

<!-- Set the OutputAssembly attribute of the CSC task to the name of the executable file that is created -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
</Target>
</Project>


 


プロジェクトファイルができたので、ビルドする。
Ctrl+Shift+pを押すと、コマンド入力欄が表示される。
「build」と入力し、「Run Build Task」を押す。
続けて、「Configure Task Runner」を押すと、「tasks.json」ファイルができる。


「tasks.json」ファイルは、プロジェクトをコンパイルするタスクの設定を書いておくファイル。
このファイル内を「CSC」で検索し、CSC用の設定のコメントアウトを解除して、有効化する。
(本記事の執筆時点では、109行目から128行目のコメントアウトを解除した。)
初期状態ではTypescript用の設定が有効化されているが、これはコメントアウトして無効化する。
さらに、「command」が「msbuild」となっている箇所を、「xbuild」に変更する。変更すると、下記のようになる。


{
"version": "0.1.0",
"command": "xbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings
// and infos in the output.
"problemMatcher": "$msCompile"
}
]
}

再度、Ctrl+Shift+p、「build」を入力し、「Run Build Task」を押す。
ビルドが成功し、「HelloWorld.exe」が出力される。


20151124214130


次に、デバッグする。
画面左側のアイコン「Debug」を押し、緑色三角のアイコン「Start」を押す。
デバッグの候補がいくつか表示されるので、「C# mono」を選択する。
「launch.json」が出力される。


「launch.json」を下記のように修正する。


{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "mono",
"request": "launch",
"program": "HelloWorld.exe",
"args": [],
"cwd": ".",
"runtimeExecutable": null
//"env": {}
},
{
"name": "Attach",
"type": "mono",
"request": "attach",
"address": "localhost",
"port": 5858
}
]
}

「launch.json」を編集後、再度、「Start」アイコンを押す。
プログラムが実行され、コンソール画面が立ち上がる。


20151124215108


ブレイクポイントを作成していないためこのようになったが、ブレイクポイントを作成しておけば、任意の箇所でブレイクできる。


20151124215707


 


参考:


Visual Studio Code を使ってUbuntu でC# コンソールアプリをデバッグ
CentOS 7 に Node.js をインストールする - Qiita
Installing ASP.NET 5 On Linux — ASP.NET 0.0.1 documentation


 


2015年11月13日金曜日

BaasBoxにDocumentを作成する。

オープンソースmBaasのBaasBoxにドキュメントを作成する。
BaasBoxはドキュメントデータベースを採用しており、作成したドキュメントを検索することもできる。

今回はターミナル上でBaasBoxのREST APIをたたく。

BassBoxのインストールはこちら。
 ちくわのあなから花が咲く。: オープンソースmBaasのBaasBoxをインストールする

 

ログイン

まずはログインから。adminユーザでログインする。

% curl http://localhost:9000/login -d "username=admin" -d "password=admin" -d "appcode=1234567890"

成功すると下記のJSONが返ってくる。

{
"data": {
"X-BB-SESSION": "2ffe6a91-71a6-4345-8a9c-9a227a2017ff",
"signUpDate": "2015-11-08T11:54:56.500+0900",
"user": {
"name": "admin",
"roles": [
{
"isrole": true,
"name": "administrator"
}
],
"status": "ACTIVE"
}
},
"http_code": 200,
"result": "ok"
}


 


コレクションの作成


ドキュメントを作成するコレクションを作成する。
下記では、「sample」というコレクションを作成する。


% curl -X POST http://localhost:9000/admin/collection/sample -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff


成功すると下記のJSONが返ってくる。



{
"data": "",
"http_code": 201,
"result": "ok"
}

 



ドキュメントの作成


コレクションができたら、コレクションにドキュメントを登録する。
URLに「sample」コレクションを指定する。


% curl -X POST http://localhost:9000/document/sample -d '{"No" : "1", "message" : "Hello."}' -H Content-type:application/json -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff


成功すると下記のJSONが返ってくる。



{
"data": {
"@class": "sample",
"@rid": "#25:0",
"@version": 1,
"No": "1",
"_author": "admin",
"_creation_date": "2015-11-11T01:03:09.904+0900",
"id": "eee962f4-929e-4377-adcf-e511b29e2e98",
"message": "Hello."
},
"http_code": 200,
"result": "ok"
}


別のドキュメントを作成する。


% curl -X POST http://localhost:9000/document/sample -d '{"No" : "2", "message" : "Hello. Hello."}' -H Content-type:application/json -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff


成功すると下記のJSONが返ってくる。



{
"data": {
"@class": "sample",
"@rid": "#25:1",
"@version": 1,
"No": "2",
"_author": "admin",
"_creation_date": "2015-11-11T01:04:08.144+0900",
"id": "f50947d4-cde7-4a7b-a017-ed72fae28e79",
"message": "Hello. Hello."
},
"http_code": 200,
"result": "ok"
}

 


ドキュメント数の出力


作成したドキュメント数を出力してみる。


% curl http://localhost:9000/document/sample/count -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff


成功すると下記のJSONが返ってくる。



{
"data": {
"count": 2
},
"http_code": 200,
"result": "ok"
}

 


ドキュメントの検索


ドキュメントを検索する。「No」が「1」のドキュメントを検索する。


% curl http://localhost:9000/document/sample?where=No='1' -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff -H X-BAASBOX-APPCODE:1234567890


成功すると下記のJSONが返ってくる。



{
"data": [
{
"@class": "sample",
"@rid": "#25:0",
"@version": 1,
"No": "1",
"_author": "admin",
"_creation_date": "2015-11-11T01:03:09.904+0900",
"id": "eee962f4-929e-4377-adcf-e511b29e2e98",
"message": "Hello."
}
],
"http_code": 200,
"result": "ok"
}

2015年11月9日月曜日

オープンソースmBaasのBaasBoxをインストールする

LinuxにオープンソースmBaasのBaasBoxをインストールする方法を記載する。

動作環境
・CentOS7

インストールするもの

インストールするものは以下。

  • JDK
  • Play Framework 
  • BaasBox

BaasBoxが動作するためには、JavaのフレームワークであるPlay Frameworkをインストールしなくてはならない。
さらに、Play FrameworkはJavaで実装されているため、JDKをインストールしなくてはならない。

なので、通常はJDK→Play Framework→BaasBoxの順でインストールをするのだが、
BaasBoxのReadMeで、JDK、Play Frameworkのバージョンが指定されているため、
先にBaasBoxのダウンロード、インストールを実施する。
BaasBoxのインストールは、JDK、Play Frameworkがインストールされていなくても 可能。

 

BaasBoxのインストール

BaasBoxはターミナル上でダウンロードする。

% wget --content-disposition http://www.baasbox.com/download/baasbox-stable.zip

執筆時点でのバージョンは0.9.4となっている。
ダウンロードされるファイル名は「baasbox-0.9.4.zip」。

Webサイトからもダウンロードできる。

The open source backend for your mobile app | BAASBOX

20151108222737

ダウンロード後、zipファイルを展開する。
展開後、任意のディレクトリに移動してもよい。

% unzip baasbox-0.9.4.zip

展開したディレクトリ内の「start」というシェルファイルを実行することによって、BaasBoxが起動する。
「start」には実行権限がないため、実行権限を与える。

% cd baasbox-0.9.4
% chmod +x ./start
% ./start

この時点では、JDK、Play Frameworkがインストールされていないため、起動しない。

 

JDKのインストール

BaasBoxのディレクトリに、「README.md」が格納されている。
このファイルの中を見てみると、BaasBoxを起動させるために、JDKはバージョン8が必要だと書かれている。
間違ってJREをインストールしないようにとも書かれている。注意すること。

README.mdには、ダウンロード先URLが書かれているため、そこからダウンロードする。

Java SE - Downloads | Oracle Technology Network | Oracle

開いたページの中央右側の「JDK DOWNLOAD」からJDKのダウンロードページに移動する。
「Accept License Agreement」をチェックし、Linuxのrpmファイルをダウンロードする。
執筆時点での最新バージョンは8u65であったため、「jdk-8u65-linux-x64.rpm」をダウンロードした。
(実行環境がが32bitか64bitかによってダウンロードするファイルが異なる)

20151108225801

ダウンロード後、下記のコマンドでインストールする。

% yum localinstall jdk-8u65-linux-x64.rpm

インストール完了後、Javaのバージョンを確認する。

% java -version

筆者の環境では、先にJDK7がインストールされていたため、バージョンが1.7であった。
環境変数JAVA_HOMEを設定し直し、JDK8に切り替える。

% vi /etc/profile.d/java.sh

#!/bin/bash
JAVA_HOME=/usr/java/jdk1.8.0_65
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
export CLASSPATH=.

設定用のシェルに実行権限を与える。

% chmod +x /etc/profile.d/java.sh

環境変数の変更を反映させるため、OSを再起動する。
再起動後、バージョンが1.8となっていることを確認する。

 

Play Frameworkのインストール

JDKと同様に「README.md」を確認すると、Play Frameworkのバージョンは2.2.4が指定されている。
同じくダウンロード先URLが書かれているため、そこから「play-2.2.4.zip」をダウンロードする。

Downloads

20151108233630

ダウンロード後、zipファイルを展開する。
展開後、作成されたディレクトリを下記のように移動し、リネームする。

% unzip play-2.2.4.zip
% mv play-2.2.4 /usr/local/lib
% cd /usr/local/lib
% ln –s play-2.2.4 play

環境変数PLAY_HOMEを設定し、Play Frameworkのコマンドを実行可能にする。

vi /etc/profile.d/play.sh

#!/bin/bash
PLAY_HOME=/usr/local/lib/play
PATH=$PATH:$PLAY_HOME
export PATH PLAY_HOME

設定用のシェルに実行権限を与え、OSを再起動する。

% chmod +x /etc/profile.d/java.sh

 

BaasBoxの起動、ログイン

下記のディレクトリに移動し、起動シェルを実行する。

% cd baasbox-0.9.4
% ./start

うまく起動していれば、下記URLにアクセスすることができる。

http://localhost:9000/

20151108235225

「Administration Login」をクリックする。

 

20151108235453

下記の様に入力し、「Login」をクリックする。

Username:admin
Passwork:admin
Application Code:1234567890

20151108235728

ログインに成功し、ダッシュボードが表示される。

Documentの作成はこちら。
ちくわのあなから花が咲く。: BaasBoxにDocumentを作成する。