'번역/.NET Tip of The Day'에 해당되는 글 11건

  1. 2008.01.31 ASP.NET 캐시의 올바른 사용 2
  2. 2008.01.22 .NET 쓰레드는 공유 자원으로 취급하세요
  3. 2008.01.18 완전한 URL을 알아내는 방법
  4. 2008.01.15 장황한 CASE WHEN ... ELSE 대신에 COALESCE 함수를 사용 (T-SQL) 1
  5. 2007.07.20 SQL 쿼리를 작성할 때 문자열 연결 대신 매개변수를 사용하십시오.
  6. 2007.07.19 웹 사이트를 업데이트하는 중이라면 "App_Offline.htm"를 사용하세요.
  7. 2007.07.18 지연된 웹 사이트 컴파일 옵션을 사용하면 빌드 타임을 줄일 수 있습니다.
  8. 2007.07.17 /app_code 디렉토리에 있는 파일의 수는 최소화 하십시오.
  9. 2007.07.16 DebuggerDisplay 특성을 사용하면 디버거 경험을 향상시킬 수 있습니다.
  10. 2007.07.15 자바스크립트 코드를 디버깅하는 방법

ASP.NET 캐시의 올바른 사용

번역/.NET Tip of The Day 2008. 1. 31. 14:07

원문 : Correct using of ASP.NET Cache

ASP.NET 애플리케이션 코드를 보다 보면 아래와 같은 코드를 보는 경우가 종종 있습니다.

if (Cache["SomeData"] != null)

{

string name = ((SomeClass)Cache["SomeData"]).Name;

//.....

}

이 코드는 안전하지가 않습니다. 게다가 두 번째 문장은 NullReferenceException을 일으킬 수도 있습니다. 두 번의 호출이 일어나는 사이에 캐시된 객체가 유지된다는 보장은 없습니다. 첫번째 호출 이후에 객체는 가비지 컬렉터나 캐쉬된 객체를 갱신하는 다른 스레드에 의해 삭제될 지도 모릅니다.

이 문제를 해결하기 위해서는 as 연산자를 사용하십시오.

SomeClass someClass = Cache["SomeData"] as SomeClass;

if (someClass != null)

{

string name = someClass.Name;

//.....

}

via Dmytro Shteflyuk

:

.NET 쓰레드는 공유 자원으로 취급하세요

번역/.NET Tip of The Day 2008. 1. 22. 16:01

원문 : Treat .NET Threads as a Shared Resource

매번 요청이 일어날 때 마다 .NET 쓰레드를 만들지 마십시오. 이는 확장성에 심각한 영향을 끼칩니다. 또한 쓰레드 생성은 가급적 하지 말아야 할 대단히 비용이 많이 드는 작업이기도 합니다. 쓰레드는 공유 자원처럼 생각을 하고, 대신에 최적화된 .NET 스레드 풀을 사용하는 것이 좋습니다.

:

완전한 URL을 알아내는 방법

번역/.NET Tip of The Day 2008. 1. 18. 16:01

원문 : How to create fully qualified URLs

ASP.NET에서는 VirtualPathUtility.ToAbsolute 메서드를 이용하면 아주 쉽게 페이지의 절대 경로를 알 수 있습니다. 절대 URL을 얻는 방법도, 절대 경로를 얻는 것 만큼이나 명백하지는 않지만, 무척 쉽습니다. 그냥 리퀘스트 URL이랑 ASP.NET 페이지의 절대경로를 연결하면 됩니다.

string absolutePath = VirtualPathUtility.ToAbsolute("~/test/MyWebForm.aspx");

Uri newUri = new Uri(Request.Url, absolutePath);

:

장황한 CASE WHEN ... ELSE 대신에 COALESCE 함수를 사용 (T-SQL)

번역/.NET Tip of The Day 2008. 1. 15. 16:01

원문 : COALESCE function instead of long CASE WHEN ... ELSE (T-SQL)

NULL이 아닌 값을 찾을 때, 긴 "SELECT ... CASE WHEN ... ELSE ..." 대신에 COALESCE 함수를 사용할 수 있습니다. 사용 가능한(NULL이 아닌) "source"를 조회하는 다음 T-SQL 표현을 보시기 바랍니다.

SELECT TheSource =

CASE

WHEN localSource IS NOT NULL THEN localSource

WHEN intranetSource IS NOT NULL THEN intranetSource

WHEN internetSource IS NOT NULL THEN internetSource

ELSE ''

END

FROM ...

이를 COALESCE 함수를 사용하여 다시 작성하면 아래와 같습니다.

SELECT TheSource =

COALESCE(localSource, intranetSource, internetSource, '')

FROM ...

이 팁은 MS SQL 2000과 2005에 모두 적용됩니다.

:

SQL 쿼리를 작성할 때 문자열 연결 대신 매개변수를 사용하십시오.

번역/.NET Tip of The Day 2007. 7. 20. 16:19

원문 : Use parameters instead of string concatenation for forming SQL queries

문자열 연결은 약간의 트릭만 사용하면 잘못된 SQL 문장이 실행될 있기 때문에(SQL injection attack) 안전한 방법이 아닙니다. 가능하다면 매개변수를 사용하십시오.

나쁜 코드:

    SqlCommand command = new SqlCommand("SELECT COUNT(*) FROM Accounts WHERE Login='" + login + "' AND Password='" + password + "'", conn);

좋은 코드:

    SqlCommand command = new SqlCommand("SELECT COUNT(*) FROM Accounts WHERE Login=@login AND Password=@password", conn);

    SqlParameter param = new SqlParameter("login", SqlDbType.VarChar, 100);

    param.Value = login;

    command.Parameters.Add(param);

    param = new SqlParameter("password", SqlDbType.VarChar, 100);

    param.Value = password;

    command.Parameters.Add(param);

