TFSのビルドプロセスに引数を追加する
TFSのビルドプロセステンプレートに引数を追加するメモ
ここにパラメータを追加したい!
ビルドプロセステンプレートを開いて引数をクリックして
表示された引数一覧に1行追加します。
ビルドプロセステンプレートをチェックインしてから
ビルド設定を最新の情報に更新します。
すると先ほど追加したパラメータが表示されています。
これだけで追加完了です!
が、カテゴリが勝手に「その他」だし
引数名そのまま出ちゃってる。
カテゴリもちゃんとしたいし日本語で表示したい!
またビルドプロセステンプレートを開いてから引数を表示します。
引数一覧に「Metadata」というパラメータがあるので
その行の右のボタン(これボタンか?)をクリックします。
ダイアログが表示されるのでパラメータを追加して
項目を適当に埋めます。
するとこんな感じで新しいカテゴリができ
日本語で表示されるようになります。
Nancy試してみた
ASP.NETのNancyというフレームワークがあるとのことでちょっと試してみました。
こちらを見ていただければ概要は分かるかなっと思うので
ちょっと嵌ったところをば
嵌ったのはASP.NET MVCと同様にPost時(まあPostじゃなくてもいいけど)のモデルバインドを自動でやる方法です。
公式にも書いてあるので嵌るなって話ですけどね
ちゃんと見てなかったんじゃよ
まずモデル作ります。
public class Employee { public string Name { get; set; } public int Age { get; set; } }
適当です。
で、Controllerになる部分を作る
Get["create/"] = _ => { return View["Create"]; }; Post["create/"] = _ => { var emp = this.Bind<Employee>(); return View["Index"]; };
Postの方に注目、Bindというメソッドを使ってバインドするんですが
VisualStudioさんがそんなメソッドないよんって言います。
なぜに・・・ここでしばし悩む
あっ・・・拡張メソッドか!
using Nancy.ModelBinding;
これが必要なのでした。
そしてView
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form action="/create" method="post"> <p> 名前:<input type="text" id="name" name="Name" /> </p> <p> 年齢:<input type="text" id="age" name="Age" /> </p> <input type="submit" value="Post" /> </form> </body> </html>
ここでまた嵌る
name属性でバインドするんですが、MVCと違ってクラス名.プロパティ名じゃない!
これで
こうなる
ちゃんとバインドされてますねん♪
Team Explorer EverywhereでWorkSpaceを変更する
Team Explorer Everywhereを使ってEclipseでTFSを操作していると
VisualStudioとメニューなどの位置が違って悩むことがあります。
その一つがWorkSpaceの切り替え方法
VisualStudioだとソース管理エクスプローラだけど
Eclipseだとこんなところに
TFSのODataServiceを使ってみる
なんかインストールや設定手順がWebで知らべても良く分からなかったのでメモしておく
TFSがローカルにインストールされている前提で
別なサーバなどにインストールされていれば読み替えてください。
ここからダウンロードしてexeファイルを実行します。
特に迷うこともなくインストールできます。
インストール先のフォルダ
Codeフォルダの中身
ソースコードしか無い・・・
ということは、自分でIISにホストしろと
VisualStudioでODataTFS.slnファイルを開いてWebプロジェクトのプロパティを変更して
IISで実行されるように設定します。
アクセスするとこんな画面が表示されます。
これだけだとまだODataServiceにはアクセスできないので
Web.Configを変更します。
appsettings内の下記のアドレス部分を変更します。
<add key="ODataTFS.TfsServer" value="http://localhost:8080/tfs" />
それとHTTPSでなくHTTPでTFSにアクセスする場合は、セキュリティモードを「None」にします。
<security mode="None"></security>
プロジェクトの一覧が表示できました。
JavaScriptのfilterとmap
JavaScriptのArrayオブジェクトにはfilterとmapというメソッドがあります。
ECMAScript5で追加されたみたいなんですけど最近知りました(汗
filterは、LINQで言うWhereメソッドです。
こんな感じです。
var array = [1,2,3,4,5,6,7,8,9,10]; array.filter( function(x){ return x % 2 == 0} ) .forEach( function(x) { document.write(x); document.write("<br />"); });
結果はこうなります。
mapの方は、LINQで言うSelectメソッドです。
filterにつなげてみます。
var array = [1,2,3,4,5,6,7,8,9,10]; array.filter( function(x){ return x % 2 == 0} ) .map( function(x){ return x * x } ) .forEach( function(x) { document.write(x); document.write("<br />"); });
結果はこうなります。
for文などのループ処理よりは処理内容が明確になるし良いと思うんですが
実はこれらは、内部で新しい配列を作成して返しているので
効率的な観点で行くとよろしくないのです。
まあよほど大きな配列でなければ気にしなくてもいいんでしょうけどね
できれば外部イテレータにしてほしかった。
ExcelでWindows認証?
ExcelでVSTOを使ってWebAPIにアクセスしてデータを取得したいんだけど
Windows認証でエラーになってしまって困りました。
HttpClientクラスを使ってAPIにアクセスしていたので
実はExcelだろうとなんだろうとやり方同じなんですが
盛大に調査方法を誤って嵌りました。
HttpClientHandler handler = new HttpClientHandler(); handler.UseDefaultCredentials = true; var httpClient = new HttpClient( handler ); var task = httpClient.GetStringAsync( url );
HttpClientHandlerクラスを使えば良かったと
普通にWebアプリだとWindows認証の時は、なにもしないに等しいのに
401エラーが返ってきてしまって
ExcelからはWindows認証できないのかと思っちゃいまいたよ
Jasmineの続き
前回、中途半端に記事をリリースしてしまったのでフォローをば
前回の記事
ajaxメソッドが失敗した時のテストが全然テストになっていない上にテストを実行すると
Alertダイアログが出てしまうという・・・
修正します。
it("getDataでデータの取得に失敗するとAlertが表示される", function () { spyOn($, "ajax").andCallFake( function (pos) { var d = $.Deferred(); d.reject("error"); return d.promise(); }); spyOn(window, "alert"); details.getData("http://test.com",1); expect(window.alert).toHaveBeenCalledWith("error"); });
alertメソッドをモックします。これでalertダイアログは出ません。
テストは、alertメソッドが指定した引数を伴って呼ばれたかで成否を判定しています。
という感じで以上!