2015年8月31日月曜日

Git スタートアップ


Git使ってソース管理することに、Webサーバ立ち上げて、HTTP経由でPull,Pushできればいいのだけど、Httpより早いWindows共有フォルダで管理します。以下、インストメモ


1. インストール
 1.1. Gitインストール
  以下のサイトからインストール
  https://git-for-windows.github.io/

 1.2. TortoiseGitインストール
  GitをGUIベースで簡単に操作するためのツール
  https://tortoisegit.org/download/

 1.3. TortoiseGit日本語パッケージインストール
  https://tortoisegit.org/download/

 1.4. Gitの言語、ユーザーアカウントの設定
  TortoiseGitの設定から
  General > Language:日本語(日本)
  Git > ユーザー情報:名前、メール

2. リポジトリ作成
 2.1. Windows共有フォルダ作成
  新しいフォルダをメンバーが見える場所へ作成
  hogehoge.git
  フォルダの名前には「.git」を付けるべし


 2.2. リポジトリ作成
  フォルダを右クリックし、Git ここにリポジトリを作成を選択


  リポジトリの作成ダイアログで[Bareの生成]にチェックし[OK]ボタンを選択

これでOK!

2015年8月17日月曜日

Windows Azure モバイルサービス作成

WindowsAzureにモバイルサービスを作成する際の手順をまとめた。

ポイントはバックエンドにJavaScript
SQLデータベースサーバーの照合順序


■モバイルサービスの作成
 url:debug-hogehoge
 データベース:新しいSQLデータベースインスタンスを作成する。
 地域:西日本
 バックエンド:JavaScript
  ※選択肢はJavaScriptとC#の2つ、C#にするとWebAPIが利用できない。
 プッシュの詳細設定の構成:チェック

■通知ハブ
 名前空間:新しい名前空間を作成する
 名前空間名:debug-hogehoge
 通知ハブ名:debug-hogehoge

■データベースの設定の指定
 名前:debug-machisapo_db
 サーバー:新しいSQLデータベースサーバー
 サーバーログイン名:
 サーバーログインパスワード:
 パスワードの確認:
 地域:日本(西)
 データベースの詳細設定を構成します:チェック

■データベースの詳細設定
 サービスプラン:BASIC
 パフォーマンスレベル:Basic
 照合順序:Japanese_XJIS_100_CI_AI
  CI(Case Insensitive)
   大文字、小文字を区別しない。全角アルファベットの大文字、小文字も区別しない。 例:「A」と「a」は同じ
  AI(Accent Insensitive)
   アクセント、濁音、破裂音を区別しない。半角カナの濁音、破裂音も区別しない。 例:「ハ」、「バ」、「パ」は同じ

照合順序確認SQL
Select DATABASEPROPERTYEX('db_name', 'collation')

2015年8月7日金曜日

JenkinsとActiveDirectory認証をつなげる


Jenkinsにログイン機能を実装する。独自にユーザ管理するとメンバー追加等のメンテナンスに時間を取られるので、社内のActive Directoryと連携することに。


環境
 ・ OS:Windows Server 2012 Standard
 ・ Jenkins:1.6.23


大まかな手順
 1. プロキシ設定
 2. Active Directory plugin インストール
 3. インストールしたプラグインの確認
 4. Active Directory pluginの設定
 5. 動作確認



1. プロキシ設定
 社内LAN上にあるJenkinsにhttps経由でプラグインをインストールできるようプロキシを設定する。
  [Jenkinsの管理] > [プラグインの管理]から
  



2. Active Directory plugin インストール
 フィルターにActiveを入力し、一覧から[Active Directory plugin]を選択。そして、インストール。


3. インストールしたプラグインの確認


4. Active Directory pluginの設定
  [Jenkinsの管理] > [グローバルセキュリティの設定]


5. 動作確認
 Jenkinsに再度アクセス




 成功!!


2015年8月5日水曜日

VisualStudio2015 ASP.NET5 MVC6

あるユーザ様へデータ登録用のWebサイトを提供することになった。ここ6,7年Web開発から遠ざかっていたこともあり、顧客要件を満たし、納期内、予算内の開発を手助けしてくれる開発技術がわからない・・・。

WebサイトをWindowsAzure上に構築するため、VisualStudio系のインフラを採用する。あとは何で作るか?

・ASP.NET5
クロスプラットフォーム
・SilverLight
クロスブラウザサポート。Windows10Edgeのサポートなし
・WPF,WinForm
Windowsシリーズ.NETFrameworkが必要

