⭐ Programming
[Design Pattern] MVC, MVVM 패턴
[Design Pattern] MVC, MVVM 패턴
2024.08.14MVC( Model-View-Controller) 패턴과 MVVM(Model-View-ViewModel) 패턴은 UI 개발에서 사용되는 아키텍처 패턴이다. 각자의 장단점을 파악하고 UI 구조를 설계할 때 사용해보자. 목차 MVC ( Model - View - Controller ) MVC ( Model - View - Controller ) Model- 데이터- ex. HP, MP, Level, 사용 가능한 스킬 View- Controller 통해 건내받은 Model의 데이터를 시각적으로 보여주는 역할- 사용자 인터페이스(User Interface, UI = 사용자에게 보여지는 부분)- 언리얼 엔진의 경우 UUserWidget Controller- Model과 View..
[C++] Effective C++ : Chapter 8 new와 delete를 내 맘대로
[C++] Effective C++ : Chapter 8 new와 delete를 내 맘대로
2024.06.05목차 Chapter 8 new와 delete를 내 맘대로 항목49: new 처리자의 동작 원리를 제대로 이해하자 Q. new operator, delete operator를 클래스 내부 연산자로 오버로딩했습니다! main()의 결과로 옳은 답은 몇번일까요?class Unseen{public: Unseen() { cout 1번.Unseen()Unseen new! 8Unseen delete!~Unseen()2번.Unseen new! 8Unseen()~Unseen()Unseen delete!3번.Unseen new! 4Unseen()~Unseen()Unseen delete! 더보기답: 2번해제를 할 때에도 마찬가지로, 먼저 메모리를 해제한 후 소멸자를 호출해준다매크로로 만들어주는 것도 방법인데..
[C++] Effective C++ : Chapter 7 템플릿과 일반화 프로그래밍
[C++] Effective C++ : Chapter 7 템플릿과 일반화 프로그래밍
2024.05.27목차 Chapter 7 템플릿과 일반화 프로그래밍 항목 41: 템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터 Q. 다음 문장 중 틀린 것을 고르시오.1. 클래스 및 템플릿은 모두 인터페이스와 다형성을 지원한다.2. 클래스의 경우, 인터페이스는 명시적이며 함수의 시그너처를 중심으로 구성되어 있다.3. 다형성은 프로그램 실행 중에 가상 함수를 통해 나타난다.4. 인스턴스화를 진행하는 함수 템플릿에 어떤 템플릿 매개변수가 들어가느냐에 따라 호출되는 함수가 달라지는데 이를 컴파일 타임 다형성이라고 한다.5. 암시적 인터페이스는 함수 시그너처에 기반하고 있지 않다.6. 템플릿 매개변수의 경우, 인터페이스는 명시적이며 유효 표현식에 기반을 두어 구성됩니다.7. 컴파일..
[C++] Effective C++ : Chapter 6 상속, 그리고 객체 지향 설계
[C++] Effective C++ : Chapter 6 상속, 그리고 객체 지향 설계
2024.05.07목차 Chapter 6 상속, 그리고 객체 지향 설계 항목 32: public 상속 모형은 반드시 "is-a(..는 ...의 일종이다)"를 따르도록 만들자 Q. 다음 보기의 설명 중에 틀린 것을 고르십시오. 클래스 D("Derived)를 클래스 B("Base")로부터 public 상속을 통해 파생시켰다고 가정합니다.1. public 상속은 "is-a(..는 ...의 일종이다)"를 의미한다.2. D 타입으로 만들어진 모든 객체는 또한 B 타입의 객체이지만, 그 반대는 되지 않는다.3. D 클래스는 B 클래스보다 더 큰 메모리 공간을 가진다.4. private으로 상속받으면 public와 protected를 private 멤버로 바꿔준다.더보기답. 3번자식 클래스는 부모 클래스에서 상속받은 ..
[C++] Effective C++ : Chapter 5 구현
[C++] Effective C++ : Chapter 5 구현
2024.04.28Effective C++ : Chapter 5 구현 항목 26: 변수 정의를 늦출 수 있는 데까지 늦추는 근성을 발휘하자. Q. 아래 코드에서 encrypted 변수를 어떻게 초기화하고 있을까요? 아래의 보기 중 옳은 것을 고르시오.std::string encryptPassword(const std::string& password){ std::string encrypted(password); }1. string의 기본 생성자에 의해 만들어지고 password 값이 대입된다.2. string의 복사 생성자에 의해 초기화된다.더보기답: 2번 ( 185~186쪽 )불필요한 기본 생성자 호출이 일어나지 않고 변수의 의미가 명확한 상황에서 변수를 정의함과 동시에 복사 생성자에 의해 초기화가 이루어지고 있..
[C++] Effective C++ : Chapter 4 설계 및 선언
[C++] Effective C++ : Chapter 4 설계 및 선언
2024.04.17Effective C++ : Chapter 4 설계 및 선언 항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 Q. 인터페이스에 대해 설명해보세요.더보기소프트웨어식 인터페이스: 응용프로그램과 운영체제 간의 통신을 연결해주는 인터페이스언어적인 인터페이스:순수 가상함수로만 이루어진 클래스 Q. 인터페이스를 설계할 때, shared_ptr 을 사용하면 좋은 이유에 대해 설명해보세.더보기사용자 정의 삭제자를 통해 교차 DLL 문제 예방할 수 있습니다.반환 타입을 포인터가 아닌 shared_ptr로 만들어서, 메모리 누수 예방할 수 있습니다. Q. 교차 DLL 문제(cross-DLL problem)에 대해 설명해보세요. 왜 교차 DLL 문제가 발생할까요? 이에 대한 해결방안으로..
[C++] Effective C++ : Chapter 3 자원관리
[C++] Effective C++ : Chapter 3 자원관리
2024.04.13프로그래밍에서 자원(Resource)이란, 사용 후에 시스템에 돌려주는 모든 것을 통칭한다. C++ 프로그래밍에서는 동적으로 할당한 메모리는 메모리 누수가 발생하지 않도록 적절히 해제해주어야 한다. 목차 Effective C++ : Chapter 3 자원관리 항목 13: 자원 관리에는 객체가 그만! Q. 아래 코드를 사용하면 어떤 상황이 벌어질까요?shared_ptr spi(new int[1024]); 컴파일도 잘 된다. 동적 배열에 대한 메모리가 문제없이 잘 해제된다.컴파일 에러가 발생한다. 메모리가 해제되지 않는다.컴파일 에러가 발생하지 않는다. 메모리가 해제되지 않는다.더보기shared_ptr 는 소멸자 내부에서 delete[] 연산자가 아니라 delete 연산자를 사용하므로 동적으로 할..
[C++] Effective C++ : Chapter 2 생성자, 소멸자 및 대입 연산자
[C++] Effective C++ : Chapter 2 생성자, 소멸자 및 대입 연산자
2024.04.10목차 Chapter 2: 생성자, 소멸자 및 대입 연산자 항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 Q. C++이 만들어내는 기본적인 함수는 무엇이고, 어떠한 형태로 생성할까요? 프로그래머기 만들지 않으면 컴파일러가 기본으로 생성해주는 멤버 함수가 뭐가 있을까요?더보기A. 기본적인 함수는 복사 생성자, 복사 대입 연산자, 소멸자입니다. 생성자조차도 선언되어 있지 않으면 역시 컴파일러가 기본 생성자를 선언합니다. 이 4가지 함수는 inline 함수 형태로 생성됩니다.추가로 이동 생성자, 이동 대입 연산자도 생성됩니다public - inline 은 컴파일러가 선택한다.move&&… (가변길이 템플릿)코드복사형태https://modoocode.com/290" data..
[C++] Effective C++ : Chapter 1 C++에 왔으면 C++의 법을 따릅시다
[C++] Effective C++ : Chapter 1 C++에 왔으면 C++의 법을 따릅시다
2024.04.07목차 Chapter 1: C++에 왔으면 C++의 법을 따릅시다 항목 1: C++ 언어들의 연합체로 바라보는 안목은 필수 포인터는 메모리의 스택 영역에 있고 포인터가 가리키는 객체는 힙에 있다! 항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자 Q. #define 매크로의 유효 범위는?더보기A. 컴파일이 끝날 때까지다. 항목 3: 낌새만 보이면 const를 들이대 보자! Q. 아래의 코드에서 값을 변경하지 못하도록 const를 붙이고 싶습니다. 어디에다가 const를 붙이는게 좋을까요?char* authorName = "Scott Meyers"; 더보기A. 값이 변경되지 않도록 앞쪽에 const를 붙이면 된다. 하지만 주소값도 변경되지 않게 con..
callback 함수
callback 함수
2023.09.18callback 함수는 다른 함수에게 인자로 전달되어 특정 이벤트 발생 시 호출되는 함수입니다. 어떤 함수(=혹은 메소드)를 실행하는 도중에 특정 이벤트가 발생하면, 이벤트 핸들러 함수인 콜백 함수가 자동으로 실행됩니다. 목차 callback 함수 callback 함수란? callback 함수는 다른 함수에게 인자로 전달되어 특정 이벤트 발생 시 호출되는 함수입니다. 어떤 함수(=혹은 메소드)를 실행하는 도중에 특정 이벤트가 발생하면, 이벤트 핸들러 함수인 콜백 함수가 자동으로 실행됩니다. callback 함수 실행 절차 1. 함수 포인터 전달 Callback 함수는 일반적으로 다른 함수에게 인자로 전달됩니다. 이때, Callback 함수의 메모리 주소를 가리키는 함수 포인터를 전달합니다. 2. 이벤트 ..
[네트워크] OSI 7계층
[네트워크] OSI 7계층
2023.09.15OSI 7계층은 네트워크 통신 과정을 7단계로 나눈 것을 말한다. OSI 7계층은 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 그리고 응용 계층으로 이루어져 있다. 목차 [네트워크] OSI 7계층 OSI 7계층 (Open Systems Interconnection Reference Model) OSI 7계층은 네트워크 통신 과정을 7단계로 나눈 것을 말한다. 7. 응용 (Application) 내용 표현 사용자에게 네트워크 서비스 제공 최상위 계층으로 HTTP, FTP, SMTP 등과 같은 응용 프로그램과 직접적으로 관련된 서비스들이 위치해 있다. 6. 표현 (Presentation) 데이터 형식 결정 데이터 형식 변환, 암호화/복호화 등 데이터를 응용 프로그램에..
[네트워크] TCP / UDP의 차이점
[네트워크] TCP / UDP의 차이점
2023.09.07TCP(Transmission Control Protocol)는 연결 지향 서비스로 패킷 교환 방식을 사용한다. 반면 UDP(User Datagram Protocol)는 비연결형 서비스로 데이터그램 방식이다. UDP가 TCP보다 속도가 더 빠르지만, TCP는 연결형 프로토콜이기 때문에 더 높은 신뢰성을 갖는다. 목차 TCP / UDP의 차이점 TCP vs UDP TCP는 연결 지향 서비스로 패킷 교환 방식을 사용한다. 반면 UDP는 비연결형 서비스로 데이터그램 방식이다. UDP가 TCP보다 속도가 더 빠르지만, TCP는 연결형 프로토콜이기 때문에 더 높은 신뢰성을 갖는다. TCP는 3-way handshaking 과정으로 연결 설정하고 4-way handshaking을 통해 해제한다.UD..