2009년 6월 24일 수요일

로지텍, 선명한 사운드 2.1채널 스피커 'Z-Cinema'

 

2.1채널인데 가격땜시롱 후달린다.

현재 다놔 최저가 236,000원 ㄷㄷㄷ, 중고 직거래가도 대략 200,000원 언저리 근처.

또한 윈도 XP Media Center Edition을 설치해야 무선 리모컨의 모든 기능을 쓸수 있다.

 

로지텍, 선명한 사운드 2.1채널 스피커 'Z-Cinema'

PC 주변기기 전문기업 로지텍코리아는 2.1채널의 PC스피커 '로지텍 Z-Cinema 어드벤스 서라운드 사운드 시스템'을 오는 출시한다.
로지텍 'Z-Cinema 서라운드 사운드 시스템'은 후면 스피커 없이 360도 서라운드 사운드를 구현하는 'SRS TruSuround HD'를 장착해 사용자 주변에 광범위한 최적의 감상위치(Sweet Spot)를 만들어주고, 센터 채널의 대사전달 능력을 강화해 음성이 선명하다.
또한 PC환경에서 자연스럽고 균형 잡힌 음악감상을 제공할 수 있도록 디지털크로스오버 이퀄라이저가 탑재된 '프리미엄 3앰프 방식'을 구동한다. 이 '프리미엄 3앰프 방식'은 하이브리드 클래스D와 AB앰프를 사용해 고/중/저 주파수를 정확하게 잡아내는 기술로 디지털 이퀄라이징 신호를 제공해 음의 왜곡을 최소화하고 광범위한 음장을 만들어낸다.
'레이저 튜닝 드라이버' 설게를 적용해 1인치 트위터와 3인치 환기형 미드우퍼, 8인치 롱스로우 서브우퍼가 정확한 주파수 응답 및 사운드의 디테일, 명확성을 제공한다.

또 하나의 USB 케이블에 24비트 오디오신호를 제공한 '24비트 USB 디지털오디오 케이블'을 적용해 PC 사운드 카드 없이 쉽고 간편한 설치를 할 수 있고, 왜곡 없는 데이터를 전송으로 PC설정에 상관없이 Hi-Fi급의 고성능 사운드를 즐길 수 있다.

PC 엔터테인먼트 체험을 위한 미디어센터 리모컨이 있어 인터넷 라디오, 재생목록 등의 디지털 미디어를 손쉽게 사용할 수 있고, 편리한 스크롤휠이 탑재돼 TV프로그램, 앨범, 가수 등의 빠른 검색이 가능하다.

이밖에 헤드폰 잭을 통해 주변환경의 방해 없이 혼자 음악을 들을 수 있고 별도의 보조(Aux) 입력단자를 갖춰 MP3, CD, DVD 플레이어 등 오디오장치의 추가연결이 가능하며, 스타일 리쉬한 블랙과 실버톤 색상을 적용했다.

이번 신제품 출시와 관련해 로지텍코리아의 서수경 지사장은 "최근 PC를 이용해 영화, TV, 음악을 즐기려는 이들이 늘어나면서 스피커의 품질 및 복잡한 설치과정으로 인해 불편함을 호소하는 경우가 많다"라며, "로지텍 'Z-Cinema 시스템 스피커'는 스피커 설치의 번거로움 없이 선명하고 풍부한 서라운드 사운드를 즐길 수 있어 소비자들에게 큰 만족감을 줄 것이다"라고 전했다.

LG 엑스캔버스 42LG30FD

 

LG 엑스캔버스 42LG30FD 제품 가격이 큰 폭으로 하락했다. 전 주 107만원에 판매되었던 것이 한 주 만에 12만원 가량 하락하면서 현재 95만 9천원에 판매되고 있다. 대기업 42인치 풀HD LCD 모델이 90만원대 진입한 것은 이번이 처음이다.

이 제품은 1920x1080의 풀HD 해상도를 기본으로 명암비 50000:1, 밝기 500cd, 응답속도 4ms를 자랑한다. 또한 4개의 HDMi1.3 단자, D-Sub, 컴포넌트, USB2.0(재생) 등의 연결 단자를 지원하여 다양한 기기와의 연결이 가능한 것이 특징으로 가격 대비 우수한 스펙을 자랑한다.

LG 엑스캔버스 42LG30FD

 

▶다나와 실시간 최저가 920,000원

2009년 6월 10일 수요일

떡볶이

 

오늘 저녁은 이걸로… 처묵처묵

출처 : http://board.miznet.daum.net/gaia/do/cook/recipe/mizr/read?articleId=10745&bbsId=MC001&nil_no=38301

 

