'개꿈닷넷'에 해당되는 글 25

  1. 2012.04.06 C브라우저 3.4 업데이트
  2. 2012.03.11 C Browser 3.3 업데이트
  3. 2009.03.31 울타리 2.7 업데이트
  4. 2009.02.17 울타리 2.6 업데이트
  5. 2009.02.01 Why do you have to study experience? (1)
  6. 2008.11.28 울타리 2.3 업데이트!
  7. 2008.09.04 클릭 투 트윅 3.7 업데이트
  8. 2008.09.03 울타리 2.0 업데이트!!! (2)
  9. 2008.06.02 Pipe 를 사용한 Inter Process Communication. (1)
  10. 2008.05.27 울타리 1.77 버전 업데이트!

C브라우저 3.4 업데이트

C브라우저 3.4로 업데이트 되었습니다.

프로그램 다운로드는 아래의 첨부 파일을 받으시거나,

http://data.rodream.org/index.htm?page=download 또는, http://data.rodream.org/index.htm?page=spell 를 누르시면 됩니다.

cbr_setup.exe


이번 업데이트에서는 호환성에 문제가 발생할 수 있는 문제였던,

attachEvent메소드 비활성화 기능을 좀 더 선택적으로 적용 가능하도록 바꾸었습니다. 

(다소 호환성에 문제가 있지만, 예전 버전 처럼 강력한 펌방지 해제를 위해서 항상 attachEvent메소드 비활성화 하기를 선택할 수 있습니다.)


다음으로, 전체 즐겨찾기 보기 창을 새롭게 추가하였습니다.


기존 즐겨찾기 메뉴가 불편하셨거나, 즐겨찾기가 너무 많아 힘드셨던 분들은 이 창을 통해 좀 더 쉽게 즐겨찾기를 사용하실 수 있을 것이라 생각됩니다.


신고
TRACKBACK 0 COMMENT 0

C Browser 3.3 업데이트

C 브라우저가 3.3 으로 업데이트 되었습니다. 

이번 버전에서는, 

1. 최근 업데이트로 인하여 막혔던 웹 사이트에 대한 대응 
2. 스크립트 오류로 인한 프로그램 오류 수정 

이 주 업데이트 내용입니다. 

다운로드는, http://rodream.net 또는 설명 페이지 에서 받으실 수 있습니다.
 
신고
TRACKBACK 0 COMMENT 0

울타리 2.7 업데이트

울타리
{ PROTECTS YOUR SYSTEM FROM MALWARE }
최신 버전 : 2.7, 업데이트 날짜 : 2009년 3월 26일
 울타리는 매우 간단하고 쉬운 악성 코드 제거 프로그램입니다. 간단하게 보이지만 매우 강력한 악성 코드 제거 성능을 자랑하며, 완전 무료인 프로그램입니다.
 이미 많은 사용자들이 감격의 성능을 경험하고 있는 울타리, 지금 바로 경험해보세요!

 P.S. 울타리란 이름은, 자신의 컴퓨터를 안전한 울타리 안에 두어, 외부의 악성코드들로부터 보호한다는 순 한글 이름입니다.
[ 자세히 알아보기... ]
신고
TRACKBACK 0 COMMENT 0

울타리 2.6 업데이트

울타리
{ PROTECTS YOUR SYSTEM FROM MALWARE }
최신 버전 : 2.6, 업데이트 날짜 : 2009년 2월 17일
 울타리는 매우 간단하고 쉬운 악성 코드 제거 프로그램입니다. 간단하게 보이지만 매우 강력한 악성 코드 제거 성능을 자랑하며, 완전 무료인 프로그램입니다.
 이미 많은 사용자들이 감격의 성능을 경험하고 있는 울타리, 지금 바로 경험해보세요!

 P.S. 울타리란 이름은, 자신의 컴퓨터를 안전한 울타리 안에 두어, 외부의 악성코드들로부터 보호한다는 순 한글 이름입니다.
[ 자세히 알아보기... ]


이번 업데이트에는, 오토런 바이러스를 차단하는 프로그램이 추가되었습니다.
오토런 바이러스의 대표적인 예로는 최근 이슈화되고 있는 2090 바이러스가 있습니다.

자세한 내용은, http://rodream.net 을 참고하여 주십시오 ^^

신고
TRACKBACK 1 COMMENT 0

Why do you have to study experience?

