ラベル プロコン資料 の投稿を表示しています。 すべての投稿を表示
ラベル プロコン資料 の投稿を表示しています。 すべての投稿を表示

2009年7月31日金曜日

テクシンのメモ

今年の報告論文は、、、内容をVSSと自動ビルドとリリース連動と宣言したので、書くときのいろいろメモ。


本書ではバージョン管理システムを示しプロジェクトでの有用性を示す。

Visual Studio .net親和性

どのようなプロジェクトでも発生するリリースの管理。

他のものとの連携を除き構成管理のみ取り上げる。
プロジェクトのみでなく個人的な運用ツールとしても活用可能。

1.はじめに

2.環境および対象範囲

3.構成管理の概要

4.リリース管理の概要

5.多重管理の回避と改修の競合対応
 ・リリース時期、頻度の違い
 ・要望対応と不具合対応の競合
 ・対象モジュール分け
 
6.リリースミス防止策
 ・リリースミス
   →リリースファイルの更新漏れ
   →ソースファイルのバージョン違い(古すぎる/新しすぎるソース)
 ・防止策
   →ダブルチェック:リリース依頼書(Excel)とソースファイル(VSS)とのマッチングチェック
    VSSの履歴・ソースファイルのバージョン抽出・excelとの申請チェック

7.今後の課題
 改修が競合した時の改修内容の横展。
 同一レーンに入れる粒度。
 レーンを増設、撤去するタイミングの取り決め
 
8.おわりに




あーーーーーどうしても書きたくないーーーーー、構成のイメージが全く思い浮かばないーーーー。めんどいーーーーーーー。

2008年7月28日月曜日

グラフ描画結果


ZedGraphのライブラリを使ったグラフを書いてみると上のように表示された。
ページにZedGraphWebパーツを配置し、RenderGraphイベントに以下のようなメソッドを登録し、



protected void ZedGraphWeb_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
{
if (GridView3.DataSource == null)
{
return;
}
ProjectDataSet.ProjectRemainWorkTimeDataTable prwtdt = (ProjectDataSet.ProjectRemainWorkTimeDataTable)GridView3.DataSource;
List<DateTime> listdt = new List<DateTime>();
List<double> listreminedWork= new List<double>();
for (int i = 0; i < prwtdt.Count; i++)
{
listdt.Add(prwtdt[i].ReportDate);
listreminedWork.Add(prwtdt[i].RemainTime);
}
BurnDownChart.CreateChart(pane[0], listdt.ToArray(), listreminedWork.ToArray());

}



BurnDownChartクラスはこんな感じにしてみました。

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using ZedGraph;
using ZedGraph.Web;

/// <summary>
/// BurnDownChart の概要の説明です
/// </summary>
public class BurnDownChart
{
public BurnDownChart()
{
//
// TODO: コンストラクタ ロジックをここに追加します
//
}
static public void CreateChart(GraphPane gp,DateTime[] dt,double[] remainwork)
{

// Set the titles and axis labels
gp.Title.Text = "バーンダウンチャート";
gp.XAxis.Title.Text = "日付";
gp.YAxis.Title.Text = "残日数";

// Make up some data points based on the Sine function
string[] datename = new string[dt.Length];
for (int i = 0; i < dt.Length; i++)
{
datename[i] = dt[i].ToShortDateString();
}

LineItem myCurve = gp.AddCurve("残日数",
null,remainwork, System.Drawing.Color.Red, SymbolType.Diamond);
myCurve.Line.IsSmooth = false;
// Set the XAxis to date type
gp.XAxis.Type = AxisType.Text;
gp.XAxis.Scale.TextLabels = datename;
gp.XAxis.Scale.FontSpec.Angle = 40;
gp.AxisChange();
}
}


X軸をXDate型(ZedGraph独自のdouble型変数に格納する日付)のグラフのサンプルは以下。
http://zedgraph.org/wiki/index.php?title=Tutorial:Date_Axis_Chart_Demo