:

웹 사이트를 업데이트하는 중이라면 "App_Offline.htm"를 사용하세요.

번역/.NET Tip of The Day 2007. 7. 19. 16:09

원문 : Use "App_Offline.htm" feature while updating a web site

ASP.NET 애플리케이션을 업데이트하기 위해 잠시 꺼두는 동안 사용자들의 접근을 막아야 하는 경우가 있습니다. 이 때 "App_Offline.htm" 기능을 사용하면 매우 편리합니다.

App_Offline.htm 기능을 사용하기 위해서는 이 파일을 애플리케이션의 루트에 만들어 두면 됩니다. ASP.NET이 이 파일을 감지하면, 애플리케이션의 애플리케이션 도메인을 종료시키고, 이후의 모든 요청에 대해 App_Offline.htm 파일의 내용을 응답합니다. 웹 사이트의 업데이트가 끝나면 단순히 App_Offline.htm 파일을 삭제하기만 하면 됩니다.

:

지연된 웹 사이트 컴파일 옵션을 사용하면 빌드 타임을 줄일 수 있습니다.

번역/.NET Tip of The Day 2007. 7. 18. 16:08

원문 : Use on-demand web-site compilation option to improve build times

지연된 웹 사이트 컴파일 모드란, 페이지를 편집하고 F5 (run with debugging) 혹은 Ctrl-F5 (run without debugging)를 눌렀을 때 솔루션이 모든 클래스 라이브러리 프로젝트를 컴파일한 후, /app_code 디렉토리와 Global.asax 파일을 컴파일 하고, 웹 사이트의 모든 페이지를 컴파일 하는 대신에 현재 페이지와 현재 페이지가 참조하는 유저 컨트롤만을 컴파일 한다는 의미입니다. 아시다시피 ASP.NET은 런타임에 필요한 페이지와 컨트롤을 다시 컴파일 하기 때문에 항상 최근 애플리케이션이 실행됩니다. (따라서 이전 코드가 실행되지 않을까 하는 걱정을 할 필요는 없습니다.)

이 기능을 켜기 위해서는 웹 사이트 프로젝트에서 오른쪽 클릭을 하고 프로젝트 속성 페이지를 엽니다. "빌드" 탭을 클릭하여 빌드 설정을 엽니다. F5 Start Action을 "Build Web Site"에서 "Build Page"로 변경하면 됩니다.

Web-site On-demand Compilation

:

/app_code 디렉토리에 있는 파일의 수는 최소화 하십시오.

번역/.NET Tip of The Day 2007. 7. 17. 15:48

원문 : Keep the number of files in your /app_code directory small

웹 사이트 프로젝트의 빌드 시간을 줄이고 싶으면 /app_code 디렉토리에 있는 파일의 수를 적게 유지하십시오. /app_code 디렉토리에 매우 많은 파일이 있으면, 이를 별도의 클래스 라이브러리 프로젝트로 분리하고 웹 사이트에서 참조하십시오. /app_code에 파일이 많지 않다면 이는 별 다른 이슈가 되지는 않습니다. 하지만 /app_code에 매우 많은 디렉토리와 파일이 있다면 이 방법을 이용하면 상당한 속도 향상을 얻게 될 것입니다.

또 한 가지 알아두셔야 할 것은 비주얼 스튜디오 HTML 디자이너에서 소스 보기와 디자인 보기를 전환할 때 마다, 디자이너 화면에 로드되기 전에 디자이너는 /app_code 디렉토리를 컴파일한다는 것입니다. 이는 /app_code에 정의되어 있는 컨트롤을 디자이너에서 호스팅하기 위한 것입니다. /app_code 디렉토리가 없거나, 그 안에 파일이 조그만 있다면 페이지 디자이너는 훨씬 빨리 로드될 것입니다. (컴파일 작업을 할 필요가 없기 때문입니다.)

:

DebuggerDisplay 특성을 사용하면 디버거 경험을 향상시킬 수 있습니다.

번역/.NET Tip of The Day 2007. 7. 16. 15:45

원문 : Use DebuggerDisplay attribute for a better debugger experience

디버거 변수 창에서 클래스 혹은 멤버가 표시되는 방법을 제어하려면 DebuggerDisplay 특성을 지정하십시오. 예를 들어, 다음 C# 코드는 디버거에 "Count = 4"라고 표시됩니다.

[DebuggerDisplay("Count = {count}")]

class MyHashtable

{

public int count = 4;

}

:

자바스크립트 코드를 디버깅하는 방법

번역/.NET Tip of The Day 2007. 7. 15. 15:37

원문 : How to debug a JavaScript code

방법 1.  비주얼 스튜디오에서 .js 파일을 열고 디버그 할 줄에 중단점을 설정합니다. Attach to Process 대화상자를 열고 (메뉴 항목 Debug | Attach to Process...) 인터넷 탐색기 프로세스(iexplore.exe)에 연결합니다. 인터넷 탐색기에서 원하는 코드를 실행합니다.

방법 2. 자바스크립트를 작성하고 디버그 시 중단하고 싶은 지점에 debugger 키워드를 삽입합니다. 자바스크립트 인터프리터는 이 키워드를 인식하면 실행을 멈추고 제어를 IDE로 되돌립니다. 이는 비주얼 스튜디오에서 중단점을 설정하는 것과 동일합니다.

참고 : 디버깅을 활성화하려면 인터넷 탐색기에서 스크립트 디버깅 항목을 켜야합니다. 인터넷 탐색기에서 인터넷 옵션을 열고 고급 탭으로 이동합니다. 스크립트 디버깅 사용 안 함(Internet Explorer) 항목을 해제합니다.

Enable JavaScript Debugging

: