시작은 미미하나 끝은 쥬쥬하리라.

분류 전체보기 105

[effective C++] Chapter 01 : 04. 객체를 사용하기 전에 반드시 그 객체를 초기화하자

04. 객체를 사용하기 전에 반드시 그 객체를 초기화하자 대입과 초기화 비지역 정적 객체의 초기화 순서 이것만은 잊지 말자 ! 대입과 초기화 C++의 초기화 C++에서는 변수 혹은 객체를 선언했을 때, 확실하게 초기화가 된다는 것이 보장되지 않는다. 따라서 가장 좋은 방법은 모든 객체르 사용하기 전에 항상 초기화 하는 것이다. 기본 제공 타입으로 만들어진 비멤버 객체에 대해서는 아래와 같이 손수 초기화를 해주어야 한다. 비멤버 객체의 초기화를 위와 같이 진행하고 나면 남은 것은 멤버 객체의 초기화 즉, 생성자의 역할로 귀결된다. 생성자가 지킬 규칙은 "그 객체의 모든 것을 초기화하자!"로 간단하지만 대입(assignment)와 초기화(initialization)을 혼동하지 않는 것이 중요하다. 대입과 초..

Study/Effective C++ 2023.07.23

[effective C++] Chapter 01 : 03. 낌새만 보이면 const를 들이대 보자 !

