프로젝트

    Study - Singleton Pattern 2

    싱글턴 패턴에서 자기 자신을 포인터로 가지도록 구현하는 방법도 있고, 일반 변수로 사용하는 경우가 있던데 어떤 차이가 있을까? 궁금했다. 포인터를 사용하는 경우 지연 초기화(Lazy Initialization) 가능: 포인터를 사용하면 객체의 인스턴스가 실제로 필요할 때까지 생성을 지연시킬 수 있습니다. 즉, getInstance() 메소드가 처음 호출될 때 싱글턴 객체를 생성합니다. 이는 자원을 효율적으로 사용하게 하며, 초기 시작 시간을 단축시킬 수 있습니다. 명시적인 생성자 호출: 포인터를 사용하면 객체의 생성자를 명시적으로 호출할 수 있어, 생성 과정에서 추가 로직을 수행할 수 있습니다. 생명 주기 관리 용이: 프로그램의 어느 시점에서든 객체를 명시적으로 삭제하거나 재생성하는 등 생명 주기를 관리..

    study - vcpkg

    vcpkg vcpkg는 C++ 프로젝트에 대한 의존성 관리를 단순화하는 마이크로소프트에서 개발한 오픈 소스 패키지 관리자입니다. 크로스 플랫폼 호환성을 지원하며, Windows, macOS, 그리고 Linux에서 사용할 수 있습니다. 이 도구는 개발자들이 필요한 라이브러리를 쉽게 찾고, 설치하며, 프로젝트와 통합할 수 있게 해줍니다. vcpkg 설치 전제조건 CMake Visual Studio 또는 GCC/Clang(Linux, macOS) Git ※ 진짜 진짜 중요 중요 !!!! Visual Studio 설치 시, 언어팩은 꼭 영어로 제발 설치하세요. 영어랑 그 외 언어 설치하는 건 상관 없는데, 영어는 필수입니다. 이유는? 저도 잘 모르겠어요,,,, 한국어만 설치한경우 Visual Studio 잘 찾..

    Study - 싱글턴 패턴, Singleton Pattern

    싱글턴 패턴, Singleton Pattern 싱글턴 패턴은 소프트웨어 디자인 패턴의 하나로, 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 패턴입니다. 이는 전역 변수를 사용하지 않고 객체에 대한 전역 접근을 제공하려는 경우에 유용합니다. 예제 코드 #include class Singleton { private: static Singleton* instance; // 싱글턴 인스턴스를 저장할 정적 멤버 변수 Singleton() {} // 생성자는 비공개 public: // 복사 생성자와 대입 연산자를 삭제하거나 비공개로 만듭니다. Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; // 싱글턴..

    설계 - 데이터 수집 모듈

    설계 - 데이터 수집 모듈 1. API 클라이언트 주식 데이터를 제공하는 외부 API(예: Alpha Vantage, Yahoo Finance)와 통신할 수 있는 클라이언트를 구현합니다. 이 클라이언트는 필요한 데이터를 요청하고 응답을 수신하는 역할을 합니다. 2. 데이터 파서 API로부터 수신된 데이터(대부분 JSON 형식)를 파싱하여 필요한 정보만 추출하는 기능을 구현합니다. 3. 데이터 모델 파싱된 데이터를 저장할 데이터 구조(클래스 또는 구조체)를 정의합니다. 이 데이터 모델은 나중에 분석 모듈에서 사용됩니다. 4. 오류 처리 및 로깅 네트워크 오류, API 한도 초과, 데이터 형식 문제 등의 예외 상황을 처리하고 로그를 남길 수 있는 기능을 포함합니다.

    요구 사항 분석 및 개발 모듈

    요구사항 1. 데이터 수집 실시간 주식 데이터나 역사적 주식 데이터를 수집할 수 있는 기능. 2. 데이터 분석 수집된 데이터를 기반으로 기본적 분석, 기술적 분석 등 다양한 분석 기법을 적용할 수 있는 기능. 3. 사용자 인터페이스 사용자가 쉽게 데이터를 조회하고 분석 결과를 볼 수 있는 직관적인 UI. 4. 성능과 확장성 대량의 데이터를 빠르게 처리할 수 있으며, 새로운 기능 추가나 데이터 소스 확장이 용이해야 합니다. 5. 보안 사용자 데이터와 분석 정보의 보안을 유지할 수 있는 기능. 모듈 1. 데이터 수집 모듈 주식 정보 API로부터 데이터를 효율적으로 수집하기 위한 모듈 2. 데이터 처리 및 저장 모듈 수집된 데이터를 분석에 적합한 형태로 변환하고, 데이터베이스에 저장 3. 분석 알고리즘 모듈 ..

    자가 보호(3) - DeviceIO 개발

    드라이버와 통신하는 부분을 개발한다. 아직 지식이 없어, 자세한 내용을 기입하지 못한다. 리서치를 통해 해당 게시글을 수정한다.

    자가 보호(2) - Driver Load, Unload

    - Drivr Load, Unload 하는 Function을 만들 것이다. - 잘 쓰기 쉽게, 잘못 쓰기 어렵게 참고자료 (https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-createservicea) 필요한 기능 4가지 - Driver Load - Driver Unload - Driver Start - Driver Stop 4가지 기능을 제작할 것이다. - 첫 번째는 동작만 하기 위해 개발 - 두 번째는 첫 번째보다 필요없는 변수 제거 - 세 번째는 Logic에서 필요없는 부분 제거 꼭 세 번을 개발하지 않을 수도 있다. 조금 더, 개발 스킬보다는 개발 기본에 충실하고 싶다. 위에 MSDN을 참고해, 그대로 코드를 가져왔다. 기존에..

    자가 보호(1) - 프로젝트를 시작하기 전에

    프로젝트를 진행하면서 블로그에서 진행을 한다. 자가 보호 프로젝트는 목표 프로세스, 파일, 레지스트리의 종료, 변경, 제거 등으로부터 보호하는 프로젝트. 해당 프로젝트를 진행하면서, 현업에서 배우는 코딩 컨벤션 및 논리적인 사고력 등 여러가지 본인에게 부족한 것을 향상 시키는 것에 집중한다. 1. 필요한 모듈은 개발한다. - 오픈소스가 충분하나, 모듈과 모듈끼리 서로 얽히지 않게 개발하는 능력이 매우 부족하다. 2. 주석 처리 및 코딩 컨벤션에 집중한다. - 코딩 규약은 최소한의 성의라고 생각한다. 3. Modern C++ 지향한다. - Modern이라고 붙이기에는 애매하지만, C++11 이상에서 개발된 키워드를 사용한다. 4. 최소 2번 이상 지웠다가 새롭게 짠다. - 결과만 나오는 코딩은 어울리지 않..