왜 사용자의 경험에 대한 학습을 해야 할까?

이 이야기는 다소 현실적인 주제로 흘러갈 수 밖에 없다. 우리가 사용자의 경험에 대한 학습을 하는 이유에 대해서, 대부분은 사용자에게 좋은 경험을 제공하기 위해서라는 교과서 적은 답변을 할 것이다.

물론, 이 역시 맞는 말이다. 우리가 잘 알고 있는 Microsoft 에서도 참으로 많은 사용자 경험(이하UX)에 대한 학습을 진행하고 있고, 그 결과로 우리는 새로운 운영체제에 대해서 생각보다는 적은 시간을 투자하여 익숙해지고, 편리하다고 느낄 수 있는 것이다.
일반적으로, 제품은 특별한 UX 에 대한 고려가 없는 경우에는 그 제품을 만드는 사람의 경험에 의해서 디자인 되게 된다. 만약, 어떤 제품이 UX 에 대한 고려 없이 만들어졌다고 한다면, 그 제품을 만든 사람의 경험에 따라 사용하기 쉽도록 만들어진다. 만약, 그 제품이 소프트웨어라고 한다면, 키보드 사용에 익숙한 사용자가 개발한 프로그램은 키보드 만으로 충분히 많은 조작을 할 수 있을 것이고, 비교적 마우스를 즐겨 사용하는 사용자에게는 그다지 맞지 않을 수 있다.

이렇게 UX 는 좀 더 많은 사용자들, 특히 제품을 개발하는 당사자(혹은 회사)의 구성원들과는 다른 구성원들의 요구(Needs)에 적합하도록 만들 수 있을 것이다.
하지만, 이러한 내용들이 항상 유효하게 받아들여지는 것은 아니다. 이러한 UX 에 대한 고려가 유효해지기 위해서는 반드시 경쟁이 있어야 한다. 독점 상태인 물건에 대해서는 일반적으로 UX 가 유용하지 않다. 왜냐하면, 독점 상태로 오래 지속된 제품의 경우, 그 제품의 초기 형태 자체가 이미 사용자들의 경험으로 굳어졌기 때문이다. 이는, 실질적으로 그 제품이 좋은 인터페이스를 가지고 있었던 것이 아니라, 사용자들이 오랜 시간을 거치면서 그 인터페이스에 적응한 결과이다.

앞에서 설명한 Microsoft 의 운영체제의 경우에는 사실상 독점이라는 의견도 있을 것이다. 하지만, 이 경우에는 다른 회사의 운영체제와의 비교보다는, 오히려 Microsoft 에서 만든 이전의 운영체제와의 비교가 문제가 된다. 이전의 운영체제보다 더 좋은 사용자의 경험을 제공하기 위해서 Microsoft 는 UX 에 대한 고려를 해야 하며, 그 주된 대상은 경쟁사의 제품이 될 수 도 있고, 자사의 이전 버전의 제품이 될 수 도 있는 것이다.

