이번주의 주식시장은 지난주에 예고드린대로 국제유가와 유로존 문제로 인해 주가가 하락후 요동치는 한주였습니다. 더우기 지난 금요일 임금상승률이 안좋았던 이후로 경제지표가 계속 안좋은 모습이 나타나고 있습니다.

사실 지난 몇달간 미국 경제지표는 발표될때마다 예상을 상회하는 모습을 많이 보였기 때문에 이제 지표발표들이 안좋은 모습을 보일 때가 되긴 했습니다.

과연 이러한 지표들이 저조한 것이 한동안 좋은 성적이었던 것에 대한 일부 하락인지 아니면 실제 미국경제가 슬로우 해지는 것인지 좀더 두고 봐야 할 것 같습니다.

제 개인적인 의견은 2014년의 급속한 회복세에 따른 이후의 회복세의 둔화는 당연한 것이라고 보여집니다. 다만 미국외적인 문제로 회복세의 둔화가 장기화하지 않기를 바랍니다.


다음주의 첫날 월요일(1월 19일)은 마틴루터킹 주니어 기념일로 정부기관과 많은 회사들이 쉬는 휴일입니다.(미국은 모두쉬는 공휴일이라는 개념이 별로 없습니다.) 마찬가지로 주식시장도 쉽니다. (저희 회사는 쉬지 않습니다만 애들이 학교를 쉬는 관계로 저는 그냥 자체 휴일로 했습니다. ㅎㅎㅎ)


오는 주는 집에 관계된 지표발표를 유심히 살펴보시고 이제 본격적인 어닝시즌에 들어섰습니다. 시장은 한동안 어닝에 집중할 것으로 보입니다.


 

NEXT WEEK'S U.S. ECONOMIC REPORTS
TIME (ET)REPORTPERIODACTUALCONSENSUS
FORECAST
PREVIOUS
MONDAY, JAN. 19
 None scheduled
Martin Luther King Jr. Day
    
TUESDAY,  JAN. 20
10 amHome builders' indexJan. 5757
WEDNESDAY, JAN. 21
8:30 amHousing startsDec. 1.035 mln1.03 mln
THURSDAY, JAN. 22
8:30 amWeekly jobless claimsJan. 17 N/AN/A
9 amFHFA home price indexNov. --4.5% y-o-y
9:45 amMarkit PMI flashJan. --53.9
FRIDAY, JAN. 23
8:30 amChicago Fed national activity indexDec. --0.48 (3-month)
10 amExisting home salesDec. 5.04 mln4.93 mln
10 amLeading indicatorsDec.--0.6%
 

  

Posted by 도움돌 :


서비스프로그램은 프로그램의 특성상 많은 수의 서비스프로그램들이 Local Admin 권한을 가지고 실행된다.

이러한 서비스의 특성상 다른 프로그램과의 통신은 제약을 가질 수 밖에 없다.

예를들면 윈도우 메시지는 서비스와 다른 응용프로그램사이에 전달이 안된다. 

따라서 서비스 프로그램을 처음 개발하는 개발자들은 다른 응용프로그램과의 통신을 위해 고민하는 경우가 생기는데, 막상 가장 유용한 방법은 아마도 네임드 파이프(Named Pipe)를 사용하는 방법일 것이다.

윈도우즈 프로그래머라면 네임드 파이프에 대해 잘 알테니 그 부분은 생략하기로 하고.

이 문서에서는 서비스가 통신할 때 발생할 수 있는 간단한 문제와 그 해결방법을 보여주고자 한다.


막상 서비스프로그램을 작성하고 간단한 테스트프로그램을 작성하여 통신을 하면 잘 동작하는 듯이 보인다. 만약 서비스프로그램이 동일한 컴퓨터안의 프로그램과 통신을 하는 것이 아닌, 다른 컴퓨터와도 원격파이프를 사용하여 통신을 해야한다면 다른 컴퓨터로부터의 파이프 입력이 안된다거나, 또는  일반유저프로파일 상의 프로그램과 통신을 해야 한다면 서비스의 파이프에 적속할 수 없다는 것을 알게 될 것이다.

이유는 간단하다. 서비스는 시스템 어카운트로 실행중이기 때문에 시스템 어카운트가 생성한 네임드 파이프에 다른 유저권한의 응용 프로그램이 접속할 수 없기 때문이다.

이런 경우 해결방법은 파이프를 생성할 때 시큐리티 어트리뷰트에 Everyone의 억세스 권한을 가진 시큐리티 디스트립터를 생성해서 적용해 주면 된다.

해결방법은 아래와 같다.


  DWORD dwPipeOpenMode = PIPE_ACCESS_INBOUND|FILE_FLAG_OVERLAPPED|PIPE_ACCESS_DUPLEX;


  SECURITY_ATTRIBUTES sa;

  SECURITY_DESCRIPTOR sd;

  if (InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)) {

    if(!SetSecurityDescriptorDacl(&sd, TRUE, (PACL)NULL, FALSE)) {

      DbgOutW(L"SetSecurityDescriptorDacl failed %d\n\n", GetLastError());

    }

  }

  sa.nLength = (DWORD) sizeof(SECURITY_ATTRIBUTES);

  sa.lpSecurityDescriptor = (LPVOID)&sd;

  sa.bInheritHandle = TRUE;


  while(m_bServerThread) {

    m_hCurrentPipe = CreateNamedPipe(m_wszPipeName,       // pipe name 

                            dwPipeOpenMode,

                            PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,

                            PIPE_UNLIMITED_INSTANCES, // max. instances  

                            BUFSIZE,                  // output buffer size 

                            BUFSIZE,                  // input buffer size 

                            1000,                     // client time-out 

                            &sa);                    // default security attribute 




Posted by 도움돌 :