다운로드 및 설명 : http://msdn.microsoft.com/ko-kr/library/ms742404.aspx



Posted by spponge
TAG .net, Tools, WPF

댓글을 달아 주세요

원문을 읽어 보면 수긍이 가는 내용도 있고 아닌 내용도 있다. 한번쯤 읽어 보고 참고하면 좋겠다.

원문 요약

절대로 실패하지 않는 Software는 불가능에 가깝다
  • 초기에 Check하라.
  • 외부 Data를 신뢰하지 마라.
  • 유일하게 믿을 수 있는 Device는 Video, mouse, keyboard 뿐이다.(다른 외부 데이터 소스는 신뢰할 수 없다는 의미)
  • Write(디스크 등에 쓰기 작업을 의미) 도 실패할 수 있다.
  • 안전한 코드 작성
  • throw new Exception() 금지. 대신에 ApplicationException 에서 상속하여 직접 만든 exception class를 사용할 것.
  • Message Field에 중요한 예외 정보를 넣지 말것.
  • Thread 당 단일 catch 블럭을 두라.
  • 일반 예외가 발생하면 기록되어야 한다.(여기 저기 catch 블록이 득실거려서 예외 상황이 중복하여 기록되지 않도록 하라는 의미)
  • Exception.ToString()을 사용하여 기록하고 Exception.Message만 기록하는 것 금지.
  • thread 에서 예외를 한 번 이상 catch 하지 말라.
  • 예외를 꿀꺽 삼키지 말라.(아무 것도 하지 않는 그런 catch block은 안좋다)
  • 자원 정리 코드는 반드시 finally block에서 작성.
  • 모든 곳에 using 키워드를 써라.(Dispose() 패턴을 구현하는 객체을 사용할 때는 using block을 쓰라는 의미)
  • 에러 상황에서 특별한 값을 return하지 말라.(예외 상황에 값을 반환하는 것은 비효율적이고 아무 도움이 되지 않기 때문 등등..)
  • method로 부터의 반환 정보의 의미로 예외 처리를 사용하지 마라.
  • 에어 처리를 위한 예외는 무시되어서는 안된다.
  • exception을 re-throwing 할 때에는 statkc trace 정보를 함께 전달해야 한다.
  • 의미없이 예외를 수정하지 마라.
  • 예외는 직렬화 가능 해야 한다.(user defined exception을 사용할 경우..)
  • 예외 발생 가능성이 있는 코드에는 Assert 대신 throw an Exception사용.(Assert는 Unit Test를 위해서 남겨 둘 것)
  • 각 Exception class에는 최소한 원래 세개의 생성자를 가지도록 할 것.(참고 http://msdn.microsoft.com/en-us/library/aa328363.aspx)
  • AppDomain.Unhandled Exception Event를 사용 할 때는 주의하라.
  • 시간과 노력을 낭비하지 말 것.(Exception Management Application Block, Microsoft Enterprise Instrumentation Framework 등의 좋은 Framework 들이 있다)

원문 링크 : http://www.codeproject.com/KB/architecture/exceptionbestpractices.aspx



Posted by spponge

댓글을 달아 주세요

.net framework 3.5 sp1 혹은 3.5 언어 팩 sp1을 설치한 후에 MSBuild를 이용해서 빌드시 아래와 같은 오류 코드를 내뱉는 경우가 있다.

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets (1353,9):
           
            errorMSB3095: 잘못된 인수입니다. 문화권 ID 2155(0x086B)은(는) 지원되는 문화권이 아닙니다.


이 오류 코드는 .net framework 3.5 sp1 혹은 3.5 언어 팩 sp1을 설치하고 시스템을 리부팅 하지 않아서 발생하는 문제이다.

해결 방법은 당연히 "리부팅"



Posted by spponge

댓글을 달아 주세요


먼저 위키에 올라온 이슈 트랙킹 시스템 비교를 보면 Windows Server + IIS + SQL Server 조합에서 사용할 수 있는 툴들이 별로 없다. 있다해도 상용이라 구입해야 한다.
오픈 소스로 많이 쓰이는 아래 도구들은 아래와 같다. (그중 인기가 좋은것만)
  • JIRA
  • Mantis
  • Bugzilla
  • Trac
  • Atadesk - 심플하고 기본기능에 충실하며 세련된 UI 또한 맘에 들지만 한글 지원이 안되는 것이 최대 단점!



Posted by spponge

댓글을 달아 주세요

사용자 삽입 이미지

현재 .NET 2.0에 VSS로 소스 관리는 하는 환경으로 프로젝트 중이다. CI(Continous Integration) 를 하고자 생각 중에 .NET 에 알맞은 것으로 물망에 오른 것들이
  • Microsoft Team Foundation Server
  • CruiseControl.NET
  • Draco.NET
요런 것들이다. TFS는 .NET 프로젝트에 가장 최적의 기능을 제공하지만 라이센스도 있어야 할 뿐더러 서버 리소스도 많이 먹고 Slq Server 2005도 있어야 한다. 현재 개발서버에 오라클과 웹서비스가 돌아가는데 TFS와 Sql Server 2005까지 깔아서 돌릴려면 무리지 싶다. 더구나 제대로 쓸려면 AD 올리고 TFS와 Sql Server도 별도의 서버에 설치하는걸 권장하는지라 일단 보류...

CruiseControl.NET은 오픈소스이면서도 아주 다양한 기능을 제공하고 .NET이 아닌 다른 플랫폼 버전도 나와있어서 가장 많이 쓰고 안정성도 입증된 듯 하다. 하지만 요놈은 빌드 구성 파일(ccnet.config) 설정이 무척 까다롭다. 기능이 많으면 사용법이 까다로운 법이리라... 구성 파일 생성해주는 툴이라도 있으면 좀 쉬울텐데... 매뉴얼을 봐도 뭔말인지 와닿지가 않는다. 삽질끝에 빌드 자동화까지는 성공했지만 소스세이프에서 소스를 끌어오는 부분이 잘 안된다. 여러가지 설정하는 것도 좀 번거롭고 해서 좀더 심플한 놈을 찾았다.

바로 Draco.NET이다. 설치하면 웹으로 구성파일 셋팅 및 빌드할 프로젝트 설정까지 가능하게 해준다. 설정도 간단히 몇가지만 해주면 된다. 심플한 것이 맘에 든다 싶었는데 한국어 OS에서는 VSS로 부터의 소스 버전 체크가 안된다. Culture를 "en-US"로 해주면 된다는 글을 보고 해봐도 여전히 안된다. Draco.NET의 소스를 VS.NET 7.1로 열어서 DateTime 포맷을 en-US로 고정해주고 컴파일하여 다시 서비스에 올려봐도 여~전히 안된다. 아~미쳐!

위에 말한 두가지 CI 툴들은 분명 사용자가 왠만큼은 되는 툴들인데 이렇게 레퍼런스 할 만한 리소스가 없다니 참... 어이없음이다. Draco.NET의 Wiki는 DB오류로 접속도 안되고... 개똥도 약에 쓸려면 없다더니... 정녕 개발서버의 부하를 안고 TFS로 가야하나?
Posted by spponge

댓글을 달아 주세요