2016年11月16日水曜日

【ESXi】【Windows】ディスク容量拡張

ESXi6.0上のゲストOS(Windows10)の容量がなくなったのでディスクを拡張してみた。



1. ゲストOSをシャットダウンしておく。

2. VSphere Host clientで該当の仮想マシンの[設定の編集]メニューを開く。

3.以下のようにハードディスク1の30GBから40GBに変更し、「保存」ボタン押下。


4. OSを起動し、Winロゴキー+X(Windows10の場合)を押下し、ディスクの管理を選択。


29.56GBの領域に9.43GBの領域をつなげたいのだが、上記のように隣接していない場合は簡単に結合できない。以下のツールを使用する。

EaseUS Partition Master(以下epmとする)

5. epmをダウンロードして、インストール。

6. epmを起動し、下から2番目のパーティションを選択し、右クリック。

7. 「パーティションのサイズ調整/移動」を選択。

8. 「パーティションのサイズ調整/移動」画面上部の青いバーをドラッグして右に移動


9. 同様に真ん中のパーティションも移動する。

10.上記手順で29.56GBと9.43GBが隣接する。

11. 29.56GBのパーティションを選択し、右クリック。

12. 「パーティションのサイズ調整/移動」を選択。

13. 画面上部の青いバーの右端のつまみをドラッグして、容量を拡張する。
以下のように38.98GBのパーティションになる。


14. メインメニューの [一般]-[変更を適用]を選択する。
⇒再起動がかかり、しばらくするとパーティションが変更された状態で再起動される。


  • なぜか一部ゴミ領域ができてしまった。
  • それとたぶん手順ミスのせいで、回復パーティションがE:、F:になった?

備考
VMWareToolsが入ってなかったせいか、最初は9.43GBの領域が認識されなかった。VMWareToolsインストール後、認識された。


2016年11月12日土曜日

【C#】ループ内で複数処理と複数ループの速度差

■共通の事前処理(20億個のデータを用意しておく)
◆ソースコード
var list = Enumerable.Repeat(1, 1000 * 1000 * 200).ToList(); // 大量データ生成

① ForEach、ラムダを2回で、ループ内処理を1回
◆ソースコード
int sum1 = 0, sum2 = 0;
list.ForEach((it) => sum1 += it);
list.ForEach((it) => sum2 += it);
◆結果
 1回目:Time=01.97秒, sum1=200000000, sum2=200000000
 2回目:Time=02.09秒, sum1=200000000, sum2=200000000

② ForEach、ラムダを1回で、ループ内処理を2回
◆ソースコード
int sum1 = 0, sum2 = 0;
list.ForEach((it) => { sum1 += it; sum2 += it; } );
◆結果
  1回目:Time=01.08秒, sum1=200000000, sum2=200000000
  2回目:Time=01.03秒, sum1=200000000, sum2=200000000

③ forループを2回で、ループ内処理を1回
◆ソースコード
int sum1 = 0, sum2 = 0;
for (int i = 0; i < list.Count; i++) sum1 += list[i];
for (int i = 0; i < list.Count; i++) sum2 += list[i];
◆結果
  1回目:Time=01.61秒, sum1=200000000, sum2=200000000
  2回目:Time=01.45秒, sum1=200000000, sum2=200000000

④ forループを1回で、ループ内処理を2回
◆ソースコード
int sum1 = 0, sum2 = 0;
for (int i = 0; i < list.Count; i++) { sum1 += list[i]; sum2 += list[i]; }
◆結果
  1回目:Time=00.85秒, sum1=200000000, sum2=200000000
  2回目:Time=00.78秒, sum1=200000000, sum2=200000000

⑤ Aggregateを2回で、ループ内処理を1回(用途が適切でないと思うが、見てみる)
◆ソースコード
var sum1 = list.Aggregate((elem1, elem2) => elem1 + elem2);
var sum2 = list.Aggregate((elem1, elem2) => elem1 + elem2);
◆結果
  1回目:Time=08.39秒, sum1=200000000, sum2=200000000
  2回目:Time=05.65秒, sum1=200000000, sum2=200000000

■結論
当然と言えば、当然だが、処理時間は2倍になる。
コードの読みやすさは、人によって違うだろうけど、①かなぁ?

◎環境
 ●速度確認した仮想マシン
  • CPU:4
  • メモリ:2GB
  • OS:Windows10
  • 仮想マシン:VMWare ESXi6.0U2
  • Visual Studio 2015 Enterprise(試用版)
  • 構成:Releaseでビルド
  • デバッグ情報(ビルドの詳細設定):none
  • Visual Studio ホスティングプロセス:無効
 ●ホストPCの性能(参考)
  • CPU:Intel Core i5-4250U
  • メモリ:16GB
  • ドライブ:SSD

2016年11月9日水曜日

【SQL Server】ER図作成&DDLを手動で書かずにテーブル作成