03. 낌새만 보이면 const를 들이대 보자 ! const 키워드의 사용 상수 멤버 함수 상수 멤버(const 멤버)의 양대 개념 상수 멤버/비상수 멤버 함수에서 코드 중복 피하기 이것만은 잊지 말자 ! const 키워드의 사용 const const 키워드가 붙은 객체는 외부 변경을 불가능하게 만드는 의미적인 제약이 붙게 되고 컴파일러는 이 제약은 단단히 지켜준다. 클래스 외부 - 전역 혹은 네임스페이스 유효범위의 상수를 선언 및 정의하는데 사용 - 파일, 함수, 블록 유효범위에서 static으로 선언한 객체에 const 사용 가능 클래스 내부 - 정적 멤버 및 비정적 데이터 멤버 모두 상수로 선언 가능 - 포인터 및 포인터가 가리키는 대상 모두 상수로 지정할 수도 있고 지정하지 않는 것도 가능(기본적..

Study/Effective C++ 2023.07.23

[effective C++] Chapter 01 : 02. #define을 쓰려거든 const, enum, inline을 떠올리자

02. #define을 쓰려거든 const, enum, inline을 떠올리자 #define의 문제와 해결 #define을 통해 상수를 교체하는 경우 주의할 점 나열자 둔갑술(enum hack) 매크로 문제에는 inline 함수 템플릿 #define의 문제와 해결 문제 위와 같이 매크로가 정의되어 있는데 만약 위와 관련해서 에러가 발생하는 경우 혼동이 일어날 수 있다. 코드가 컴파일러에 의해 컴파일 되기 이전에 선행 처리자는 해당 지시자를 밀어버리고 숫자 상수로 바꾸게 된다. ASPECT_RATIO라는 명칭은 컴파일러가 쓰는 기호 테이블에 들어가지 못하게 되고, 따라서 에러가 발생하는 경우 에러 메시지에는 1.653이라는 값이 등장하게 되고 이는 에러를 파악하는 입장에서 직관성이 떨어지고 혼동이 발생할 ..

Study/Effective C++ 2023.07.22

[effective C++] Chapter 01 : 01. C++를 언어들의 연합체로 바라보는 안목은 필수

01. C++를 언어들의 연합체로 바라보는 안목은 필수 C++의 과거와 현재 C++ 하위 언어 4가지 C++를 언어들의 연합체로 바라보는 안목의 필요성 이것은 잊지 말자 ! C++의 과거와 현재 C++를 언어들의 연합체로 바라보는 안목은 필수이다. 그 이유는 C++의 초창기와 현재의 C++의 차이에 있다. 초창기 C++ - C언어에 단순히 객체지향만이 결합된 형태 현재의 C++ - 함수의 구성 방식을 크게 바꾸는데 일조한 예외 처리 제공 - 프로그램 설계의 새로운 사고방식을 일깨워준 템플릿 제공 - 확장성에 대한 새로운 지평을 연 STL 제공 - 다중 패러다임 프로그래밍 언어 현재의 C++은 절차적 프로그래밍을 기본으로 객체지향, 함수식, 일반화 프로그래밍을 포함하며 메타프로그래밍까지 지원하는 다양한 표..

Study/Effective C++ 2023.07.22

[개발자 상식] 빅 엔디안과 리틀 엔디안

빅 엔디안과 리틀 엔디안 빅 엔디안 리틀 엔디안 기타 빅 엔디안(Big Endian) - 가장 중요한 바이트(Most Significant Byte, 이하 MSB)를 가장 낮은 주소에 데이터를 저장하는 방식 - MSB부터 시작하여 LSB 순서대로 저장 - 네트워크 통신 프로토콜인 TCP/IP, 일부 프로세스 아키텍처(IBM Power PC)에서 사용 - 0x100번지부터 12 34 56 78의 데이터를 저장하는 경우(빅 엔디안 형식) 리틀 엔디안(Little Endian) - 가장 중요한 바이트(Most Significant Byte, 이하 MSB)를 가장 높은 주소에 데이터를 저장하는 방식 - LSB부터 시작하여 MSB 순서대로 저장 - x86 아키텍처 기반의 대부분의 컴퓨터 시스템에서 사용 - 0x1..

CS/Dev Ack 2023.07.02

[System Programming] 라이브러리 - 동적 라이브러리, 정적 라이브러리의 이해

라이브러리 - 동적 라이브러리, 정적 라이브러리의 이해 라이브러리(Library) 정적 라이브러리(Static Link Library) 동적 라이브러리(Dynamic Link Library) 라이브러리 요약 라이브러리(Library) - 소프트웨어 개발에 자주 사용되는 함수들의 중복 작성을 줄이기 위해 표준화된 함수 및 데이터 타입을 모아 놓은 것 - 사용을 위해서는 헤더 파일을 삽입하는 과정이 필요 - 프로그램에 연결되는 시기에 따라 정적 링크와 동적 링크로 구분 장점 - 코드 재사용 용이 - 코드 내부를 숨겨서 기술 유출을 방지 - 개발 시간의 단축 - 신뢰성 향상 - 컴파일 시간을 단축 정적 라이브러리(Static Link Library) - 링커가 프로그램에 필요로 하는 부분을 라이브러리에서 찾아..

CS/System 2023.07.02

[개발자 상식] 헝가리안 표기법

헝가리안 표기법 개요 표기법 개요 헝가리인 Charles Simonyi 가 MS에서 개발 책임자로 근무하던 당시 제안한 표기법이다. 표기법을 제안하였던 80년대에는 개발 환경이 지금에 비해 매우 부실하였기에 큰 파장을 불러일으켰다고 한다. 표기법은 접두어로 사용되며 현재는 IDE의 발달로 사용하지 않는 것을 권고한다. 장점 1. 변수명으로 데이터 타입을 유추할 수 있다. 2. vi나 emacs 등으로 터미널에서 작업하는 경우 즉, IDE 없이 작업하는 경우 유리하다. 3. 같은 의미를 가지는 서로 다른 타입의 변수들 간 중복을 피할 수 있다. 단점 1. 코드의 가독성이 떨어진다. 2. 데이터 타입을 변경하는 경우 변수명 또는 함수명을 변경해야 한다. 3. C/C++ 언어의 경우 시스템 아키텍처에 따라 데..

CS/Dev Ack 2023.07.01

[System Programming] 프로세스 간 통신 - IPC의 개요와 종류

프로세스 간 통신 IPC의 개요와 종류 IPC 개요 IPC 표준 IPC 종류 PIPE named PIPE Shared Memory Memory Map Socket Message Queue IPC 정리 기타 IPC 개념 IPC 개요 프로세스 간의 통신이 이루어지는 것을 IPC라고 한다. 기본적으로 하나의 프로세스는 독립적으로 존재하여 타 프로세스에 직접적인 접근이 불가능하지만, 운영체제의 커널이 IPC(Inter Process Communication)를 제공하여 각 프로세스들이 동시에 접근 가능한 메모리 즉, 프로세스들이 공유 가능한 메모리 영역을 통해 데이터를 주고 받을 수 있게 제공하고 있다. 각 프로세스들은 IPC를 이용하여 통신을 할 수 있다. IPC 표준 System V IPC System V ..

CS/System 2023.06.11

[etc] VirtualBox 고정 ip 할당

VirtualBox 고정 ip 할당 NAT를 이용한 고정 ip 할당 어댑터 브릿지를 이용한 고정 ip 할당 네트워크 설정 별 차이점 NAT를 이용한 고정 ip 할당 1. 가상환경의 전원을 꺼짐으로 설정한다. 2. 가상환경의 설정 -> 네트워크에 어댑터를 추가하고 NAT로 설정해서 확인을 눌러준다. 3. 윈도우 제어판의 네트워크 상태창에서 어댑터 설정 변경을 누르고 추가된 이더넷2를 우클릭하여 속성창을 연다. 4. 인터넷 프로토콜 버전4(TCP/IPv4)를 더블클릭하고 호스트 ip를 기입해주고 확인을 누른다. 5. 다시 가상 환경을 실행시켜서 네트워크 공유센터를 열고, 로컬 영역 연결을 눌러서 나온 상태창에서 속성을 클릭한다. 6. ip를 할당해준다. 여기서는 자동으로 ip할당을 선택했지만 고정 ip를 부..

etc/Virtual BOX 2023.06.07