*재료

떡볶이떡 200그램(가래떡 대체가능), 오뎅 3장, 양파 반개, 파 한대

*소스재료

고추장 3큰술, 고추가루 3큰술, 물엿 3큰술, 설탕 2큰술, 미향 1큰술, 다진마늘 1큰술, 허브솔트 1/2작은술, 굴소스1큰술, 참치액 희석시킨 물 1컵

*허브솔트, 굴소스는 없으면 생략하셔도 됩니다.

미향은 요리주, 참치액은 참치통조림 기름이 아니고 가쓰오부시 농축액입니다.

없으면 다시마 우린 물 한컵 쓰심 됩니다.

1. 분량의 재료를 섞어서 양념장을 만듭니다.

2. 떡은 끓는 물에 한번 데쳐서 말랑말랑하게 한뒤에  물에 헹궈내고 후라이펜에 기름기 없이 한번 볶아줍니다.

>>이과정을 거치면 떡볶이 자체내에 있는 기름기가 제거되면서 양념장이 좀더 잘 스며드는 떡볶이가 된다고 해요^^ 귀찮더라도 한번 살짝 볶아주세요^^

3. 후라이펜에 참치액희석시킨 물1컵을 붓고(참치액이 없으면 맹물이나 다시다 한숫갈 풀어넣은 물도 괜츈함) 펄펄 끓인 다음 위에 소스를 넣고 끓입니다.

4. 양파, 오뎅, 떡, 파를 넣고 5분정도 양념이 졸아들때까지 타지 않게 잘 볶아 줍니다.

1) 양파를 넣었습니다^^

2) 오뎅을 넣어줍니다^^

3) 미리 한번 볶아둔 떡을 넣습니다^^

4) 양념장이 반쯤 졸아들면 파를 넣어서 볶아줍니다.

2009년 6월 2일 화요일

더블버퍼링

 

출처 : http://lycobs.springnote.com/pages/1182380

OnEraseBkgnd 함수는 보통 배경화면을 비트맵을 사용하여 그리기 위해 사용한다. 배경화면을 비트맵으로 처리하면 윈도우가 새로 그려져야 할 경우 화면이 깜박이고, 컨트롤들이 비트맵에 가려서 보이지 않게 된다. 윈도우가 다른 윈도우에 가려졌다가 다시 앞으로 나올 경우 그 윈도우는 다시 그려지게 된다. 윈도우가 배경을 그리는 방법은 모든 화면을 깨끗이 지우고(흰색 브러쉬로 채운다), 그 위에 배경을 그리게 된다. 한마디로 배경을 다시 그리기 위해 두 개의 작업이 이루어 진다. (윈도우가 배경을 다시 그려야 할 때 WM_ERASEBKGND 메세지를 호출한다.)

OnEraseBkgnd() 기본형 함수

  1. bool OnEraseBkgnd(CDC *pDC) {

    reutrn CDialog::OnEraseBkgnd(pDC); // Dialog에서 작업

  2. } // 흰 부러쉬로 배경을 다시 그린다.

윈도우에서 GDI(Graphic Device Interface)를 사용하여 그림을 그려야 할 경우, 화면에 DC(Device Context)에 바로 출력하지 않고, 메모리 DC에 먼저 그림을 로드한 후에 메모리 DC의 내용을 화면 DC에 빠르게 출력하여 깜박임 현상을 최소하 한다. 이러한 것을 Double Buffering이라고 한다.

DC(Device Context)의 종류

  1. CClientDC   클라이언트 영역의 출력
  2. CPaintDC   WM_PAINT 메시지 헨들러를 사용
  3. CWindowDC   전체 윈도우에 대한 출력(Screen Saver ...)
  4. CMetaFileDC   메타 파일로의 출력

배경화면 그리기(Exampe-1)

  1. VOID CTest::Initialize(VOID) {
  2. CBitmap m_BackBitmap;
  3. m_BackBitmap.LoadBitmap(IDB_BACKGROUND);   //메모리 DC에 사용할 Background Bitmap
  4. }
  5. BOOL CTest::OnEraseBkgnd(CDC* pDC) {
  6. CDC  memDC;                     // 메모리 DC
    CBitmap * pOldBitmap = NULL;    // m_BackBitmap으로 새로운 그림을 DC에 그릴 때, 이전 그려졌던 DC(즉, Bitmap)을 저장.
  7. BITMAP bitmapInfo;              // 그림의 정보(m_BackBitmap)
  8. m_BackBitmap.GetBitmap(&bitmapInfo); // Bitmap 크기 구함.
  9. memDC.CreateCompatibleDC(pDC);  // 메모리 DC 생성
  10. pOldBitmap = memDC.SelectObject(&m_BackBitmap);
  11. pDC->BitBlt(0, 0, bitmapInfo.Width, bitmapInfo.Height, &memDC, 0, 0, SRCCOPY);   // 메모리 DC에 그림을 그림
    memDC.SelectObject(pOldBitmap);
  12. memDC.DeleteDC();
  13. //return CDialog::OnEraseBkgnd(pDC);
    return true; // 흰 부러쉬가 아닌 배경을 그려야 하기 때문에 true
  14. }