◆メニュー
 【SQL Server】開発環境構築(ER図作成にSSMSを使用)

◆概要
SSMSでER図を作成し、DDL文を手動で作成することなく、テーブルを作成する。

◆事前準備
 下記を参考にして、SQL Serverをインストールし、ER図用のインスタンスを生成しておく。

 【SQL Server】 【Win10】Express2016&SSMS インストール
 【SQL Server】新規インスタンス作成(ER図作成用)

  補足事項

  • インスタンス作成は任意。(デフォルトのインスタンスでもOK)
  • Win10でなくてもOK。
  • ExpressでなくてもOK。
  • SQL Server2016でなくてもOK。

◆手順
1. Winロゴキーを押下し、「ssms」と入力。「Microsoft SQL Server Management Studio」を選択。

2. ERDIAGRAMインスタンスに接続。


3. 右クリックして、「新しいデータベース」を選択。

4. 「データベース名」に「DB_EMPLOYEES」と入力。

5. 「OK」ボタンを押下。

6. オブジェクトエクスプローラーで、[データベース]-[DB_EMPLOYEES]-[データベースダイアグラム]の順に選択。

7. 「はい」を選択。

8. 「データベースダイアグラム」を右クリックし、「新しいデータベースダイアグラム」を選択。

9. 「閉じる」ボタン押下。

10. エディタ上を右クリックし、「新しいテーブル」を選択。

11. 「T_社員」と入力。

12. 下記のようにテーブル内に「社員ID」「姓」「名」「所属部署ID」とそのデータ型を入力する。

13. 同様に「T_部署」テーブルを作成し、「部署ID」「部署名」を入力する。

14. 「社員ID」を右クリックし、「主キーの設定」を選択。
  同様に「部署ID」を右クリックし、「主キーの設定」を選択。

15. 「T_社員」テーブルを右クリックし、「リレーションシップ」を選択。

16. 「追加」ボタン押下。

17. 「テーブルと列の設定」の右側の「...」ボタンを押下。

18. 「主キーテーブル」を「T_部署」に、主キーを「部署ID」にする。同様に外部キーテーブルを
 「T_社員」、外部キーを「所属部署ID」にして、「OK」ボタンを押下する。

19. すべて保存(Ctrl+Shift+Sキー)を押下する。

20. 適切なファイル名を入力し、「OK」ボタンを押下。例)ER図_従業員

21. 「はい」ボタンを押下。

22. オブジェクトエクスプローラーで、[データベース]-[DB_EMPLOYEES]-[テーブル]の順に選択。

24. 「dbo.T_社員」を右クリックして「上位200行の編集」を選択。同様に、「dbo.T_部署」に「上位200行の編集」を選択。

25. テーブルが作成され、以下のように入力可能となる。(下記は、入力する必要はない)

以上

2016年11月7日月曜日

【SQL Server】開発環境構築(ER図作成にSSMSを使用)

◆概要
 SQL Serverでの開発の流れをまとめる。その際、SSMS(Microsoft SQL Server Management Studio)でER図を作成することを前提とする。

◆設計の流れ
主題とは離れるが、設計の全体像は【設計】設計・開発・試験の流れと設計書

◆開発環境・試験環境構築の方針
 ER図作成・単体試験・結合試験・総合試験をそれぞれ別のSQL Serverインスタンスとする。
場合によっては、もっとたくさん環境が必要かもしれないし、少ない場合もある。
(結合試験無しとか、総合試験無しとか、お客さん試験環境有りとか、運用環境有りとか)
ただし、環境を増やすと保守コストがかかるので注意が必要。

◆環境(DB)
  • 開発メンバのPC(DB開発者のみでも良い。アプリケーション開発者は必要に応じて。)
    • ER図作成用インスタンス
    • アプリ開発用インスタンス
    • 単体試験用インスタンス(ほとんどの場合アプリ開発用と同一でいい)
  • 結合試験PC
    • 結合試験用インスタンス
  • 総合試験PC
    • 総合試験用インスタンス(実機を1セットは必須。ESXiなどのVMで複数セット作っておくと並列で試験できる。しかし、保守コストがかかる。)
◆環境(アプリ)
  • Visual Studio Pro以上が最低1台欲しい。DBインスタンスからC#コードの変換がかなり楽。Expressでもできると思うが、GUIではできず、結構面倒臭いと思う。Community版は未調査。欲を言うとより高価なEditionのFakesや自動テストコード作成機能も欲しい。
◆環境構築手順
  1. SQL Server&SSMS(SQL Server Management Studio)インストール
  2. ER図作成用インスタンス作成
  3. ER図作成&DDLを手動で書かずにテーブル作成
  4. DDL文をエクスポート(SQL Server Management Studio)
  5. DDL文をSVNやGitへ登録
  6. (必要に応じて)開発用DBインスタンス作成
  7. DBからC#コード生成DBからC#コード更新(上書き)
  8. 単体試験環境/結合試験環境/総合試験へ反映
  • 一度構築完了したら、その後、1,2,6は不要。
  • 設計では3を実施。
  • 開発では、4,7。ただし、設計漏れ・設計ミスがあったら、3,4,7を行う。
  • 試験では、8のみ。ただし、テーブル設計ミスなどのバグがあったら3,4,7,8を行う。
