WITH DEPTINFO(DeptCode, UpperDeptCode) AS
(         
	SELECT DeptCode, UpperDeptCode
    FROM dbo.tb_DeptList
    WHERE DeptCode ='A001'
    UNION ALL
    SELECT A.DeptCode, A.UpperDeptCode
    FROM DEPTINFO AS A
    JOIN dbo.tb_DeptList AS B
    ON A.DeptCode = B.UpperDeptCode  
)
SELECT DeptCode, UpperDeptCode
FROM DEPTINFO

'DataBase' 카테고리의 다른 글

SQL Query Tip  (0) 2011.02.13
Windows Server 2008 R2에서 SQL Server 2008 원격 접속 허용하기  (1) 2010.06.25
SQL index 초기화  (0) 2009.11.25
새로운 SQL 잘라내기 공격 및 대처 방법  (0) 2009.07.06
MS-SQL 트리거  (0) 2009.07.03

Windows 방화벽은 기본적으로 Windows Server 2008 R2 설치시 대부분의 포트 및 응용 프로그램에 대한 접근을 보안상의 목적으로 막아져 있다.
그러다보니, SQL Server 2008의 원격 접속이 근본적으로 차단되어져 있는 것이다.

이에 Windows Server 2008 R2에 SQL Server 2008의 원격 접속을 허용하는 과정을 아래 단계를 거쳐서 진행하면 된다.

1. Windows Server 2008 R2에서 [시작]-[모든 프로그램]-[관리 도구]-[서버 관리자]를 실행한다.
아래 그림과 같이 구성 항목의 하위 항목인 [고급 보안이 포함된 Windows 방화벽] 항목을 선택하고,
[인바인드 규칙]에 마우스 오른쪽 버튼을 클릭하여 [새 규칙] 메뉴를 클릭한다.
인바인드 규칙은 원격에서 접속하는 포트 및 프로그램에 대한 설정을 하나 추가할 수 있는 마법사를 실행시켜준다.


2. 새 인바운드 규칙 마법사 창이 뜨면 아래에서 두번재 옵션인 [포트] 항목을 선택하고 [다음] 버튼을 클릭한다.


3. 프로토콜 및 포트 설정에서는 TCP와 특정 로컬 포트에 SQL Server에서 사용하는 1433 포트번호를 입력한다.
 


4. 작업항목에서 [연결 허용] 항목을 선택하여, 위에서 지정한 포트를 열어둘 수 있다.


5. 프로필 설정에서는 3가지 옵션이 있는데, 원격 인터넷을 통한 접속을 허용하고자한다면, [공용] 항목을 포함해서 선택하면된다.    


6. 이름란에는 기억하기 편하고, 추후 Windows Firewall에서 손쉽게 규칙을 적용 또는 해제하기 위한 이름과 설명을 입력한다.


7. 인바운드 규칙을 모두 적용하고 나면 아래 화면처럼,
서버관리자의 인바운드 규칙이 새롭게 적용된 [SQL Server 기본 포트]라는 항목이 추가되어져 있는것을 알 수 있다.  
     


이렇게 함으로써,
원격서버에서 Windows Server 2008 R2 기반에 SQL Server 2008에 접속할 수 있는 최소한의 처리 단계를 구축할 수 있다.

'DataBase' 카테고리의 다른 글

SQL Query Tip  (0) 2011.02.13
샘플 재귀 쿼리문  (0) 2010.06.28
SQL index 초기화  (0) 2009.11.25
새로운 SQL 잘라내기 공격 및 대처 방법  (0) 2009.07.06
MS-SQL 트리거  (0) 2009.07.03

Visual Studio 2010에서 .NET Framework 3.5 이하 버전의 프로젝트 빌드 시 아래와 같은 오류가 발생하는 경우가 있습니다.

 


이는 프로젝트에
Resource가 포함되어 있고 프로젝트 파일 경로 상에 한글 폴더 명이 있을 경우 오류가 발생합니다.

 

 

[해결 방법]

-       해당 프로젝트의 csproj 파일을 메모장에서 열어 아래의 프러퍼티를 추가합니다.

 


MS Blog
에 상세한 설명과 몇 가지 해결 방법이 나와 있으니 참고하시기 바랍니다.
http://blogs.msdn.com/b/dsvc/archive/2010/05/28/the-quot-generateresource-quot-task-failed-unexpectedly-unable-to-load-filetracker-dll.aspx

