분류 389

해싱 필요한 이유 - 기본 개념

해싱이라는 것은 기본적으로 흩어뜨려 놓는다는 뜻입니다. 자료를 흩어놓음으로써 메모리는 더 많이 차지하지만 더 빨리 찾을 수 있지요. 예를 들어 100개의 자료가 있고 그 중에서 어떤 한 개의 자료를 찾는다고 할 때 최대 100번까지 찾아봐야 합니다. 하지만 해싱을 이용한다면 최대 10이나 5번만에도 자료를 찾을 수 있습니다. 메모리를 많이 사용하면 많이 사용할 수록 빨리 찾을 수 있지요. 예를 들어 번호로 이름을 찾는 경우를 생각해 보지요. struct data { int number; char name[128]; char *next; } 와 같은 구조체가 있다고 했을 때 해싱을 사용하지 않으면 다음과 같이 구현되지요. struct data *head; int add_nohash(int number,ch..

C, C++ 문법 2008.09.12

An Introduction to Hashing

An Introduction to Hashing Namgoong Jae-chang Dept. of Computer Science and Engneering, POSTECH 이 문서는 데이터베이스(database) 분야에서 널리 쓰이는 데이터 관리 기법 중에 하나인 해슁(hashing)에 대하여 설명하고 있다. 따라서 이 문서에서 설명하고 있는 해슁은 자료구조(data structure) 분야에서 다루는 것과는 다소 다른 관점에서 설명하고 있다는 점을 우선 인식하기 바란다. 해슁에 관한 분류가 책마다 다른 관계로 이 문서에서는 필자 나름대로의 분류법에 따랐음도 미리 밝히는 바이다. 1 해슁(Hashing)이란 무엇인가? 2 해슁(Hashing)의 필요성 3 해슁 알고리즘 (Hashing Algorithm)..

C, C++ 문법 2008.09.12

[COM] Moniker 간략 정리

http://ggungs.egloos.com/457009 [COM] Moniker 각 타입별 이름 짓는 규칙을 표준화된 모니커 인터페이스를 통해서 지을 수 있도록 함 시스템 모니커 종류 : 이름 짓는 객체에 대해 추가의 정보 필요 파일 모니커 : CreateFileMoniker 아이템 모니커 : CreateItemMoniker 포인터 모니커 : CreatePointerMoniker 안티 모니커 : CreateAntiMoniker 복합 모니커 : CreateGenericComposite 클래스 모니커 : CreateClassMoniker URL 모니커 : CreateURLMoniker OBJREF 모니커 : CreateObjrefMoniker 커스텀 모니커 IMoniker 인터페이스 구현 IBindCtx ..

COM, ATL 2008.09.12

HOWTO: WebBrowser 컨트롤의 상황에 맞는 표준 메뉴에 항목 추가 - msdn 한글

HOWTO: WebBrowser 컨트롤의 상황에 맞는 표준 메뉴에 항목 추가 이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다. 이 문서가 적용되는 제품 보기. 기술 자료 ID : 177241 마지막 검토 : 2004년 3월 4일 목요일 수정 : 2.0 이 문서는 이전에 다음 ID로 출판되었음: KR177241 이 페이지에서 요약 추가 정보 상황에 맞는 표준 메뉴에 항목 추가 선택적인 키 상황에 맞는 메뉴 이벤트 기타 예제 참조 요약 본 문서에는 인터넷 클라이언트 SDK의 "Reusing the Web Browser Control & MSHTML" 개요에 있는 "Controlling the Context M..

웹, HTML 2008.09.12

COM, ATL에서의 reinterpret_cast 의 쓰임새

그동안 C++에서 reinterpret_cast를 배우긴 배웠는 데 실제로 써먹는 경우가 없었다. 그런데 컴포넌트 작성하면서 쓰게 될 줄이야~~~ 커넥션 포인터 관련 얻는 부분의 코드 조각이다. m_rgpCP[0] = new CConnectionPoint(reinterpret_cast(this), DIID__DIDragonEvents); 사전적 의미는 "재해석해서 캐스트"한다.... 즉 강제 형변환 캐스팅이다. 컴파일러는 약간 지능적이다. 클래스 형변환시 부모 - 자식 관계의 형태에서 포인터 관련코드 디버그해보면서 놀랐던 기억이 난다. 그 전까지 형변환으로 사용했던 것은 모두 reinterpret_cast(강제 형변환) 의미를 가진 것이었다. 이를테면 핸들값을 스파이로 알 경우.... HWND hWnd ..

COM, ATL 2008.09.11

Web에서 APP로 메세지 전달과 자바스크립트(javascript) 호출

Web에서 APP로 메세지 전달과 자바스크립트(javascript) 호출 작성자 : 박영목 (gsbsoft) 읽음 : 2417 2006-06-09 오후 3:10:05 427KB WEB에서 APP로 메세지 전달과 자바스크립트 호출 어느 회사의 요청으로 익스프로에 주소창에 웹브라우즈를 넣는 것을 만들게 되었습니다. 실시간 예측검색으로 불리우더군요... nova의 토마토, dreamwiz의 스마트검색... 처음에 노바를 요여 주더군요.... 이것을 만들 수 있니? 처음에 아주 간단해 보였다. 이스프로 주소창에 작은 버튼이 하나 있고 그것을 누르거나 키를 입력하면 작은 브라우즈가 주소창 밑에 열리면서... 영문으로 입력하면 한글로 보여 주고... 사용자가 검색하고자 하는 문자열을 DB에서 가져와서 보여 주고....

웹, HTML 2008.09.11

AJAX의 개념 및 기초 설명

AJAX는 전혀 새로운 기술이 아닌 지금까지 웹에서 널리 쓰여 왔던 자바스크립트, DHTML 등의 기존 기술들을 모아 풍부한 유저 인터페이스를 구현할 수 있도록 정립한 기술 집합체이다. HTTP는 네트워크에서 발생하는 모든 웹 요청과 응답을 처리할 수 있는 웹 표준 프로토콜로 완전히 자리 잡았다. 하지만 HTTP는 비연결성 프로토콜로 기본적으로 요청과 요청 사이에 연관성이 없고 웹 서버에 보낸 요청에 대한 응답에 대해서 각각의 웹 문서를 매번 다시 렌더링하여 리프레시해야 하는 단점이 있다. 로딩이 끝나 렌더링이 끝난 웹 페이지를 DHTML을 이용하여 동적으로 레이아웃이나 스타일을 재구성할 수도 있지만 재구성에 필요한 데이터는 사용자의 입력 또는 페이지를 로딩할 당시 서버에서 모든 데이터를 미리 읽어와야만..

AJAX 2008.09.11

MSHTML 설명 및 컴포넌트 관계 - 틀린 설명도 있다.

틀린 설명도 있으니 대충 본다...;;; 1. MSHTML이란? MSHTML은 우리가 사용하는 브라우져에서 사용되는 언어인 HTML을 구조적으로 설계한 COM인터페이스 모음입니다. 마이크로소프트 제품인 인터넷익스플로러에서 파싱과 렌더링(DirectDraw와 연결되는 부분만)을 담당하는 것이죠. 우리가 보고있는 브라우져의 하부에는 MSHTML이 자리하고 있습니다. MSHTML을 잘 다루면 CreateWindow를 통해 생성했던 윈32컨트롤들을 HTML엘리먼트로 대체하여 더 원활한 UI를 더 쉽게 만들수 있습니다. 물론 ActiveX등의 컨트롤도 쉽게 넣을 수 있겠지요. 더 이쁜 이미지도 간단히 넣을 수 있게 될겁니다. 그 동안 델파이나 C빌더 등의 RAD툴에서 보여주었던 것보다 더 간단하게 생성할 수도 있..

웹, HTML 2008.09.10

Internet Explorer COM Interfaces 관계 도식화

Internet Explorer COM Interfaces Relationship 조회(321) Internet Explorer | 2007/07/04 (수) 10:46 추천하기(0) | 스크랩하기(0) IHTMLDocument2에서 IWebBrowser2를 얻는 방법은 IServiceProvider를 QueryInterface로 얻은후에 QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pWeb2) 로 얻을 수 있다. 즉 그림이 틀리다는 얘기다. IHTMLDocument2에서 최상위 IWebBrowser2를 얻는 함수 IWebBrowser2* GetIWebBrowser2(IHTMLDocument2* pDoc) { if(NULL == pDoc) r..

웹, HTML 2008.09.10