사실, UX 에 대한 고려가 대두되고, 이것이 필요한 이유는, 앞에서 장황하게 설명한 내용보다는 좀 더 현실적인 이야기로 풀어낼 수 있다. 바로, UX 에 대한 고려가 없는 제품들이 존재하고, 이에 대하여 만족하지 못한 사용자들이 만들어내는 새로운 시장이 있기 때문이다. 만약 이 새로운 시장이 없다면, 우리는 UX 에 대한 고려를 하지 않아도 될 것이다. 하지만, 이들 사용자는 새로운 시장에 대한 요구(Needs)를 항상 가지고 있으며, 그에 대한 응답을 하여 준다면, 시장을 창출할 수 있다. 예를 들면, 복잡한 금융권 사이트를 한꺼번에 간단 명료하게 묶어 놓은 모네타(http://moneta.co.kr) 사이트가 그 예가 될 수 있을 것이다.

언젠가 UX 에 대한 고려가 일반화 된다면, 우리는 어떤일을 하는 것에 있어서 UX 를 항상 고려 해야 할 것이다. 하지만, UX 에 대한 고민은 어딘가에서 그 정도가 정해져있고, 끝이나는 것이 아니기 때문에, 좀 더 좋은 고민은 항상 새로운 시장을 창출할 수 있을 것이다.

이렇게 , UX 는 블루오션을 만들어내는 발전 동력이기 때문에, 우리는 UX 에 관심을 가지고 집중하여야 한다.
신고
TRACKBACK 0 COMMENT 1

울타리 2.3 업데이트!

울타리
{ PROTECTS YOUR SYSTEM FROM MALWARE }
최신 버전 : 2.3, 업데이트 날짜 : 2008년 11월 26일
 울타리는 매우 간단하고 쉬운 악성 코드 제거 프로그램입니다. 간단하게 보이지만 매우 강력한 악성 코드 제거 성능을 자랑하며, 완전 무료인 프로그램입니다.
 이미 많은 사용자들이 감격의 성능을 경험하고 있는 울타리, 지금 바로 경험해보세요!

 P.S. 울타리란 이름은, 자신의 컴퓨터를 안전한 울타리 안에 두어, 외부의 악성코드들로부터 보호한다는 순 한글 이름입니다.
[ 자세히 알아보기... ]
신고
TRACKBACK 0 COMMENT 0

클릭 투 트윅 3.7 업데이트

클릭 투 트윅이 3.7 버전으로 업데이트 되었습니다!

현재 다운로드 서버(드림위즈 서버)가 종료일을 앞두고 있어서,
프로그램을 업데이트 하지 않으신 분은 최신 버전 정보를 받을 수 없습니다.

최신 버전의 프로그램을 사용하지 않으면 여러가지 문제들이 발생하였을 때, 적절한 지원을 받지 못할 수 있으니, 반드시 업데이트를 하여 주시기 바랍니다.



클릭 투 트윅
{ THE BEST WINDOWS OPTIMIZATION SOLUTION }
최신 버전 : 3.7, 업데이트 날짜 : 2008년 9월 2일
 클릭 투 트윅은 어려운 윈도우의 설정을 쉽게 도와주고, 컴퓨터의 성능을 최적화하여 사용하기 빠르고 편리한 작업 환경을 만들도록 도와주는 프로그램입니다.

 또한, 이 프로그램은 컴퓨터의 성능을 최적화 하기 위한 기능 이외에도 필요한 많은 유틸리티 기능들을 포함하고 있는, 통합 최적화 솔루션 입니다.
[ 자세히 알아보기... ]
신고
TRACKBACK 0 COMMENT 0

울타리 2.0 업데이트!!!

울타리 프로그램이 업데이트 되었습니다!

2.0 버전으로 업데이트 되었으며, 대대적인 디자인 업데이트가 있었습니다.

현재 다운로드 서버(드림위즈 서버)가 종료일을 앞두고 있어서, 프로그램을 업데이트 하지 않으신 분은 악성코드DB 및 최신 버전 정보를 받을 수 없습니다.

악성코드DB 가 최신이 아니면, 검색 능력이 현저하게 떨어지게 되므로, 반드시 업데이트를 하여 주시기 바랍니다.


울타리

{ PROTECTS YOUR SYSTEM FROM MALWARE }
최신 버전 : 2.0, 업데이트 날짜 : 2008년 9월 2일
 울타리는 매우 간단하고 쉬운 악성 코드 제거 프로그램입니다. 간단하게 보이지만 매우 강력한 악성 코드 제거 성능을 자랑하며, 완전 무료인 프로그램입니다.
 이미 많은 사용자들이 감격의 성능을 경험하고 있는 울타리, 지금 바로 경험해보세요!

 P.S. 울타리란 이름은, 자신의 컴퓨터를 안전한 울타리 안에 두어, 외부의 악성코드들로부터 보호한다는 순 한글 이름입니다.
[ 자세히 알아보기... ]


신고
TRACKBACK 1 Comment 2

Pipe 를 사용한 Inter Process Communication.

PipeVista.rar

소스 파일 다운로드

 Windows Vista 에 들어오면서 많은 것들이 바뀌었다. 그 중 가장 큰 변화중 하나가 바로 UAC 이다. UAC 의 새로운 등장으로 인하여, 많은 프로그래머들이 아무생각 없이 사용해왔던, 관리자 권한 Software 들이, 더 이상 아무런 사용자의 동의 없이 실행될 수 없게 되었다.
 이러한 제약 사항들은 운영체제나 사용자의 보안성에 좋은 영향을 주지만, 시스템 유틸리티나 보안 소프트웨어를 개발하는 사람들에게 있어서는 매우 치명적인 일이 될 수 밖에 없다.

 하지만, Windows Vista 에서도, 시스템 유틸리티나 보안 소프트웨어를 개발하는 프로그래머들을 위한 길을 아예 없애버린것은 아니다. 단지, 좀 더 명확한 정책을 따르도록 변경된 것일 뿐이다. 일반적으로 Windows XP 혹은 그 이전에는 '서비스 프로그램' 이 그다지 많은 호응을 받지 못했다. 왜냐하면, 서비스 프로그램은 만들기도 힘들고, 관리도 귀찮았기 때문이다. 하지만, Windows Vista 와 UAC 가 등장하면서 부터, 서비스 프로그램은, 관리자 권한 프로그램을 실행하고자 할 때 가장 안전하고 간편한 방법 중 하나이다. 이번에는 이러한 서비스 프로그램을 사용할 때 가장 문제가 되는 Inter Process Communcation 에 대하여 알아볼 것이다.

 먼저, IPC 를 하는 방법은 여러가지가 있다. WM_COPYDATA 를 사용하는 방법, Shared Memory 를 사용하는 방법, Pipe 를 사용하는 방법, Socket 을 사용하는 방법...등 매우 다양한 IPC 방법들이 존재한다. 하지만, 여기서 다루고자 하는 것은 Pipe 을 사용하는 방식이다. 왜 이 방법을 택해야 하는 걸까? 그에 대한 답변은 매우 간단하다. 먼저, 메시지를 주고 받는 방법은 서비스 프로그램과 IPC 를 할 대상 프로그램과의 Desktop 이 다른 경우 사용할 수 없다. Shared Memory 의 경우도 앞의 경우와 같은 문제를 가지고 있는데, Session 이 다른 경우, 다른 Session 의 Shared Memory에 접근할 수 없다. Socket의 경우에는 가능은 하지만, 단순한 IPC 를 위해서 Socket 을 사용하는 것은, 구덩이를 파기 위해 포크레인을 동원하는 것과 같다.

사용자 삽입 이미지

[그림1] Shared Memory (Section) 는 Session 마다 개별적으로 이름을 가지게 되며(e.g. \Session\1\이름) 각 Session 은 다른 Session 의 Section 을 침범할 수 없다.



그래서 결국 선택된 것이 Pipe 이다. Pipe 는 간단한 IPC 를 구현하는데 유효하며, 프로그램이 실행되는 Desktop 이나 계정에 상관없이, 공유가 가능하다.

 Pipe 는 CreateNamedPipe 함수와 ConnectNamedPipe 함수를 통하여 초기화 작업을 진행한다. 그 이후로는 ReadFile 과 WriteFile 을 사용하여 데이터에 접근하게 된다.

CPipeServer
CPipeServer 는 필자가 비스타에서 서비스 프로그램과 IPC 를 하기 위하여 만든 Pipe Server 클래스 이다. 이 클래스는 StartPipeServer 함수를 가지고 있으며, 이 함수를 호출하면, 서버 파이프를 초기화 하고, 클라이언트의 접속을 대기하는 쓰레드를 생성한다.

앞에서 설명한 대로라면, Pipe 는 Vista 에서 쉽게 동작하는 것 처럼 보였지만, 실제로는 한가지 더 신경써줘야 할 것이 있다. 바로 Pipe 의 권한이다. Vista 의 UAC 는 프로그램마다 권한을 가지도록 하였으며, 낮은 권한의 프로그램이 높은 권한의 프로그램이 가지고 있는 리소스에 접근할 수 없도록 제한하고 있다. 그래서 필요한 것이, Pipe 의 권한을 조절하는 것이다.

  BYTE sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
  SECURITY_ATTRIBUTES sa;
 
  sa.nLength = sizeof(sa);
  sa.bInheritHandle = TRUE;
  sa.lpSecurityDescriptor = &sd;
 
  InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
  SetSecurityDescriptorDacl(&sd, TRUE, (PACL) 0, FALSE);

     
  hPipe = CreateNamedPipe(
   pInfo->szPipeName,             // pipe name
   PIPE_ACCESS_DUPLEX,       // read/write access
   PIPE_TYPE_MESSAGE |       // message type pipe
   PIPE_READMODE_MESSAGE |   // message-read mode
   PIPE_WAIT,                // blocking mode
   PIPE_UNLIMITED_INSTANCES, // max. instances 
   BUFSIZE,                  // output buffer size
   BUFSIZE,                  // input buffer size
   0,                        // client time-out
   &sa);                    // default security attribute
 
위의 코드는 Pipe 를 생성할 때, Security Attribute 속성을 지정하여, 낮은 권한의 프로그램에서도 해당 Pipe 를 열 수 있도록 허용하는 코드이다.

이렇게 만들어진 Pipe 서버는 특정한 값을 받아서 처리하게 된다. 이 소스에서 필자는 Pipe 의 간단한 프로토콜을 정의하였는데, 그것은 다음과 같다.

프로토콜 정의

[CMDS (정상적인 PIPE 패킷이라는 서명(sign)), 4바이트]
[명령, 4바이트]
[명령 번호, 4바이트]
[추가 정보 길이, 4바이트]
[추가 정보, 추가 정보 길이에 명시된 길이 ~ 버퍼의 최대 길이]

이 프로토콜에 맞는 형식을 갖춘 데이터들은 내부적으로 사용자가 지정한 함수 포인터를 호출한다. 그리고 마지막으로, 그렇게 호출된 함수의 반환값을 다시 클라이언트에 보내주는 것으로 서버는 하나의 패킷에 대한 처리를 마무리 하게 된다.

이 클래스를 사용하는 방법은 매우 간단하다.
먼저, 클래스를 선언한 후, StartPipeServer 함수를 호출해 주면 된다.

다음은 간단한 예제이다.

#include "PipeServer.h"
CPipeServer g_pipeServer;

int WINAPI ProcessIO(DWORD dwCmd, DWORD dwCmdNumber, DWORD dwLen, char* lpszData, DWORD* pdwRetLen, char* lpszReturn)
{
 char szMsg[1024];
 sprintf(szMsg, "Cmd : %d, CmdNumber : %d, dwLen : %d, lpszData : %s",
  dwCmd, dwCmdNumber, dwLen, lpszData );

 strcpy( lpszReturn, "ProcessIO 에서 처리한 내용! : " );
 strcat( lpszReturn, szMsg );
 *pdwRetLen = strlen(lpszReturn);

 return 0;
}


DWORD WINAPI ServiceExecutionThread(LPDWORD param)
{
 g_pipeServer.StartPipeServer( "\\\\.\\pipe\\VistaSvcIPC", ProcessIO );
 return 0;
}

이렇게 구성된 프로그램을 서비스로 만들고, 일반 권한 프로그램에서 이 서비스와 통신하게 할 수 있다. 클라이언트에 대한 코드는 아래와 같다.

void CNormalPrgDlg::OnButton1()
{
 static BOOL bConnected = FALSE;

 if(bConnected) {
  CString szText;
  m_edt.GetWindowText( szText );

  char szBuffer[BUFSIZE] = { 0, };
  char szRetData[BUFSIZE] = { 0, };
  DWORD dwRetLen = 0;
  strcpy(szBuffer, szText);
  g_pipeClient.Send(1024, GetTickCount(), strlen(szBuffer)+1, szBuffer, &dwRetLen, szRetData);
 
  m_lst.InsertString(0, szRetData);
 } else {
  bConnected = g_pipeClient.ConnectPipe("\\\\.\\pipe\\VistaSvcIPC");
 }
}

 이 예제가 동작하는 모습은 아래와 같다.

사용자 삽입 이미지

[그림2] 실제 IPC 예제 프로그램이 동작하는 화면



첨부된 파일의 소스는 서버와 클라이언트이며, MFC 를 기반으로 작성되어 있다.


 

신고
TRACKBACK 1 COMMENT 1

울타리 1.77 버전 업데이트!

울타리
{ PROTECTS YOUR SYSTEM FROM MALWARE }
최신 버전 : 1.77, 업데이트 날짜 : 2008년 5월 22일
 울타리는 매우 간단하고 쉬운 악성 코드 제거 프로그램입니다. 간단하게 보이지만 매우 강력한 악성 코드 제거 성능을 자랑하며, 완전 무료인 프로그램입니다.
 이미 많은 사용자들이 감격의 성능을 경험하고 있는 울타리, 지금 바로 경험해보세요!

 P.S. 울타리란 이름은, 자신의 컴퓨터를 안전한 울타리 안에 두어, 외부의 악성코드들로부터 보호한다는 순 한글 이름입니다.
[ 자세히 알아보기... ]

개꿈닷넷에서 배포하는 무료 프로그램 받으러 가기!!
신고
TRACKBACK 0 COMMENT 0