SharePoint 2010에서 사용자 별로 다국어 지원 기능이 추가 되었습니다.

[SharePoint 2010 다국어 지원 설정]

다국어 설정은 사이트 단위로 설정 하게 됩니다.

 

 * 언어 선택시 lcid 의 쿠키 값에 현재 설정된 언어 코드가 설정됨 (한글 : 1042 , 영문 :1033, 일본어 : 1041)

 

 

"Lcid" 쿠키에서 현재 사용자가 설정한 언어 코드를 읽어와 Resources 폴더에 존재 하는 Resources파일을 기준으로 언어 설정을 변경 합니다.

 

 

Custom Field 다국어 설정 시 static name으로 필드 생성 합니다

 

Display Name 설정을 다음과 같이 Resources 파일과 키를 설정해 주시면

Core Resources 파일의 objectiv_schema_mwsidcamlidC24 키로 설정된 언어 값을 가지고 옵니다.

$Resources:core,objectiv_schema_mwsidcamlidC24; 

 

 

 


public class CheckExeTime : IHttpModule
{
    public string ModuleName // Module Name Define
    {
        get { return "CheckTime"; }
    }

    private DateTime startTime;

    public void Init(HttpApplication application)  // IhttpModule 인터페이스 구현
    {
        application.BeginRequest += new EventHandler(application_BeginRequest);
        application.EndRequest += new EventHandler(application_EndRequest);
    }
    public void Dispose() // IhttpModule 인터페이스 구현
    {
    }
    public void application_BeginRequest(object source, EventArgs e)
    {
        startTime = DateTime.Now; // 요청 시간 Check
    }

    public void application_EndRequest(object source, EventArgs e)
    {
        //현재의 HttpApplication 개체를 얻어온다
        HttpApplication app = (HttpApplication)source;
        //현재 웹 어플리케이션의 컨텍스트를 얻어온다
        HttpContext context = app.Context;

        string pageID = context.Request.CurrentExecutionFilePath.ToString(); // 요청한 PageID (*.aspx)
        string requestIP = context.Request.UserHostAddress; // 요청한 Client IP

        TimeSpan span = DateTime.Now - startTime;

        // TO DO : 출력형식을 자유롭게 코딩하면 됨(텍스트파일로 쓰기 / DB에 저장)

        context.Response.Write("");
    }
}

위 소스를 작성한 후 아래 구문을 web.config에 추가하면 asp.net 페이지가 동작을 하면 실행이 된다.

[IIS 6.0 및 IIS 7.0 기본 모드에서 HTTP 모듈 등록]


    
        
    



[통합 모드의 IIS 7.0에서 HTTP 모듈 등록]

    
        
    

 

Windows Server 2003에서 Windows Server 2008로 버전이 올라가면서,,

"원격데스크톱 연결"에 두가지 큰 변화가 있습니다.

1. 최대 동시 접속자가 3명에서 2명으로 감소
 - Windows 2003 Server 에서는 최대 3명까지 원격 접속이 가능했습니다.
 - 그러나,, Windows 2008 에서는 최대 동시 접속자가 2명으로 제한됩니다.

2. 한 User로 동시 접속이 안된다?
 - Windows 2008 Server 에서는 기본 설정 상 해당 머신에 동시에 2명 이상이 접속을 시도할 경우
   기존 Session 이 끊겨 버립니다.
  
   2명 이상의 동시 접속을 허용하기 위해서 다음과 같이 진행합니다.
  
  
1. 시작 -> 관리도구 -> 원격 데스크톱 서비스 -> 원격 데스크톱 세션 호스트 구성에서 "사용자당 세션을 하나로 제한" 옵션을 '아니요' 로 변경해 줍니다.


2. '사용자당 세션을 하나로 제한' 옵션을 비활성화 시킨다.


그러면,, 각 머신 당 2명까지의 동시 연결이 가능해집니다.


 

여러 언어를 지원해야 하는 다국어 웹 사이트를 구축하기 위한 방법을 알아보자.

 

제일 쉬운 접근 방법은 각 언어에 해당하는 웹 사이트를 별도로 만드는 것이다.

그러나 이것은 접근 방법이 쉽다는 것 뿐, 개발 양적인 측면이나 유지/보수성을 생각한다면 결코 좋은 접근 방법이 아닐 것이다.