机上であれやこれやと想像しても埒があかないので、実際に触れてみることに。
2015年7月にリリースされたVisualStudio2015、ASP.NET5がどんな動きをするのか?遊んでみました。

目的
 MSDNのサイトにあるTodoListサンプルサイトを作る。

ターゲット
 VisualStudio2015
 .NETFramework4.5.1
 MVC6

大まかな流れ
 1.プロジェクトの作成
 2.DB接続の設定
 3.動作確認
 4.ソース編集
 5.TodoListテーブル作成
 6.EntityFramework7.0のマイグレーション
 7.動作確認

1.プロジェクトの作成
 プロジェクト:ASP.NET Webアプリケーション
 ASP.NET5テンプレート:WebApplication
 ※.NETFrameworkを4.6に指定したがASP.NET5.0は4.5.1にしか対応していない。
  だから、project.jsonはDNX451。

 Coreは対象としないので、project.jsonの"frameworks"からdnxcore50削除。

"frameworks": {
"dnx451": {}
},

2.DB接続の設定
 config.jsonにあるDB接続を以下の設定とする。
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=.\\SQLEXPRESS;Database=aspnet5-TodoList;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
  }


3.動作確認
  ここまで至って簡単な作業にも関わらず。以下のエラーで動かず。

  The current runtime target framework is not compatible with 'TodoList'.

  Current runtime Target Framework: 'DNX,Version=v4.5 (dnx45)'
   Type: CLR
   Architecture: x86
   Version: 1.0.0-beta6-12256

  Please make sure the runtime matches a framework specified in project.json
  
  VS2015をインストール後に、dnvx,dnx周りを触っていたからか?
  ひとまずDNXに関するフォルダ%USERPROFILE%\.dnxフォルダや環境変数を削除
  その後、VS2015再起動し実行したら動作した。


4.ソース編集
  サンプルソース、チャートリアルは以下のサイトから
  http://www.asp.net/vnext/overview/aspnet-vnext/vc

  IdentitiyModels.cs編集後に実行し、エラーとなればOK!



5.TodoListテーブル作成
   ApplicationDbContextModelSnapshot.csサイトに以下のコードを追記

builder.Entity("TodoList.Models.TodoItem", b =>
    {
        b.Property<int>("Id")
            .GenerateValuesOnAdd();
        b.Property<bool>("IsDone");
        b.Property<int>("Priority");
        b.Property<string>("Title");
        b.Key("Id");
    });

と書いてある。まずここでGenerateValuesがエラーとなる。
周りのコードを見るとGenerateValue、sがない。
sだけ削除したらうまくいった。


 6.EntityFramework7.0のマイグレーション
  ここからが本題。
  まずはEntityFrameworkにはテーブルを作成してからプログラムコードを書くのではなく。
  プログラムコードを書きテーブルを作成するという考え方「コードファースト」がある。
  
  プログラムの更新、つまりバージョン毎に異なるテーブル構造を比較し、差分のみバージョンアップしてくれるのがイグレーション。

  マイグレーション用コマンドを管理者のコマンドラインから実行するが・・
  dnx . ef
dnxなんてない!と怒られる。
  where dnx
確かにない!

  したがってdnvmをコマンドラインからアップグレード
  dnvm upgrade
  where dnx
ようやく出現
  C:\Users\%USERPROFILE%\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnx.exe

  いける!
  dnx . ef
やっぱりダメ、エラー内容見るとどうやらtry dnu restore

  指示通りに

  dnu restore
  cd "Webソリューションフォルダ"
  dnx . web migration add newTodoList
  dnx . web migration apply

  ローカルDBを確認すると、TodoListテーブルができてます。


 7.動作確認
   ここでVS2015に戻り、再度コンパイルすると。
   なぜか参照設定がないと約2000個のエラーが発生。
   dnu restoreの際に project.lock.jsonファイルが書き換わっている。
   書き換わっている箇所を見ると参照の順番が異なるだけで、参照そのものは変わっていない。
   #それでもだめなの?
   思い切ってproject.lock.jsonを削除しVS2015を再起動。
   project.lock.jsonをVS2015が再作成し、コンパイルエラー回避!
   というわけで、再実行し追加したTodoListが無事動きました。



おまけ
   作業の途中で削除した環境変数を確認すると復活してました。
   VS2015もしくはdnvm upgradeが追加したのかな?


感想、やっぱりASP.NETは閲覧専用だな!データ登録用のサイトには向いとらん!