※ ER図作成をSQL Serverで行うなら、上記と思われる。
 (SQL Serverは初めて使用するので、手探りで手順を確立中。)

◆基盤作業
 基盤作業も平行して作業を進める。
  • フェイルオーバの要否でかなり工数が違ってくる。手順自体はさほど大変でなくても負荷かけた状態でフェイルオーバする試験などは負荷をかける準備が大変。
  • バックアップの方式(差分バックアップの有無)、圧縮の有無、容量設計、…
◆基盤手順


【SQL Server】新規インスタンス作成(ER図作成用)

◆メニュー
 【SQL Server】開発環境構築(ER図作成にSSMSを使用)

◆SSMSでもER図が描けて、そのままDBに反映可能とのことなので、使ってみる。
事前準備:SQL Server(ExpressでもOK)・SSMSがインストールされていること。
 手順は【SQL Server】 【Win10】Express2016 インストールを参照のこと。

1. エクスプローラを起動し、「C:\SQLServer2016Meia\Express」へ移動し、SETUP.exeを起動

2. 「はい」を選択。(OSによってウィンドウが異なる) 

3. 一番上の 「SQL Serverの新規スタンドアロン~」をクリック。

4. 必要に応じて、チェックボックスをONにして、「次へ」ボタン押下。

5. しばらく待つ。

6. 「次へ」ボタン押下。

7. 「SQL Server 2016 の新規インストールを実行する」を選択し、「次へ」ボタン押下。

8. チェックボックスをONにして、「次へ」ボタン押下。

9. 「次へ」ボタン押下。

10. 「名前付きインスタンス」を選択し、「ERDIAGRAM」を入力し、「次へ」ボタン押下。

11. 「次へ」ボタン押下。

12. 必要に応じて、カスタマイズしてから「次へ」ボタン押下。

13. しばらく待つ。

14. 「閉じる」ボタン押下。

15. 右上の「×」ボタン押下。

16. Winキーを押下してssmsを入力し、Enter(Microsoft SQL Server Management Studio選択)。

17. 上記で作成したERDIAGRAMへ接続。(ドロップダウンリストから<参照>で選択可能)

18. ERDIAGRAMへ接続完了。(ERDIAGRAMだけでなく、SQLEXPRESSも接続できるはず)

以上。

2016年11月3日木曜日

【SQL Server】 【Win10】Express2016&SSMS インストール

◆メニュー
 【SQL Server】開発環境構築(ER図作成にSSMSを使用)

SQL Server ExpressをWindows10 Pro(x64)にインストールした。その時の手順。

◆手順
1. SQLServer2016-SSEI-Expr.exeをダウンロードして、実行。

以下のエラーが出た場合、ウィンドウ内のリンク先に同名のexeがあるので、それを実行。
以下のエラーが出なかった場合は手順2へ進む。
エラー:このバージョンのインストーラーはサポートされなくなりました。ダウンロード サイトからもう一度ダウンロードしてください。

2. 「基本」を選択。

2. 「同意する」を選択。

3. 「インストール」 を選択。

4. しばらく待つ。(5分~40分位?)

5. 「SSMSのインストール」を選択。(主にSQLクエリ実行などで使用。大抵の場合は入れておいていいと思う。)

6. 「SQL Server Management Studio (XX.X.X)のダウンロード」をクリック。
 その後、上記の画面の「閉じる」押下。

7. 「保存」を選択。

8. エクスプローラから「SSMS-Setup-JPN.exe」を実行。

9. 「インストール」を押下。

10. しばらく待つ。(5分~40分位?)

11. 「閉じる」を押下。

12. スタートメニュー 、Microsoft SQL Server 2016、Microsoft SQL Server Management Studioの順にクリック。
または、ウィンドウズロゴキー押下して、ssmsと入力し、Enter押下。(下記参照)

13. 「サーバー名」欄の右端の V を選択。

14. 「<参照..>」を選択。

15. データベース エンジン配下の「ホスト名\SQLEXPRESS」を選択し、「OK」ボタン押下。

16. 「接続(C)」ボタン押下。

17. 完了。

◆環境
 ■対象のPCは仮想マシンで、以下。
  • CPU数:4
  • メモリ:2GB
  • OS:Windows10 Pro
  • 仮想マシン:VMWare ESXi6.0上の仮想マシン
■ホストPCの性能(参考)
  • CPU:Intel Core i5-4250U(2Core 2スレッド)
  • メモリ:16GB
  • ドライブ:SSD(ウルトラ II mSATA SSD SDMSATA-512G-G25C)
  • ハイパーバイザー:VMWare ESXi 6.0