동일한 컨셉과 구조, 컨텐츠를 제공하는 웹 사이트가 단지 언어만 다르다는 이유로 쌍둥이 사이트를 새로 개발해야 한다는 문제점과

그렇게 구축된 웹 사이트의 특정 컨텐츠 추가나 변경을 해야 할 때에는 모든 웹 사이트를 다 수정해야 하는 문제점이 있다.

 

예전부터 효율적인 다국어 지원을 위해서 다양한 방법들이 개발자들에 의해 구현되어 왔었는데..

가장 보편적으로는 다국어 처리를 위한 일종의 유틸리티 성 모듈을 거쳐 처리하는 방식이 대부분 이었다.

 

이번 글에서는 닷넷이 제공하는 표준 리소스 메커니즘을 이용해 다국어 지원을 효율적으로 하는 방법을 알아 본다.

 

ASP.NET 1.x 2.0 모두 리소스를 이용할 수 있다.

닷넷의 리소스에 대한 개념은 다음 글에서 확인해 주길 바란다.

리소스(Resource)

 

ASP.NET 1.1 에서는 리소스를 이용한 다국어처리를 위해 ResourceManager 를 이용했었다.

그러나 ASP.NET 2.0에서는 보다 관리용이하고 개발용이 하도록 개선된 부분이 있다.

 

 

전역(Global) 리소스 파일 / 지역(Local) 리소스 파일

ASP.NET 2.0 에서는 리소스 파일의 사용 범위에 따라 전역,지역 두 가지로 분리되었다.

App_Code App_Data 처럼 리소스 파일 역시 예약된 폴더를 가지고 있다.

 

전역 리소스 파일 저장 -> App_GlobalResources

지역 리소스 파일 저장 -> App_LocalResources

 

전역 리소스는 말 그대로 웹 사이트 모든 영역에서 사용할 수 있으나

지역 리소스는 특정 단일 페이지(aspx, ascx, master) 에서만 사용가능하다.

또한 당연하겠지만 App_GlobalResources 폴더는 웹 사이트 루트에 단 1 개만 허용되지만 App_LocalResources 폴더는

웹 사이트 내의 모든 폴더에 하나 씩 존재해도 된다.

 

 

Web.Config 에 언어정보 추가하기.

언어 설정에 따른 지역화를 테스트 하기 위해 웹 사이트의 설정 파일인 Web.Config 파일에 다음과 같이 언어 정보를 기록하자.

<globalization uiCulture="en" />

일단 테스트를 위해 현재 UICulture 를 영어(en) 으로 설정하였다.

 

 

* 현재 브라우저에 설정된 기본 언어(첫 번째 언어) 를 참고해서 UICulture 를 지정하려면 ‘auto’ 를 사용하면 된다

<globalization uiCulture="auto" />

또는

<%@ Page UICulture="es" UICulture="auto" %>

 

이렇게 설정 하면 브라우저에 설정된 첫 번째 언어로 설정되게 된다

 

 

 

전역(Global) 리소스 이용하기.

웹 프로젝트에 App_GlobalResources 폴더를 생성하고 다음과 같이 리소스 파일을 생성하자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

언어 정보가 없는 Resource.resx 기본 리소스 파일이다.

이 리소스 파일은 해당 언어의 리소스 파일이 없을 경우 대체(fallback) 리소스 파일로 사용된다.

이 기본 리소스 파일을 한국어를 위한 리소스 파일로 사용할 것이며 영어를 지원하기 위해서 Resource.en.resx 을 사용한다.

 

리소스 파일명에 포함된 언어 정보는 정확히 기입해야 한다.

런타임에 ASP.NET  에서는 CurrentUICulture 속성과 가장 많이 일치 하는 리소스 파일을 자동으로 찾아서 사용하게 된다.

이때 참조되는 정보가 리소스 파일명이 된다.

 

각 국가별 언어 표현은 아래와 같이 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이렇게 리소스 파일이 준비 되었으면 컨트롤의 지역화를 수행해 보자.

웹 페이지에 버턴과 Localize 컨트롤을 올리고 Text 속성에 명시적으로 지역화를 수행하도록 한다.

<asp:Button ID="Button1" runat="server"

        Text="<%$ Resources:Resource, Message %>" /><br />

              