ただ、これで表示すると、5月28日が、28-5みたいに分けわからない形式になるため、この方法を採用せず。
X軸はText型のものにしました。参考にしたサンプルは以下。
http://zedgraph.org/wiki/index.php?title=Tutorial:Text_Axis_Chart_Demo

2008年7月23日水曜日

ADO.NETのDBがSQLiteのもの

http://sqlite.phxsoftware.com/
が、紹介で、ダウンロード元が以下
http://sourceforge.net/projects/sqlite-dotnet2
で、導入してみると、Visual Studio 2008 Standard Editionではこんな感じに。




データソースの選択にSQLiteが出てくる。




詳細設定の一番下の箱など日本語で出てほしいところは出ませんが、特に問題にならないと思う。



2008年7月22日火曜日

ASP.NETのメモ(セッションステート外部ストア):保留。

今回は、セッションステートの外部ストア化です。
Linux+Mono+xsp2で動かすためには、SQL Serverと決別しなきゃいけないので、セッション管理もSQL Serverから別のものに移さなきゃならない。

幸いASP.NET 2.0では、この管理も他と同様にProviderパターン(Template Methodパターン?)
で、外部からの注入が可能となっています。
で、これを使ってやるのですが、難航しています。
http://msdn.microsoft.com/ja-jp/library/ms178588.aspx
と同様にすれば、別のセッション情報をDBで管理できるようになったのだけれど、セッションidがURLに出てしまう。(Cookieless=trueにしているから。)
サンプルプログラムはちゃんと読んだわけではないのですが、DBデータの挙動を見ているとCookielessをfalseにすると、DBに書き出されていないみたい。

ま、今回作るプログラムは、5画面以上の遷移や、100文字以上の入力がないので、Sessionは、Inprocモードでやることにします。

2008年7月21日月曜日

ASP.NETのメモ(メンバシッププロバイダ)

カスタムメンバシッププロバイダを使ったログインの作成

Visual Studio2008を起動して、新しいサイトを作成

.NET Framework2.0を選択して、


デフォルトページ以外にも、2つのページを作成。

まずは、ログイン画面。


同じ要領で、ユーザページ(ログイン後の画面)を作成する。


続いてカスタムメンバシッププロバイダを作成する。


ここで「はい」を選択し、App_Codeに入れる。


クラスの継承元[:MembershipProvider]を入力し、



そのキーワード(MemberhsipProvier)の上で右クリック、
継承クラスの実装を選択して、


abstractのメソッドを実装するスケルトンを作成。
そのあと、直近で利用するValidateUser()のみをちょっと
実装する。




続いてWeb.configの変更。元のWeb.configからの変更箇所は、
authenticationタグ(変更) 、membershipタグ(追加)、
authorizationタグ(追加)、 下のlocationタグ(追加)
です。





ログイン画面、ログインパーツを置いてみます。



置いたログインパーツをクリックしてコード編集画面へ、


コード編集画面で、ログイン部分を記述


ログインパーツで入力されたもので認証を呼び出す。



これでコード修正おわり。
あとはF5で実行。

OKを選択し、動作確認。
Default.aspxは未ログインでも表示できること、
UserPage.aspxを未ログイン状態で表示するとログインページ
に移動し、ログイン入力すると、UserPage.aspxを表示すること、
ログイン後は、UserPage.aspxを直接入力しても表示されることを確認する。

2008年7月14日月曜日

オープンソースのグラフ作成用Dll

