2012년 12월 26일 수요일

CLR에서 60초 동안 COM 컨텍스트 0x606b88에서 COM 컨텍스트 0x606e68(으)로 전환하지 못했습니다


CLR에서 60초 동안 COM 컨텍스트 0x606b88에서 COM 컨텍스트 0x606e68(으)로 전환하지 못했습니다.
대상 컨텍스트/아파트를 소유하는 스레드가 펌프 대기를 수행하지 않거나, Windows 메시지를 펌프하지 않고 매우 긴 실행 작업을 처리하고 있는 것 같습니다.
이러한 상황은 대개 성능에 부정적인 영향을 주며 응용 프로그램이 응답하지 않거나 시간이 흐름에 따라 메모리 사용이 증가하는 문제로 이어질 수도 있습니다.
이 문제를 방지하려면 모든 STA(Single Threaded Apartment) 스레드가 펌프 대기 기본 형식(예: CoWaitForMultipleHandles)을 사용하고
긴 실행 작업 동안 지속적으로 메시지를 펌프해야 합니다.





해결방법은
VS->디버그->예외->Managed Debug Assistants->ContextSwitchDeadlock 체크해제 하기

출처 : http://monsterwave.tistory.com/48



2012년 12월 25일 화요일

실제 근무일수 구하기


select id
, substring(CONVERT(VARCHAR(20), date, 120), 1, 4) as year
, substring(CONVERT(VARCHAR(20), date, 120), 6, 2) as month
, (COUNT(0) - COUNT(hday)) as cnt
from timecard as a
left outer join
(
select substring(CONVERT(VARCHAR(20), date, 120), 1, 10) as hday
from holiday
) as h
on substring(CONVERT(VARCHAR(20), a.date, 120), 1, 10) = h.hday
where datename(dw,date)<>'토요일' and datename(dw,date)<>'일요일'
and a.status<>'퇴근'
group by id, substring(CONVERT(VARCHAR(20), date, 120), 1, 4)
, substring(CONVERT(VARCHAR(20), date, 120), 6, 2)
order by year, month, id



1.     근무일은 출근/지각(퇴근 제외) 된 일수에서 토,일요일을 제외하고 휴일을 제외한 일수입니다.
2.     공휴일날 출근할 경우 근무일수에서 제외됩니다.
3.     토요일, 일요일 출근한 경우 근무일수에서 제외됩니다.
4.     공가, 휴가에 출근한 경우 출근일로 계산됩니다.
A.     공휴일과 주말이 겹치는 경우 공휴일로 계산되지 않습니다. (주말에서 빠졌기 때문에)

mssql 요일 구하기

mssql 요일 구하기


select count(case when a.days not in ('일요일') then 1 end)
  from (
         select dateadd(d, number, '2010-08-01') dt
              , datename(dw, dateadd(d, number, '2010-08-01')) days
           from master..spt_values 
          where type = 'P' 
            and number <= datediff(d, '2010-08-01', '2010-08-10')
       ) a

2012년 12월 20일 목요일

윈도우8 시작 프로그램 위치

윈도우8 시작 프로그램 위치



BS가 Shift+Space 로 한영 전환하는 KeyLED를 만들어 사용하는데
시작 프로그램으로 어떻게 등록해야 할지 도무지 알 수 없는 Windows 8 의 UI...
아래와 같이 하면 시작 프로그램 경로가 나옵니다.

c# 배포 프로젝트 만들기!


c# 배포 프로젝트 만들기!

안녕하세요? 맨날맑음 입니다.

.NET 으로 프로젝트를 만들고, 배포를 하는 방법은 Click Once같은 방법도 있지만 이번에는 Windows Installer 배포에 대해 알아보겠습니다. 기존에 .Net으로 프로젝트 개발만 해보았지, 배포는 신경을 쓰지 않아 잘 모르다가, 이번에 VS2008에서 기본으로 제공되는 배포 프로젝트의 사용법을 알아 보았습니다.
아래 링크를 따라가면 배포프로젝트에 관한 MSDN 도움말을 보실 수 있습니다.
http://msdn.microsoft.com/ko-kr/library/206sadcd(VS.80).aspx

우선 배포할 프로그램을 준비합니다. 저는 간단한 윈폼 프로젝트로 하겠습니다.

VS2008에서 새 프로젝트를 추가 하고, 기타 프로젝트 형식 -> 설치 및 배포 -> 설치프로젝트를 선택합니다.

