전체 글 389

텍스트 간결하게 편집 중복공백 중복개행 주석 제거

// 텍스트에서 중복 공백이나 중복 개행 제거, 주석을 포함시키지 않고 순수 내용만 간결하게 남긴다. // 길이가 줄어드므로 소스와 버프에 동일 주소를 지정해도 된다. TCHAR * __stdcall ConsciseText(TCHAR *buf, const TCHAR *src) { TCHAR *p, *q; p = (TCHAR *)src;// 소스 포인터 q = buf;// 버프 포인터 for (; ; ) { if (!*p)// 문자열 맨 끝 널문자인 경우 { if (q != buf)// ★ 논리상 버퍼 기록 여부를 먼저 판단해야 q[-1] 조건이 유효하다. 더 아래에서도 마찬가지로 조건문에서 가장 앞에 두어야 한다. { if (q[-1] == ' ')// 문자열-공백-널문자순인 경우 공백은 무의미하므로 1..

C, C++ 문법 2022.08.27

비트맵을 파일(png, jpg, bmp)로 저장하기 / 파일을 비트맵으로 생성하기

// GDI+ library를 사용해 bmp, png, jpg, gif 등 대부분의 이미지 형식 모두 처리 가능하다. #include #pragma comment(lib, "gdiplus") using namespace Gdiplus; int __stdcall GetEncoderClsid(const WCHAR *mime, CLSID *clsid) { UINT i, num, size; ImageCodecInfo *info; GetImageEncodersSize(&num, &size); if (!size) return -1; if (!(info = (ImageCodecInfo*)malloc(size))) return -1; GetImageEncoders(num, size, info); for (i = 0; ..

API 2022.08.21

모달리스 다이얼로그에 탭키 포커스 이동처럼 편리한 다이얼로그 키 처리 적용하기

모달리스 다이얼로그에 탭키 포커스 이동처럼 편리한 다이얼로그 키 처리 적용하기 모달 다이얼로그의 탭키로 컨트롤을 이동하고 스페이스로 선택하거나 에디트에 포커스 존재시 엔터를 누르면 디폴트 버튼이 눌리는 기능은 편리하다고 한다.; 탭키이동은 많이 해봤어도 마지막 에디트에 커서 있는 상태에서 엔터치면 디폴트 버튼이 작동한다는건 모르는 사람이 훨씬 많을거다.ㅎㅎ 아무튼 일단 모달리스 다이얼로그를 CreateDialog, ShowWindow만 해놓고 아무런 처리를 하지 않으면 오로지 마우스로만 작동한다. 탭키를 눌러도 도무지 변화가 없으니 무빙이 답답한 고구마 같은 느낌이랄까... 위 문제 두가지 다른 형태로 나타나는데 각각의 코드를 작성해 해결할 수 있다. 먼저 호출부 윈도우를 CreateWindow로 생성한..

API 2020.06.21

정규 표현식에서 소괄호() 역할 그룹화(캡처링), lookahead 전방 탐색, lookbehind 후방 탐색 이해

정규 표현식에서 메타기호 소괄호가 상당히 중요한 의미를 가진다. 그룹화(캡쳐링), 전방탐색, 후방탐색 등에서 사용된다. 참고로 후방탐색은 최근에 구현되어서 아직 지원 안하는 브라우저도 있다고 한다. 전방탐색만 이해하면 후방탐색은 순서만 바꾼 것이므로 바로 이해된다. 실전적 사례를 보면서 정규식에서 소괄호 의미를 확실하게 이해하자. 아래와 같은 스트링에서 원하는 URL 주소를 추출해서 배열로 저장해보자. var r, s = "refresh: 82; url=https://adv.com/business? api=A12Q82dDsA3&mem=green&age=20&speed=fast&url=http://real.dest.com/txXmDqm&loc=earth&air=good&link=https://www.etc..

웹, HTML 2020.06.16

암호화 기법 이해

웹에서 패킷은 여러 단계를 거쳐가기 때문에 악의의 목적을 가진 사람이 패킷을 낚아채서 사용자의 개인정보를 알 수 있거나 변조해서 엉뚱한 값을 전송할 수 있다. 이를 방지하기 위해 암호화 기술이 발전하였다. 크게 암호화에 사용되는 키와 복호화에 사용되는 키가 같은지 여부에 따라 대칭키 방식과 공개키(비대칭) 방식이 존재한다. 우선 대칭키 암호화에 사용되는 방법은 순서 바꾸기, 자리바꾸기, 비트 연산 (> 같은 시프트 연산이나 특정 키로 xor 연산) 등이다. 대칭키 기법 여러 사이트 뒤져가면 읽어보면 다른건 그렇게 어렵지 않고, xor 연산이 평상시에 자주 써먹지 않아서 조금 낯설 수 있다. 일단 컴퓨터 소스코드에서 xor연산은 ^로 표시합니다. ^가 제곱을 의미하는 지수승이 아님을 유의하세요. P ^ K..