위의 소스에서 이해하기 난해한 부분은 memDC.SelectObject(CBitmap* bitmap) 함수이다. CBitmap * pOldBitmap 을 선언한 이유는 pOldBitmap = memDC.SelectObject(&m_BackBitmap); 구문 때문이다.

윈도우는 항상 거의 대부분 사용을 다한 자원은 반환되어야 한다. memDC.SelectObject(&m_BackBitmap); 을 사용하여 새로운 비트맵을 넣으면, 이전 작업 중이던 비트맵을 리턴한다. 14줄 memDC.SelectObject(pOldBitmap); 에서는 이전에 저장했던 pOldBitmap을 다시 넣는다. m_BackBitmap 그림을 다 그렸기 때문에 더이상 사용할 필요가 없기 때문에 이전 pOldBitmap을 다시 DC에 돌려 주게 된다. 그리고 배경을 다 그렸기 때문에 두 번째 나오는 SelectObject에서는 리턴값을 받을 필요가 없다. (OnEraseBkgnd 함수는 배경이 다시 그려져야 할 경우에만 WM_ERASEBKGND 메시지를 호출하여 다시 그리게 된다.)

GetClip를 사용하여 속도 향상 시키기(Exampe-2)

  1. VOID CTest::Initialize(VOID) {
  2. CBitmap m_BackBitmap;
  3. m_BackBitmap.LoadBitmap(IDB_BACKGROUND);  
  4. }
  5. BOOL CTest::OnEraseBkgnd(CDC* pDC) {
  6. CDC  memDC;
    CBitmap * pOldBitmap = NULL;
    BITMAP bmpInfo;
  7. //HBITMAP m_hBmp = (HBITMAP)LoadImage(NULL, _T("bg.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    //CBitmap *pBmp = CBitmap::FromHandle(m_hBmp);

  8. m_BackBitmap.GetBitmap(&bmpInfo);
    memDC.CreateCompatibleDC(pDC);
  9. pOldBitmap = memDC.SelectObject(&m_BackBitmap);
    memDC.SelectObject(&m_BackBitmap);
    CRect rect;
    GetClientRect(&rect);
  10. int nX, nY;
    for(nX = 0; nX < rect.Width(); nX += bmpInfo.bmWidth) {
  11.      for(nY = 0; nY < rect.Height(); nY += bmpInfo.bmHeight) {
               pDC->GetClipBox(&rect);
  12.   pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &memDC, 0, 0, SRCCOPY);
  13.   }
  14. }
  15. memDC.SelectObject(pOldBitmap);
    memDC.DeleteDC();
  16. return true;
  17. }

Double Buffering

매모리맵에 클라이언트 창의 크기만큼 비트맵 이미지를 그려 놓고 한꺼번에 화먼에 뿌려주는 방식(실행시 더 빠른 속도) (Exampe-3)

  1. BOOL CLoaderDlg::OnEraseBkgnd(CDC* pDC) {
  2. CDC  MemDC, BufferDC;
    CBitmap * pOldBitmap1 = NULL;
    CBitmap * pOldBitmap2 = NULL;
    CBitmap memBitmap;
    BITMAP bmpInfo;
    CRect rect;
  3. GetClientRect(&rect);
    MemDC.CreateCompatibleDC(pDC);
    BufferDC.CreateCompatibleDC(pDC);
  4. memBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
  5. pOldBitmap1 = MemDC.SelectObject(&memBitmap);
  6. m_BackBitmap.GetBitmap(&bmpInfo);

  7. pOldBitmap2 = BufferDC.SelectObject(&m_BackBitmap);
    for(int nX = 0; nX < rect.Width(); nX += bmpInfo.bmWidth) {
         for(int nY = 0; nY < rect.Height(); nY += bmpInfo.bmHeight) {
             MemDC.BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &BufferDC, 0, 0, SRCCOPY);
         }
    }

  8. pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
  9. BufferDC.SelectObject(pOldBitmap2);
    MemDC.SelectObject(pOldBitmap1);
  10. return true; 
    }