グラフ作成http://www.atmarkit.co.jp/fdotnet/vblab/extcompo_02/zedgraph_01.html
http://sourceforge.net/project/showfiles.php?group_id=114675&package_id=184194
zedgraph_dll_v514_464をダウンロード
参照の追加,zedgraph_dll_v5.1.4フォルダ直下の2つのdllとも。画像のキャッシュフォルダとして、ZedGraphImagesフォルダを作成。(コントロールを置くappxページと同じフォルダに)ツールボックスにZedGraphタブを追加し、アイテム選択で"ZedGraph.Web.dll"を選択。aspxページにZedGraphWebパーツを配置、RenderGraphイベントハンドラを追加。(以降このイベントハンドラをZedGraphWeb1_RenderGraphとする)ZedGraphWeb1_RenderGraphイベントハンドラはこんな型になるので、外部クラスで書かせてみる。(当然Page_Loadが動いた後にRenderGraphが動く(はず)なので、Page_Loadで生成したデータをインスタンス変数を介してRenderGraphで利用できそう。) protected void ZedGraphWeb1_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
{
BurnOutGraph.CreateChart(pane[0]);
}

public static class BurnOutGraph
{
// Call this method from the Form_Load method, passing your ZedGraphControl instance
public static void CreateChart(GraphPane zgc)
{
// Get a reference to the GraphPane
GraphPane myPane = zgc;



GraphPane myPane = zgc; :以降は、http://zedgraph.org/wiki/index.php?title=Multi-Y_Demoのページと同様で作れそう。


他、ユーザ管理の方法。用意されている簡単に仕上げるためにVisual Studio標準のLoginパーツを使いたい。ただ、完成版では、Linux(mono+xsp2)でも動かせるようにしたいので、DBはSQL Serverの他、SQLiteでも動作可能としたい。(なので、SQL ServerべったりっぽいLINQは今回は使わないようにしようと考えてる。)で、カスタムのRoleProviderとMembershipProviderを作って、web.configで指定してやればよいはずなんだけど、http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspxのページが英語。abstractなクラスを継承し、abstractなメソッドを実装すればインスタンスが作れて、ちゃんと動きそうなんだけど。
http://d.hatena.ne.jp/hate666komei/20061219/1166516102では、プログラミングASP.NET 2.0の P.818から書いてあるって書いてあるけど、あの本は会社に置きっぱなしにしているので手元にない。
まだ、時間はあるからあんまりあせらなくてもいいか。

2008年6月25日水曜日

プロコンのデータベース

今年は、プログラムの方に参加しよう。
せっかくもらったVisual Studio2008があるので、これを使おう(LINQとかXAMLとか)
DB:SQL Server 2005 Express SP2
開発言語:C#
アプリ形態:Windows Application(XAML:なんかグラフを書かなきゃいけないみたいだから)
とりあえずテーブル定義だけ、こんな感じでやってみます。


データ取得は、作成したLinQtoSQLクラスから以下のようにSQLっぽい書き方で取れるみたい。
DataClasses1DataContext dtc = new DataClasses1DataContext();
var query = from p in dtc.Project
where p.Id == 1
orderby p.Name
select new{p.Name,p.Id};


最後に折れ線グラフについては、xamlで、 以下のようにCanvasの中に名前付きPolylineを埋めておき




プログラムの中で、以下のように属性を変更しちゃえばかけるみたい。
     polyline1.Points.Clear();
Random rand=new Random();
for (int i=0;i<10;i++) { polyline1.Points.Add(new Point(i * 10, rand.Next(100))); }


2008/7/23 追記:
LinuxのMONO+XSP2でも動かせるようにするので大幅方針転換。
・利用データベースに(ゆくゆくは)SQLiteを追加できるようにしておく。
・LINQ2SQLはやめて、DataSetとDataAdapterを使ったADO.NETの書き方にする。
 理由は、LINQ2SQLがSQL Server専用であることと、xsp2では(たぶん)対応していないことから。
・PolyLineを使うのではなく、オープンソースのグラフ描画ライブラリを使う。
 理由は、描画ライブラリの方が簡単そうだから。
・データベースの若干の見直し。
 TaskWorkerテーブルの列をTaskId,WorkerIdのみにして、この2つの要素を複合したものを主キーとする。
 WorkTimeテーブルの列からTaskWorkerIdを削除、TaskId,WorkerId列を追加し、この列を複合の外部キーとする。
  (参照元のキーは、TaskWorkerのTaskId,WorkerId)