<asp:Localize ID="Localize1" runat="server"

        Text="<%$ Resources:Resource, Message %>"></asp:Localize>

 

전역 리소스 파일을 사용할 경우 다음과 같은 표현식으로 리소스 내용을 참조하게 된다.

이를 명시적 지역화라 한다.

<%$ Resource: Class , Key %>

Class 의 경우 확장자와 언어정보를 제외한 리소스 파일명이 된다. 이 예에서는 Resource 가 된다.

Key 는 리소스 파일에 기록한 Key 정보 이다. Key 에 해당하는 Value 를 가져오는 것이 되겠다.

 

Localize 컨트롤은 닷넷 2.0에 새로 추가된 컨트롤로써 Literal 컨트롤을 상속받은 컨트롤이다.

이는 웹 페이지에 고정되고 정적인 내용을 표현하기 위한 가벼운 컨트롤 즈음 될 것이다.

(사실 Literal , Label 컨트롤로도 동일한 지역화를 구현할 수 있다)

 

이렇게 다 구현되었다면 Web.Config <globalization uiCulture="en" /> 내용을 변경하면서 테스트 해 보자.

아래는 en, ko 두 가지를 테스트 해본 결과 이다.

en으로 설정하면 Resource.en.resx 가 사용될 것이며

ko 로 했을 경우에는 Resource.ko.resx 가 없으므로 기본 리소스 파일인 Resource.resx 가 대체되어 사용되었다.

 

또한 다음과 같이 전역 리소스의 내용을 출력할 수 있다.

Response.Write(this.GetGlobalResourceObject("Resource", "Message"));

 

 

지역(Local) 리소스 이용하기.

웹 프로젝트의 원하는 폴더에(웹 루트도 상관없다) App_LocalResources 폴더를 생성하고 다음과 같이 리소스 파일을 생성하자.

이전과 동일하게 기본리소스와 영어지원을 위한 리소스 두 개를 생성하고 내용을 Key-Value 형태로 기록하였다.

 

주의 해야 할 것은 지역(Local) 리소스의 경우 특정 한 페이지만을 위한 리소스 이므로 페이지명과 연결 시켜서 리소스 파일명이 부여되어야 한다.

현재 이 예제에서는 Local.aspx.resx 리소스라는 말은 Local.aspx 라는 페이지를 위한 리소스 파일이 되는 것이다.

또한 닷넷 컨트롤의 속성과 리소스 파일의 Key 이름과도 연관성이 있는데, 이 예제에서는

ButtonResource.Text 라 했으므로 컨트롤의 Text 속성에 이 Key 가 자동으로 사용된다 라고 해석하면 되겠다.

 

일단 지역 리소스파일을 이용해 컨트롤의 지역화를 수행해 보자

<asp:Button ID="Button1" runat="server"

        Text="<%$ Resources: ButtonResource.Text %>" />

또는       

<asp:Button ID="Button2" runat="server" Text="DefaultText2"

        meta:resourcekey="ButtonResource" />

 

지역 리소스를 사용할 경우 전역 리소스처럼 명시적 지역화를 수행할 수도 있지만

Meta 태그를 이용한 암시적 지역화로도 사용가능하다.

암시적 지역화는 앞서 말했듯이 리소스 키 값만 연결해 주면 컨트롤의 특정 속성과 리소스 파일에 속성이 매칭되어 사용되는 것을 말한다.

 

또한 명시적 지역화를 사용할 경우에도 Class 명을 생략할 수 있다. 단일 페이지에 연결된 리소스 파일이기 때문에 굳이 리소스 파일명을

기입할 필요가 없는 것이다.

역시 Web.config 의 언어 정보를 변경하면서 수행하면 다음과 같이 결과가 나온다.

 

 

 

물론 지역(Local) 리소스 파일의 경우에도 다음과 같이 일반 출력이 가능하다

Response.Write(this.GetLocalResourceObject("ButtonResource.Text"));

 

 

전역(Global) 리소스 와 지역(Local) 리소스의 적용 상황

닷넷 프레임워크에서는 지역화를 위한 단일한 접근이 아니라 범위에 따른 두 개의 영역으로 리소스 파일을 관리하도록 하였다.

이 둘 중 어느것을 사용할 지에 대한 기준은 프로젝트의 성격에 따라 다르겠지만