다음과 같이 배포 프로젝트가 생성됩니다.

솔루션 탐색기와 속성 창을 보면 아래와 같이 프로젝트와, 여러 속성이 보이게 됩니다.
이제 이 속성들의 의미를 하나하나 알아보겠습니다.
▷AddRemoveProgramIcon : 제어판 -> 프로그램 추가/제거에 표시될 아이콘을 등록합니다.
▷Author : 프로젝트 작성자의 이름을 등록합니다.
▷Desciption : 설치 관리자에 관한 설명을 등록합니다.
▷DetectNewerInstalledVersion : 프로그램 설치시 버전 비교를 통해 새 버전인지 확인 해 줍니다. 이미 설치 되있을 경우 설치 되어있다고 알려주기도 합니다.
▷Keyword : 설치 관리자를 검색하는데 사용 할 키워드를 지정합니다.
▷Localization : 로케일을 적용한다고 하는데, 글로벌 프로그램이 아니라면 신경 안써도 될 듯 합니다.
▷Manufacturer : 제조업체의 이름을 지정합니다
▷MunufacturerUrl : 제조업체의 홈페이지 링크를 지정.
▷PostBuildEvent : 배포프로젝트를 빌드한 후에 실행 할 명령줄을 지정합니다.
▷PreBuildEvent : 배포프로젝트를 빌드하기 전에 실행 할 명령줄을 지정합니다.
▷ProductCode : 응용프로그램의 고유 식별자(GUID)를 지정합니다.
▷ProductName : 프로그램의 공개 이름을 지정합니다.
▷RemovePrevionsVersions : 설치시 이전버전을 삭제 할지를 지정합니다.
▷RunPostBuildEvent : PostBuildEvent 속성에서 지정된 명령줄을 실행할 시기를 결정합니다.
▷SearchPath : 개발 컴퓨터의 어셈블리, 파일 또는 병합 모듈을 검색하는 데 사용되는 경로를 지정합니다.
Subject : 프로그램을 설명하는 추가정보를 지정합니다.
▷SupportPhone : 전화번호를 지정합니다.
▷SupportUrl : 마찬가지로 추가 설명을 하는 웹사이트 주소TargetPlatform : 프로그램이 실행될 플랫폼을 지정.
▷Title : 설치 관리자의 제목을 지정합니다.
▷UpgradeCode : 프로그램 버전이 여러가지 일때 고유식별자를 지정합니다.
▷Virsion : 버전을 지정합니다.




속성 참 많네요.. 정작 중요한건 ProductName, Title, Author, MAnufacturer 정도 입니다.

이제 파일시스템 탭으로 이동하여 대상 컴퓨터의 파일 시스템 -> 응용 프로그램 폴더를 선택한 후 속성창을 확인합니다.

DefalutLocation이라는 속성에 [ProgramFilesFolder][Manufacturer]\[ProductName] 라고 되어 있습니다. 인스톨시 프로그램이 설치될 폴더 인데요. 이 설정으로 하게 되면 프로그램파일 폴더 밑에 제조회사명 밑에 프로그램 이름 폴더 안에 깔리게 되겠습니다. 맘에 드는 폴더로 변경 하시면 됩니다.

이제 파일을 추가 해 보겠습니다. 응용 프로그램 폴더에서 마우스 오른쪽 버튼을 누르면 파일이나 폴더등을 추가 할 수 있습니다. 미리 만들어 놓은 샘플 어플리케이션을 추가 하겠습니다.


이렇게 하면 앞서 지정된 설치 폴더에 MainApp.exe가 설치 됩니다. 명색이 인스톨 프로그램인데 이것만 지정하면 안되겠죠? 위에 사용자 바탕화면사용자 프로그램 메뉴가 보입니다.
말 그래로 사용자 바탕화면은 바탕화면에 설치 될 파일을 지정 할 수 있고, 사용자 프로그램 메뉴는 [시작]->[프로그램]의 폴더나 파일을 지정 할 수 있습니다.
바탕화면과 프로그램 메뉴에 MainApp.exe의 바로가기를 넣어주면 클라이언트가 아주 편리 할 것 같습니다.
MainApp.exe를 마우스 오른쪽 버튼으로 클릭하여 바로가기를 만듭니다. 저는 두개를 만들어 이름을 원하는데로 변경한 후 하나는 사용자 바탕화면으로 끌어다 놓았고, 사용자 프로그램 메뉴에는 [새폴더]를 하나 추가 하여, 그 안에 넣었습니다. 그리고 아이콘 파일(.ico)도 하나 추가하여 바로가기의 속성중 Icon에 연결 시켜 줍니다. 그럼 바로가기가 우리가 지정한 아이콘으로 생성 됩니다.

