2010. 4. 19. 11:35
Spring.Net 프레임워크를 사용하기 위해 
app.config 또는 web.config에서 SectionGroup을 선언해주어야 한다.

그리고 이 선언을 통하여 하단부에 SectionGroup에 대한 본문(?)을 생성해야한다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
     <!-- 어플리케이션에서 사용될 object를 생성하기 위한 설정  -->
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
    <sectionGroup name="common">
      <!-- 스프링 프레임워크에서 실행되는 로그를 보기위한 설정  -->
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
     <!-- 어플리케이션에서 찍고싶은 로그를 원하는 형태로 설정  -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
...
</configuration>


Posted by CoolDragon
2010. 4. 14. 16:40

1. COM+ 개발
2. 개발 완료 후 서버에 Component 등록
   - 개발중에 snk를 생성하여 전역어셈블리캐쉬(GAC)에 등록한다.
   - regasm 명령어로 레지스트리 등록
3. 등록확인 
   - COM+는 제어판 > 구성요소 서비스에서 클래스명이 확인이 가능
   - COM은 레지스트리에서 GUID키값에서 ProgID에서 클래스명을 확인 가능
4. component 클래스명 및 interface를 확인
5. asp에서 아래 처럼 사용하면 된다.사용하기
<%
set complus   = Server.CreateObject("ComPlusExample.ComPlusClass")

Response.Write complus.PerformAddition(10, 30) & "<br/>"
Response.Write complus.PerformSubtraction(10, 30) & "<br/>"
%>


Posted by CoolDragon
2010. 4. 13. 11:23
asp.net ajax control toolkit를 사용하고자 한다면 
ScriptManager 관련 스크립트를 선언해주어야 한다.

아래와 같은 스크립트중 한가지를 사용하면 된다.

<asp:ScriptManager ID="ScriptManager1" runat="server" />
 - asp.net 에서 기본으로 제공

<ajaxToolkit:ToolkitScriptManager ID="ScriptManager1"  runat="server" />
 - ajax control toolkit 설치후 사용

그리고 두가지의 차이점은 정확히 모르는 관계로 성능적인 측면에 관련된 블로그를 참고하면 되겠다~
아래 성능으로만 보면 ajaxToolkit을 사용하는게 나은거 같은데 무조건 조은건지.... 해석해야하나..ㅋ


* 사용에 따른 Rendering


* Rendering에 따른 파일 다운로드
Posted by CoolDragon
2010. 4. 7. 20:03
asp.net에서 마스터페이지에 아래와 같이 설정이 되어있더라도
<form id="form1" runat="server">
..
</form>

렌더링된 결과를 보면  form태그의 id는 aspnetForm으로 자동 변경된다.
이를 방지하고 자신이 값으로 id를 지정하고 싶다면.. 첨부한 파일을 참고하길 바란다~

그럼 화이팅~
Posted by CoolDragon
2010. 4. 2. 12:44
c#문법으로 작성된 코드~

// 유입경로
Response.Write("HTTP_REFERER=" + Request.ServerVariables["HTTP_REFERER"]);
Response.Write("<br/>");
Response.Write("AbsoluteUri=" + Request.UrlReferrer.AbsoluteUri);
Response.Write("<br/>");
            
// 클라이언트 IP
Response.Write("REMOTE_ADDR=" + Request.ServerVariables["REMOTE_ADDR"]);
Response.Write("<br/>");            
Response.Write("UserHostAddress=" + Request.UserHostAddress);
Response.Write("<br/>");
            
// 사용 브라우저 체크
Response.Write("HTTP_USER_AGENT=" + Request.ServerVariables["HTTP_USER_AGENT"]);
Response.Write("<br/>");
Response.Write("Browser=" + Request.Browser.Browser);
Response.Write("<br/>");

// 브라우저의 사용 언어
Response.Write("http_accept_language=" + Request.ServerVariables["http_accept_language"]);
Response.Write("<br/>");
Posted by CoolDragon
2010. 3. 16. 16:06
아직 이해단계라 별다른 소스는 없다. 
별로 대단한 것은 없지만 나중에 다시 상기해야 할 것이기에 정리하여 블로깅 한다.

--------------------------선언하기--------------------------
MyJS = function()
{
// private 변수
var _value = "";
MyJS.prototype.init();
}

// 초기화
MyJS.prototype.init = function()
{
_value = "test";
}

MyJS.prototype.toString = function()
{
_value = "기본 toString override를 한다.";
}