웹, HTML 2016.04.25

웹 DOM 구조. 다양한 형태

다큐먼트 오브젝트 모델. 이름 그대로 문서 객체 관계, 구조 정도로 이해하면 된다. 특이한게 DOM 구조라고 설명하는데 가서 보면 제각각 3가지 형태로 설명을 한다. 여러 사이트에서 이걸 혼용해서 사용한다.3개 다 숙지하고 차이점이 뭔지 알아야 개념이 혼동스럽지 않고 실제 코딩시나 이론 정립시 헷갈림을 피할 수 있다. ======================================================================================= 첫번째, 객체 생성과 관련된 부분으로 상속관계의 계층도이다. 상속관계이므로 자식객체는 당연하게도 부모객체의 함수를 제 함수처럼 사용 가능하다. 보통 최상위에 노드 객체를 두고 시작한다. 엄밀히 말하면 모든 객체는 근본객체인 Object..

웹, HTML 2016.04.07

자바스크립트 call, apply, bind 및 this 판정, 프로토타입, 클로저 이해

// Function.prototype에 구현됨(모든 함수들의 원형객체. 참고로 Function.prototype 위에는 모든 객체의 조상이자 루트인 Object.prototype이 존재) // 참고로 프로토타입(원형) 방식으로 자바 스크립트 객체는 서로 계층을 형성하고 연결을 하고 있습니다.// 모든 객체는 원형에 대한 내부링크로(크롬, 파폭, 오페라는 __proto__ 속성에 상위객체를 링크, 다른 브라우저는 각각의 방식으로 구현) 상위 객체를 참조하고 있습니다. 가장 최상위인 Object.prototype에서 윗방향으로의 링크가 끝나게 되죠.(파폭이나 크롬에서 alert(Object.prototype.__proto__)하면 null로 확인됨)__proto__는 표준규칙이 아니고 다른 브라우저에서는 ..

웹, HTML 2016.03.28

InternetSetCookie, InternetGetCookie 사용 밥법

// 참고) IE 쿠키 폴더 // 비스타 이상: C:\Users\사용자\AppData\Roaming\Microsoft\Windows\Cookies // XP: C:\Documents and Settings\사용자\Cookies // ======= 쿠키 처리 ======= // ★ URL은 반드시 풀네임을 입력한다. 앞의 http:// 문자열이 생략된 경우 쿠키가 생성되지 않았다. // ★ path를 입력할 경우 반드시 /로 시작해야 한다. 그렇지 않으면 아예 생성되지 않았다. // path의 끝에 /가 있는 경우와 없는 경우는 서로 다르다. /abc와 /abc/는 다른 쿠키들이며 둘 다 생성할 수 있었다. // ex) InternetSetCookie("http://www.test.com", NULL, "..

웹, HTML 2016.03.09

SHGetSpecialFolderPath 윈도우의 각종 경로 얻기(비스타 이상은 SHGetKnownFolderPath 추가됨)

1.요약 SHGetSpecialFolderPath를 이용하여 윈도우에서 사용하는 특별한 폴더들의 패스를 얻어오는 방법을 설명합니다. Window Vista 이후 버전은 SHGetKnownFolderPath 함수가 추가되었다.Vista에서는 보안 기능(UAC)이 강화됨에 따라 일반 사용자 계정에서 접근(Writable) 가능한 폴더가 제한적으로 바뀌었습니다. Vista 이전에는 SHGetFolderPath() 함수를 이용해서 특수 폴더의 경로를 구할 수 있었는데, Vista에서는 쓰기 가능한 폴더를 구할 수 있는 SHGetKnownFolderPath() 함수가 추가되었습니다. SHGetKnownFolderPath 이용시는 함수 내부에서 경로 메모리를 할당하므로 호출부 측에서 CoTaskMemFree(경로)..

API 2016.03.05

IE 인터페이스 사용하여 IE 페이지 조정해보기

일본 페이지 구글 자동 번역한 것입니다. http://www.nitoyon.com/vc/tips/ie_component.htm#howto2 VC ++ 사용 VC ++의 사용법 > VC ++ Tips > IE 구성 요소 사용 이 페이지의 내용 IE 구성 요소 사용 IE 구성 요소의 사용법 2 이벤트를 얻는 방법 페이지를 분석 / 변경 페이지를 분석 / 변경하기 2 다른 Tips IE 구성 요소 관계 참고 URL 다행히 스폰서 님 All About 소프트웨어 엔지니어 넷에서 8 % 할인! 자동차 보험은 아메리칸 홈 다이렉트 인생의 '기회'와 '핀치'에 모 비트! 보험료가 평생 오르지 않는 보험료 최대 50 % 할인 평생 의료 보험! IE 구성 요소 사용 IE4.0에서 IE 구성 요소를 사용할 수있게되었습니다..

웹, HTML 2016.03.03