일반적으로 다음과 같은 가이드 라인을 제공할 수 가 있겠다.

1)       공용 메시지나 단순 출력 메시지일 경우 전역 리소스 사용

2)       웹 사이트에 전역적으로 사용되는 메시지일 경우 전역 리소스 사용

3)       전역 리소스 파일이 너무 커져 협업의 어려움이나 관리의 어려움이 있을 경우 지역 리소스 사용
-
웹 사이트의 모든 페이지의 리소스를 하나의 전역 리소스에 다 표현한다면 파일을 관리하기도 어려울 것이며,
 
협업 시 발생하는 파일 동시 변경과 같은 문제점도 발생할 수 있다.
 
로컬 리소스를 사용하면 각 폴더마다 리소스 폴더를 별도로 둘 수 있으며 각 페이지에 해당하는 리소스 파일을 각각 생성함으로써
 
협업 시 서로 신경 쓰지 않고 작업할 수 있으며 페이지 별로 리소스를 관리하기 때문에 파일에 대한 관리도 용이해 질 수 있다.

4)       각 페이지의 컨트롤의 텍스트 표현(Text 속성)을 위해서는 지역 리소스 사용
- 3)
의 이유와도 동일함.
 
모든 페이지의 컨트롤 Text 속성을 단 하나의 전역 리소스에 포함해야 한다면.. 끔찍할 것이다.

 

이상의 가이드 라인을 기준으로 현재 프로젝트에 적합한 리소스 파일을 사용하기 바란다.

 

 

리소스를 이용한 웹 페이지 지역화에 대해 보다 상세한 내용은 다음의 MSDN 을 참고하기 바란다.

http://msdn2.microsoft.com/ko-kr/library/ms227427(VS.80).aspx

 

 

 

 

* 참고

아래 이미지를 보자

 

이와 같이 텍스트를 포함하는 이미지일 경우에도 다국어 처리를 해 주어야 한다.

여러 방법이 있을 수 있으나,

통상적으로 각 언어별로 이미지를 새로 만들어 폴더를 구분하는 방법이 있다.

이 경우에도 리소스 파일과 연계하여 사용하면 그나마 유연한 환경이 될 것이라 본다.

아래처럼 각 언어별 리소스 파일에 이미지의 경로를 기록하는 것이다.

 

 

 

 

 

 

그리고 아래와 같이 현재 UICulture 에 맞는 리소스의 경로를 참조하도록 한다.

<asp:Image ID="Image1" runat="server" ImageUrl="<%$ Resources:Resource, ImageUrl %>" />

또는       

<img src="<%$ Resources:Resource, ImageUrl %>" runat=server />

 

물론 웹 사이트의 모든 이미지를 서버 컨트롤로 만드는 것이 결코 좋은 선택은 아니다.

닷넷의 서버 컨트롤은 필요하다면 최소화 하는 것이 수행 속도 면에서는 좋을 수 있다.

 

여기서 말하는 이미지 다국어 처리 방법은 리소스와 연계한 힌트 성 글이니 이 글을 절대적으로 수용할 필요도 없으며

적합하지 않을 가능성이 크다.  그래서 참고인 것이다 ^^;

 


iframe이 로딩될 때 현재 프레임의 스크롤바값을 가져와서 창크기 자동 조절 스크립트입니다.


[샘플 코드]
<script language="javascript">
    function ResizeIframe(frm)
    {
        frm.setExpression('width', ifrmTest.document.body.scrollWidth);
        frm.setExpression('height', ifrmTest.document.body.scrollHeight);
    }
</script>


<body>
    <iframe id="ifrmTest" src="Test.aspx" name="test" marginwidth="0"marginheight="0" topmargin="0" scrolling="no"
             frameborder="0" ALLOWTRANSPARENCY="true" onload="javscript:ResizeIframe(this);">
    </iframe>
</body>

 

기본적으로는 서버와 클라이언트 코드는 서로를 직접적으로 호출 할 수 없다. 서로 실행되는 시간과 위치가 다르기 때문이다.

서버코드 : Requeset를 받았을때 서버에서 실행

클라이언트코드 : Response를 받은 클라이언트 브라우저에서 실행

 

하지만, 이를 가능하게 하는 몇가지 방법이 있고, 매번 기억하기 어려워서 여기에 정리해본다.