// 값을 가져온다.
MyJS.prototype. GetValue = function()
{
return _value;
}

// 값을 설정한다.
MyJS.prototype.SetValue = function(value)
{
      _value = value;
}

------------------------사용하기------------------------
var myJs = new MyJS();
myJs.SetValue("클래스스타일 자바스크립트");
var value = myJs.GetValue();


조금 더 자세하고 상세한 자바스크립트는 아래 링크를 살짝 참고한다.(영어다 소스만 보자 ㅋ)
Posted by CoolDragon
2009. 11. 2. 10:26
ASP.NET에서 동적으로 자바스크립트를 추가하기는 어렵지 않다.




[비하인드 코드]

        protected void Page_Load(object sender, EventArgs e)
        {
            // <form> 태그 뒤에 include되는 자바스크립트 파일 포함
            ClientScript.RegisterClientScriptInclude(typeof(Page), "script", "http://localhost/test.js");
            // <form> 태그 뒤에 자바스크립트 포함
            ClientScript.RegisterClientScriptBlock(typeof(Page), "script1", "<script>test('test1');</script>");
            // </form> 태그 앞에 자바스크립트 포함
            ClientScript.RegisterStartupScript(typeof(Page), "script2", "<script>test('test2');</script>");
        }


[소스보기 코드]
...
<form name="form1" method="post" action="WebForm2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZL22/OKqbu9X9AK4DAtdxYHrs6Rj" />
</div>
<script src="http://localhost/test.js" type="text/javascript"></script>
<script>test('test1');</script>
    <div>
    .......
    </div>
   
<script>test('test2');</script>
</form>
.....


단.. 유념해야할 사항은 여는 form태그에 뒤에 생성되냐 닫는 form 태그 앞에 생성되냐에
따라 정상적으로 실행되는 자바스크립트가 있을수도 있지만 html이 생성되지 않은 컨트롤에
접근하는 코드가 존재하면 오류가 발생할 수도 있다.
Posted by CoolDragon
2009. 10. 28. 14:39

포스트를 열심히 올리고자 마음 먹었지만
전혀 올리지 못 하고있었다. (마음만 앞섰을 뿐이고.. 그리고 귀찮았을 뿐이고..)
뭐 암튼 간만에 포스팅을 한다.

c#에서 DataTable 클래스에서 DataTable끼리의 Merge와 Sort가 있다. (그 밖에도 많겠지...)

대략 소스와 주석으로 설명을 대신하고자 한다.

 private void button1_Click(object sender, EventArgs e)
        {
            DataTable dt = GetData(1, 3);
            DataTable dt2 = GetData(2, 5);

// Merge
            DataTable dt3 = dt.Copy();
            dt3.PrimaryKey = new DataColumn[] { dt3.Columns["A"] };
            dt3.Merge(dt2);

// Sort
            DataView view = dt3.DefaultView;
            view.Sort = "B DESC, A ASC, C DESC";

            this.dataGridView1.DataSource = dt;
            this.dataGridView2.DataSource = dt2;
            this.dataGridView3.DataSource = view.ToTable();
        }

        DataTable GetData(int from, int to)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("A");
            dt.Columns.Add("B");
            dt.Columns.Add("C");
            Random rnd = new Random((int)DateTime.Now.Ticks);
            for (int i = from; i <= to; i++)
            {
                DataRow dr = dt.NewRow();
                dr["A"] = i;
                dr["B"] = rnd.Next(1, 5);
                dr["C"] = rnd.Next(1, 5);
                dt.Rows.Add(dr);
            }
            return dt;
        }


추가적인 설명으로
a.Merge(b); 처럼 Merge할 경우 b테이블의 데이터를 a테이블에 포함시키는 거라 할 수 있다.
만약 DataTable의 PrimaryKey 설정을 한다면 b테이블 데이터중 a테이블의 Key 컬럼과 중복되는 데이터를 제외한 데이터가 a테이블로 포함된다. (이해를 돕고자 이미지를 첨부)

PrimaryKey 설정 전

PrimaryKey 설정 후






Posted by CoolDragon
2009. 7. 14. 20:03

