2013의 게시물 표시

PS/2 와 USB 키보드 크래시 덤프 설정법

PS/2 keyboards : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters create a value named CrashOnCtrlScroll, and set it equal to a REG_DWORD value of 0x01. PS/2 키보드는 레지스트리 생성 후 값을 설정 USB keyboards :HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters create a value named CrashOnCtrlScroll, and set it equal to a REG_DWORD value of 0x01. USB 키보드도 마찬가지로 레지스트리 생성 후 값을 설정 You must restart the system for these settings to take effect. hotkey sequence: Hold down the rightmost CTRL key, and press the SCROLL LOCK key twice. 재부팅 후 오른쪽 컨트롤 키와 스크롤 락 키를 누르면 강제로 크래시 덤프를 생성할 수 있다

구글링 하는 법

1. 반드시 포함될 단어/문장을 지정하기 - 검색어의 처음과 끝에 큰 따옴표(")를 입력하면 해당 단어나 문장이 반드시 포함된 사이트만 검색할 수 있습니다. ex) "강남 스타일" 을 구글 검색어 창에 입력하면 정확히 강남 스타일이 표시 된 검색어만 보여줍니다. 2. 제외할 검색어를 지정하기 - 검색어 앞에 마이너스(-)를 입력하면 해당 검색어를 제외한 결과를 표시합니다. ex) 갤럭시 -아이폰 을 구글 검색어 창에 입력하면 아이폰을 제외한 갤럭시에 대한 검색 결과를 표시해줍니다. 3. 유의어를 검색하기 - 검색어 앞에 물결표시(~)를 입력하면 검색어와 유의한 의미를 가진 자료를 보여줍니다. ex) ~저렴한 맛집 을 구글 검색어 창에 입력하면 저렴한과 비슷한 의미를 가진 여러가지 검색어를 같이 보여줍니다. 4. 단어의 정의를 검색하기 - 검색어 앞에 'define:' 을 입력 후에 검색하면 해당 검색어의 정의를 보여줍니다. ex) define:우주 를 검색하면 가장 상단에 우주에 대한 사전적 정의를 보여줍니다. 5. 계산기 - 단순한 사칙연산 및 수식을 입력하면 계산기가 수식을 계산하여 줍니다. 또한 'answer to life the universe and everything =(삶, 우주, 그리고 모든것에 대한 해답)' 을 입력하면 '42' 라는 결과가 표시됩니다. 이는 은하수를 여행하는 히치하이커를 위한 안내서라는 작품에 나오는 결과로 이스터에그입니다. ex) 1+2+3+4+5= 를 검색하면 가장 상단에 해당 수식의 해답을 보여줍니다. 6. 빈 칸 채우기 - 정확한 검색어가 떠오르지 않을 때에는 문장 사이에 별표(*) 를 입력하면 빈 자리를 체워서 결과를 표시해줍니다. ex) 아인슈타인 * 이론 을 검색하면 아이슈타인의 이론인 상대성이론을 같이 표시하여 줍니다. 7. 환율 및 단위 변환 - 환율 및 단위를 변환 할 때에는 이퀄(=) 을 사용하면 편리합니다 ex) 1달러 = ?원 을 검색...

C++ : 연산자 오버로딩(8) - 객체의 저장을 위한 배열 클래스

참고 : 열혈강의 C++ 프로그래밍 책 #include <iostream> #include <cstdlib> using namespace std; class APoint { private: int x, y; public: APoint(int px = 0, int py = 0) : x(px), y(py) { } friend ostream& operator = arrlen) { cout = arrlen) { cout

C++ : 연산자 오버로딩(7) - 배열의 인덱스

참고 : 열혈강의 C++ 프로그래밍 책 #include <iostream> #include <cstdlib> using namespace std; class IntArray { private: int *arr; int arrlen; // 배열 클래스의 복사 생성자를 막기 위함 IntArray(const IntArray& arr) { } // 배열 클래스의 대입 연산자를 막기 위함 IntArray& operator=(const IntArray& arr) { } public: IntArray(int len) : arrlen(len) { arr = new int[len]; } int& operator[] (int idx) { if( idx = arrlen) { cout = arrlen) { cout

C++ : 이니셜라이저의 성능

참고 : 열혈강의 C++ 프로그래밍 책 이니셜라이저를 이용하면 선언과 동시에 초기화가 이뤄지는 형태로 바이너리 코드가 생성된다. 반대로 생성자의 몸체 부분에서 대입연산을 통해 초기화를 하면 선언과 초기화를 각각 진행하는 바이너리 코드가 생성된다. 성능에 상관이 없다면 두 가지 중 아무거나 써도 상관없지만 미세하더라도 성능이 중요하다면 이니셜라이저를 이용하는 것이 좋을 것 같다.

C++ : 연산자 오버로딩(6) - 상속 구조에서의 대입 연산자

참고 : 열혈강의 C++ 프로그래밍 책 #include <iostream> using namespace std; class Parent { private: int num1, num2; public: Parent(int n1 = 0, int n2 =0) : num1(n1), num2(n2) { } void ShowData() { cout

C++ : 연산자 오버로딩(5) - 대입 연산자 오버로딩의 중요성

참고 : 열혈강의 C++ 프로그래밍 책 기본적으로 복사 생성자 특성 1. 정의하지 않으며 디폴트 복사 생성자가 삽입된다. 2. 디폴트 복사 생성자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다 3. 생성자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. // 복사 생성자 void main() { Class c1(1, 2); Class c2 = c1; } 대입 연산자 특성 1. 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 2. 디폴트 대입 연산자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다. 3. 연산자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. // 대입 연산자 void main) { Class c1(1, 2); Class c2(3, 4); c2 = c1; }; 대입 연산자를 이용하면서 동적할당을 한다면 주의할 점이 있다. #include <iostream> using namespace std; class Person { private: char* name; int age; public: Person(char* myname, int myage) { int len = strlen(myname) + 1; name = new char[len]; strcpy(name, myname); age = myage; } void ShowPersonInfo() const { cout << "이름 : " << name << endl; cout << "나이 : " << age << endl; } Person& operator=(const Person& ref) { // 생성자에 동적 할당한 것을 해제해야 메모리 누수를 방지한다. delete []name; int len ...

C++ : 연산자 오버로딩(4) - 전위증가, 후위증가

참고 : 열혈강의 C++ 프로그래밍 책 #include using namespace std; class OperPoint3 { private: int x, y; public: OperPoint3(int px = 0, int py = 0) : x(px), y(py) { } void ShowPosition() const { cout << '[' << x << ", " << y << ']' << endl; } // 전위 증가 OperPoint3& operator++() { x += 1; y += 1; } // 후위 증가 // 후위 연산자만 const 반환형인 이유는 // C++연산 특성과 똑같이 해서 (pos++)++; 사용시 컴파일 에러를 유발하기 위함 const OperPoint3 operator++(int) { // const Point retobj(*this) 와 같다. const OperPoint3 retobj(x, y); x += 1; y += 1; return retobj; } friend OperPoint3& operator--(OperPoint3 &ref); friend const OperPoint3 operator--(OperPoint3 &ref, int); }; // 전위 감소 OperPoint3& operator--(OperPoint3 &ref) { ref.x -= 1; ref.y -= 1; return ref; } // 후위 감소 // 후위 연산자만 const 반환형인 이유는 // C++연산 특성과 똑같이 해서 (pos++)++; 사용시 컴파일 에러를 유발하기 위함 const OperPoint3 operator--(OperPoint3 &ref, int) { const OperPoint3 ...

C++ : 연산자 오버로딩(3) - 단항 연산자(증가, 감소 연산자의 오버로딩)

참고 : 열혈강의 C++ 프로그래밍 책 #include <iostream> using namespace std; class OperPoint2 { private: int x, y; public: OperPoint2(int px = 0, int py = 0) : x(px), y(py) { } void ShowPosition() const { cout

C++ : 연산자 오버로딩(2) - 가능한 연산자

참고 : 열혈강의 C++ 프로그래밍 책 멤버함수 기반으로만 오버로딩이 가능한 연산자 =    대입 연산자 ()   함수 호출 연산자 []   배열 접근 연산자(인덱스 연산자) ->  멤버 접근을 위한 포인터 ++   증가 연산자 --   감소 연산자 +    더하기 -    빼기 *    곱하기 /    나누기 << cout에서 사용하는 것과 같음 >> cin에서 사용하는 것과 같음 연산자 주의사항  1. 매개변수의 디폴트 값 설정이 불가능하다 // 매개변수에 디폴트 값 설정 안됨 void operator-(const int a = 0) { cout << xpos - a << endl; }

C++ : 연산자 오버로딩(1) - 기본

참고 : 열혈강의 C++ 프로그래밍 책 #include <iostream> using namespace std; class OperPoint { private: int xpos, ypos; public: OperPoint(int x = 0, int y = 0) : xpos(x), ypos(y) { } void ShowPosition() const { cout

C++ : 부동 소수점 실수 지원

출처 : 책 세 가지 크기의 부동 소수점 실수 지원 1.      float 키워드로 나타내는 단일 정밀도 (single precision) 2.      double 키워드로 나타내는 2 배 정밀도 (double precision) 3.      두 개의 키워드인 long double 로 나타내는 확장 정밀도 (extended precision)

google Blogger Syntax Highlighting

참조 사이트 1.  http://www.stylifyyourblog.com/2012/07/syntax-highlighting-in-blogger-using.html  - Syntax Highlighting 2.  http://www.tools.stylifyyourblog.com/p/postify.html  - 데모 동영상에서 나오는 HTML 변환하는 사이트 위 블로그에 google Blogger의 소스코드를 깔끔하게 볼 수 있도록 동영상과 설명을 정리해놨다. 블로그 내용대로 적용 후 글을 쓸 때 HTML 모드에서 다음과 같이 입력하면 된다. // linenums를 빼면 줄 번호가 없어진다. <pre class="prettyprint linenums"> // 소스 코드 #include <windows.h> #pragma comment // </pre> 위 내용을 적용하면 다음과 같다. // 소스 코드 #include <windows.h> #pragma comment (lib, "sample.lib") // < 와 > 는 2번 사이트를 활용해서 변환해야 정확하게 표현된다.