뭐 고급유저라면 관련 Tip을 상당히 여러가지 알고 있겠지만, 그래도 모든걸 항상 기억하긴 여러우니까...

<작성: http://blog.naver.com/myfancy>

 

1. ASP.NET AJAX - Web Service 호출

스크립트에서 Web Service 컨테이너에서 노출하고 있는 함수를 AJAX로 호출하는 방법이다. 포스트백이나 페이지 리프레시가 발생하지 않는다. 하지만, 비교적 많은 이해가 필요하고, .asmx로 웹서비스를 별도로 만들어야만 된다.

참고) Client-Side Web Service Call with AJAX Extentions

         http://msdn.microsoft.com/en-us/magazine/cc163499.aspx

        Calling Web Servivce from Client Script

         http://msdn.microsoft.com/en-us/library/bb398995.aspx

         http://msdn.microsoft.com/ko-kr/library/bb398998.aspx

 

2. ASP.NET Ajax Extentions - PageMethod 호출

PageMethod는 기본적으로 Page의 Behind코드에 public static으로 노출하고, JavaScript에서 호출하는 방식이다. PageMethod는 [WebMethod]라고 함수에 꾸며주기만 하면되고, Response에 Inline JavaScript Proxy 코드가 생성된다.

 

[System.Web.Services.WebMethod]
public static string GetContactName(string custid){}
함수는 반드시 public static이여야 한다.
 

<asp:ScriptManager ... EnablePageMethods=”true”/>

이 기법을 사용하기 위해서는 ScriptManager에 EnablePageMethods속성을 true로 설정하면 된다.

 

function CallGetContactName(custid,cbParam)
{    
 // call server side method
 PageMethods.GetContactName(custid,OnSuccess,OnFailed,cbParam);
}
// set the destination textbox value with the ContactName
function OnSuccess(res, cbParam)
{    
 //결과값 : res, 콜백파라미터:cbParam
}
// alert message on some failure
function OnFailed(res, cbParam)
{
 //결과값 : res, 콜백파라미터:cbParam
 alert(res.get_message());
}
스크립트를 별도의 파일로 추가할 경우 <head/>섹션이 아닌 <body>태그 아래 추가해야 한다.

3. jQuery를 이용한 WebService 호출

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/

 

4. Get, Post를 이용한 방법 (Non Ajax)

ASP.NET의 Page, HttpHandler, HttpModule등을 이용하여 Request를 받아 Response를 주는 인스턴스를 만들어 놓고, 순수 Ajax나, Post등의 기법을 이용하여 처리 할 수 있다.


body 부분에 아래와 같이 선언해주면 된다.

<body oncontextmenu="return false" onselectstart="return false" ondragstart="return false">

 oncontextmenu="return false"   오른쪽마우스버튼막기
 onselectstart="return false"   텍스트 선택막기
 ondragstart="return false"  드래그막기


LINQ를 이용하여 Paging 처리한 샘플코드이다.

샘플 코든는 MSDN에서 제공하는 Sample Database - Northwind Orders 테이블 데이터를 이용하였으며,
LINQ to SQL Classes 타입으로 데이터 객체를 생성하여 접근 하였다.

class Program
{
    // LINQ to SQL class
    static OrderDataContext dbContext = new OrderDataContext();

    static void Main(string[] args)
    {
        Paging(1, 50);

        Console.Read();
    }

    public static void Paging(int pageIdx, int rowCnt)
    {
        var query = from orders in dbContext.Orders
                    orderby orders.OrderID
                    select orders.ShipName;

        var result = query.Skip((pageIdx - 1) * rowCnt).Take(rowCnt);
    }
}

 

페이징 처리를 위해서는 시작하는 페이지 번호와 몇개의 데이터 행을 보여줄지 해당 데이터를 읽어와야 한다.
위의 코드 Paging 메소드를 보면 대략 이러하다..

테이블의 데이터를 쿼리한 후 
Skip 확장 메소드를 활용하여 시작하는 행의 번호를 지정(한 페이지에 보여주는 데이터의 수로 행 번호 계산)해 주고,
Take 확장 메소드를 활용하여 그 시작하는 행 번호로부터 몇 개의 데이터를 읽어올지 지정해주면 된다.