Out Of Browser로 사용해오던 실버라이트 윈도우 어플리케이션이 버전이 업데이트 될 수도 있다. 이럴 경우 실버라이트 어플리케이션도 당연히 업데이트 되어야 할 것이다.
이를 위해 API로 업데이트를 위한 코드도 함께 제공된다.(당연한거 아냐..)

    Application.Current.CheckAndDownloadUpdateCompleted += (s, e) =>
    {
        if (e.UpdateAvailable)
        {
                MessageBox.Show(@"어플리케이션 업데이트를 위해 재시작");
        }
    };
    Application.Current.CheckAndDownloadUpdateAsync();


그 외에 Out Of Browser관련 API가 여러가지가 있겠지만.. 눈에 띄는건 아래 함수정도였다.
bool Application.Current.IsRunningOutOfBrowser {get;} 
  : OutOfBrowser로 실행되는지 여부

Out of Browser 설치창 띄우기
private void btnInstall_Click(object sender, RoutedEventArgs e)
{
     if (Application.Current.InstallState == InstallState.NotInstalled)
     {
          Application.Current.InstallStateChanged += new EventHandler(Current_InstallStateChanged);
          Application.Current.Install();
     }           
}

void Current_InstallStateChanged(object sender, EventArgs e)
{
    MessageBox.Show("설치 완료");
}

네트워크 상태변경 이벤트
using System.Net.NetworkInformation;

...
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
...

void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{       
  if (NetworkInterface.GetIsNetworkAvailable())
  {  
    // 연결됨
  }
  else
  {
    // 연결안됨
  }
}


블로깅 열심히 했더만.. 실버라이트 공식 사이트에 동영상이 있네요 ㅜㅜhttp://silverlight.net/learn/learnvideo.aspx?video=187318


결론으로
1. OutOfBrowser 기술을 이용하여 online, offline 작업이 가능하다고 하니 잘 응용하면 정말 윈도우 어플리케이션 같은 프로그램이 만들어질 수도 있을 것 같다. (격리파일과 함께..)
2. 못내 아쉬운점은 XAP파일이 업데이트가 되면 실버라이트 윈도우 어플리케이션에서는 실행 직전에 버전을 확인하여 자동업데이트 되었으면 좋았을텐데.. 그렇지 않고.. API를 통하여 업데이트를 하고 재시작을 해야하는 불편함이 있다.
3. 실버라이트 윈도우 어플리케이션이 업데이트되면 업데이트 메시지를 보여주고 직접 종료하고 싶었지만 종료 함수가 있는건지 없는가 보다.... (찾지 못했다.)
Posted by CoolDragon
2009. 7. 14. 20:00

실버라이트로 3로는 처음으로 블로깅을 한다.
실버라이트3에서 처음 등장한 out of browser 라는 기술은 기존에 웹 브라우저에서만 동작하던 RIA를 브라우저 밖에 윈도우 어플리케이션처럼 사용할 수 있게 한다.

개발환경은 VS 2008 SP1에 실버라이트 3 Tools가 설치되어있어야 가능하다. (당연한건가..)

실버라이트 프로젝트를 생성하고 프로젝트 속성창을 띄운다.
실버라이트 탭에서 Enable running application out of browser를 체크한다.


그리고 바로 우측에 있는 Out-of-Browser Settings... 버튼을 클릭하면 아래와 같은 창이 나타난다. 이창은 실버라이트 윈도우 어플리케이션(?)으로 되었을 때의 기본 속성을 설정한다.


아래 화면은 아이콘 등록시 나타나는 화면이다.(아이콘을 미리 등록해야 선택할 수 있다.)


설정이 완료되면 프로젝트의 Properties폴더에 OutOfBrowserSettings.xml 파일이 생성된다.
(이 파일은 예상한 것과 같이 위에서 작업한 설정값들이 XML 형태로 저장된다.)

그럼 빌드를 해본다. (배경색만 회색으로 바꿨다.)
브라우저의 실버라이트 화면에서 마우스 오른쪽 버튼을 클릭하면 컨텍스트 메뉴가 나타난다.

위의 컨텍스트 메뉴중 [이 컴퓨터에 OutofBrowser Application 설치...] 를 클릭하면 아래처럼
실버라이트 윈도우 어플리케이션 설치 창이 나타난다.

    - 시작 메뉴 : 윈도우시작메뉴 > 프로그램 > 'OutofBrowser Application' 메뉴로 등록된다.
    - 바탕화면 : 바탕화면에 실행아이콘이 생성된다.

확인 버튼 클릭과 동시에 실버라이트 윈도우 어플리케이션이 실행된다.


ps. 이러다 정말 왠만한 윈도우 어플리케이션 명함도 못내밀게 생겼다.

Posted by CoolDragon