이제 언인스톨 기능을 하는 바로가기도 지원해 주어야 좀 더 있어보일 것입니다. 
바탕화면에서 텍스트문서(txt)를 하나 추가해서 확장자를 bat로 바꾸어 줍니다. 편집기로 파일을 열어 Msiexec /x {ProductCode} 를 추가 해 줍니다. 여기서 ProductCode는 위에 프로젝트 속성중에 있던 코드 입니다. 지금 예제 대로 하면 Msiexec /x {A1715BBB-A953-4F01-B788-168542ED2BC3} 이 되겠네요.

현재 배포하는 샘플 프로그램이 매우 간단하여 파일이 하나이지만, 대부분의 응용은 여러 DLL을 포함하고 있을것입니다. 그리고 각 파일마다 설치하고 싶은 경로가 다를 수 있는데, 파일시스템 탭의 대상 컴퓨터의 파일 시스템을 오른쪽 버튼으로 누르면 특수폴더 추가에서 원하는 폴더를 추가 할 수 있습니다.

이제 이 파일을 응용프로그램 폴더에 포함 시켜주고, 마찬가지 방법으로 바로 가기를 만들어서 원하는 곳에 추가 시켜 줍니다. 프로젝트를 다시 빌드 하고 테스트 해보겠습니다. 프로젝트 폴더의 Relese 폴더에 들어가니 파일이 두개 보입니다.(Relese모드로 빌드 했을 경우, Debug 모드 일경우 Debug 폴더에 생성)
Setup.exe를 더블 클릭하니 설치가 잘 됩니다. 
설치시 생긴 바로가기 아이콘으로 Uninstall도 잘되는지 확인해 보겠습니다.
정상적으로 잘 되는걸 볼 수 있습니다. 쓰다 보니 스크롤의 압박이군요;
만약 설치 대상컴퓨터(클라이언트)에 .Net Framwork가 없을때 자동으로 설치되게 하는 것 까지 쓰려고 했는데,
다음편으로 넘겨야 할 것 같습니다. 다음편에는 이같은 기능을 해주는 Boot Strapper에 관해 포스팅 하겠습니다. 



2012년 12월 6일 목요일

VS2012 ClickOnce Applications not working on Windows XP

VS2012 ClickOnce Applications not working on Windows XP
올바른 win32 응용 프로그램이 아닙니다

윈도우XP의 경우 VS2012 에서 ClickOnce 로 배포할 경우 문제가 된다.




While installing on WinXP ,following error apperad error message
On Win7 application installed without problem. Windows forms app and WPF app both have the same problem and both of them worked correctly before in VS 2010.





해결책
VC++ 해결책
http://blogs.msdn.com/b/vsnetsetup/archive/2012/10/16/setup-exe-is-not-a-valid-win32-application.aspx

C# Winform
Xp Full Upgrade <<<<---- OK

2012년 12월 4일 화요일

HP Universal Printing PCL 6 Print Driver

HP Universal Printing PCL 6



HP Universal Print Driver Series for Windows
Product image
not available 
» Choose another product
» Create a personal product profile (Why register?)
 Select your product
»HP Universal Print Driver for Windows
»HP Universal Print Driver for Windows - PCL 5
»HP Universal Print Driver for Windows - PCL 6
»HP Universal Print Driver for Windows - Postscript
»HP Universal Print Driver for Windows 64-bit PCL 5
»HP Universal Print Driver for Windows 64-bit PCL 6
»HP Universal Print Driver for Windows 64-bit PS

Search products

Enter the product name or number directly: 
(e.g., vectra vl600, e.g., D5555A) 
 
 

Hot topics for this product

» Forums Expert Day - January 9th/10th
» HP Business Support Site - text unreadable or too small using IE8 or IE9
» Business Support Center Improvements Coming Soon


http://h20000.www2.hp.com/bizsupport/TechSupport/ProductList.jsp?locale=en_US&taskId=135&prodTypeId=18972&prodSeriesId=503548