해당 코드 분석하면,
첫번째 페이징 처리 경우는 MS-SQL에서의 TOP이 자동 생성되어 쿼리하고,
두번째 이후 페이징 처리는 ROW_NUMBER 함수를 사용하여 인라인 뷰를 생성하고 TOP를 이용하여 페이징 처리를 한다고 하네요.

참고로 ROW_NUMBER 함수는 MS-SQL 2005 상위 버젼에서만 지원합니다.


By default, debugging a website or web project within Visual Studio bring up the built-in server of Visual Studio. But, we do have a problem to change the server to an IIS instance. I recently switched to debugging on IIS on my Windows 2008 Server Machine. Debugging works fine. The only problem is that if your code hit some breakpoint and if you leave the program in ‘break’ mode for more than 90 seconds, Visual Studio shows the following message:



After a bit tweaking around in the new IIS interface, I got the solution:

  1. Open Internet Information Services (IIS) Manager.
  2. From the server tree (the item with the name as the server name), choose Application Pools.
  3. Choose the Application Pool corresponding to your testing IIS website (usually it has the same name as your IIS website)
  4. Right-click and choose Advanced Settings.
  5. From the Process Model node, change the Ping Maximum Response Time (seconds) to a comfortably higher value (I have set the value to 900 seconds which is 15 minutes).


Alternatively, you can also set the Ping Enabled property to False.

Apparently what happens is that the server keeps pinging the worker process and waits for a response. When in debugging mode, the worker process is affectively suspended, which results in the ping not being responded.


Visual Studio 2010 개발 툴에서 SharePoint 2010 개발 시,

SPSite 객체를 가져오는데 아래와 같은 FileNotFoundException이 발생하여 당황스럽게 하는 경우가 있습니다. (사이트는 실제로 존재) 


실행 소스

using (SPSite site = new SPSite("http://shing208"))

using (SPWeb web = site.OpenWeb()) { }

 

에러 메시지

FileNotFoundException

The Web application at http://shing208 could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.

 

원인 및 해결책(체크 사항)

SharePoint 2010 버전은 64비트만 지원하는데, 개발 진행시 빌드 옵션 사항이 32비트로 지정되어 있어 발생하였습니다.

해결 방법은 아래 이미지와 같이 프로젝트 속성으로 들어가, 빌드 플랫폼 타켓을 x64로 변경해주시면 됩니다.

                 

 

  

1. Using a generic delegate
=> foreach (Customer c in Customers.Where(new Func<Customer, bool>(MatchName)) {}

bool MatchName(Customer c) { return c.CustomerID.StartsWith("L"); }

2. Using an anonymous delegate
=> foreach (Customer c in Customers.Where(delegate(Customer c) { return c.CustomerID.StartsWith("L")}) {}

3. Using a lambda expression
=> foreach (Customer c in Customers.Where(c => c.CustomerID.StartsWith("L"))) {}

4. Using as LINQ query expression
=> var query = from c in Customers where c.CustomerID.StartsWith("L") orderby c.CustomerID select c;

foreach (Customer c in query) { }


Windows Vista, Windows 7, Windows Server 2008 과 같은 비스타 계열이라고 해야하나?

아무튼 그 시스템에서 다음 컴맨드를 실행해야함.

 

시작 -> 실행 -> cmd

 

> diskpart

프로그램 실행됨.

 

DISKPART> list disk

현재 PC에 붙어 있는 디스크 리스트 나옴. 해당 usb의 디스크 번호 기억

 

DISKPART> select disk '번호'

위에서 기억한 번호 입력하여 디스크 선택

 

DISKPART> clean

디스크 내용 초기화. 파티션도 날라감.

 

DISKPART> create partition primary

파티션 만들기. primary로 만듬.

 

DISKPART> list partition

파티션 정보 보기. 현재 만든 파티션 정보가 보여짐. 파티션 번호 기억할것.

 

DISKPART> select partition 1

파티션 선택. 하나밖에 안만들었으니 1번이 될듯.

 

DISKPART> active

파티션을 활성화 시킴.

 

DISKPART> format fs=ntfs quick

선택한 파티션을 포맷함. ntfs로 빠르게.

 

DISKPART> assign

드라이브 문자를 할당.

 

DISKPART> exit

diskpart 종료.

 

이렇게 하면 부팅이 가능한 usb 메모리가 만들어짐.

여기에 원하는 os 를 복사해서 넣으면 됨.

그리고 설치하면됨.

 

 

+ Recent posts