분류 전체보기 ( 2641 ) cpp 파일의 전역함수, 전역변수 . extern "C" 처리 cpp 파일의 전역함수 . extern "C" 처리 파일 확장자 .cpp 에서 클래스 멤버 외 전역함수 정의하면 C++ 방식 (Name Mangling) 으로 컴파일된다. cpp 내에서만 이함수 사용하는 경우에는 문제없지만 .c 파일에서 이 함수를 호출하려고 하는 경우 대응위하여 항상 extern "C" 로 가드처리한다. // some_file.cppvoid my_c_style_func() //다른 C 파일에서는 호출 불가능함. { }myclass::member_func{ my_c_style_func(); // 클래스 멤버함수 내에서 동일파일내의 전역함수 호출은 가능 }//////////////// extern "C" 로 가드처리하면 // C 파일에서도 호출 가능해짐extern "C" .. 2026. 3. 8. C/C++ . 구조체 typedef struct , struct 차이점 C++ C++ 에서는 구조체 이름 자체가 독립적인 타입. 내부나 외부 어디서든 struct 없이 my_st만 써도 된다. struct my_st{ int i;};void func(my_st * p_myst); // 가능.//// 구조체 멤버가 자기자신 참조 하는 경우 struct my_st{ int i; my_st* p_my_st; // 가능. }; C C 에서는 구조체 이름앞에 struct 명시필수. strruct 부착 안할려면 typedef struct .. 형식으로 선언한다. struct my_st{ int i;};void func(struct my_st * p_myst); // 항상 struct 임을 명시해야함.////////////////// typedef struct typedef s.. 2026. 3. 8. STM32 . VSCode 포터블 개발 환경 구축 STM32 . VSCode 포터블 개발 환경 구축 외장 SSD 에 설치된 포터블 VSCode 기반 STM32 개발환경 구축하려면 아래 순서로 한다. 1. STM32 도구세트(CLT) 외장 SSD 에 먼저 설치 2. VSCode 에서 STM32 Extension 설치. 1. STM32CubeCLT (STM32 명령줄 도구) 세트 설치. STM32CubeProgrammer (플래시 및 디버그용), GNU Tools for STM32 (GCC , CMake) , ST-LINK GDB Server (디버깅) 다 포함되어있음. 방법. STM32CubeCLT를 다운로드해서 외장 SSD 폴더 F:\Portable_STM32_Tools\STM32CubeCLT..에 설치. 다운로드 주소 : https://w.. 2026. 3. 7. nRF Connect SDK VSCode . 모듈화 . Snippets 기반 Zephyr Snippets 체계 기반 모듈화 구축 Snippets 폴더 만들기 내가 모듈화 할 대상 소스가 있는 폴더에 Snippets (이 이름 그대로 해야함) 폴더 만들고 파일 snippet.yml 을 추가하여 아래 처럼 작성한다. 예 : CCyBleCentral.cpp 가 구현되어있는 ble_central 폴더에 Snippets 폴더 만들고 이속에 snippet.yml 을 만들어 아래 처럼 작성한다. EXTRA_CONF_FILE: 부분에 이 모듈 실행에 필요한 설정 기록된 파일명 기록한다. 주의사항 : 주석에 한글기록하면 빌드시 오류발생.name: ble_centralappend: EXTRA_CONF_FILE: ble_central.conf # module specific config s.. 2026. 3. 4. nRF Connect SDK VSCode . C++ 로 코딩하기 nRF Connect SDK VSCode . C++ 위한 필수 설정 nRF Connect SDK VSCode 컴파일 환경은 파일 확장자 C 로 된 것은 C 컴파일 되고, 파일확장자 cpp 로 된것은 C++ 컴파일 가능하나 필수 아래와 같은 설정을 해줘야 한다. prj.conf 파일에 C++ 지원추가 - 프로젝트 파일에 있는 prj.conf 파일에 아래 구문 추가. # prj.conf############### for C++CONFIG_CPP=y # C++ 사용위한 필수. # CONFIG_NEWLIB_LIBC : Zephyr 기본 libc(minimal libc)보다는 Newlib이 C++과의 호환성이 좋음. CONFIG_NEWLIB_LIBC=y #Newlib는 임베디드 장치용으로 경량화된 표준 C .. 2026. 3. 4. VSCode 에서 nRF5 개발 기초. Zephyr OS 기반 VSCode 에서 nRF5 개발 VSCode 에서 nRF5 (예 : nRF52840, nRF54L15) 칩에서 작동하는 코드를 VSCode 에서 작성하고 칩에 기록하여 실행하고 VSCode 의 터미널에 출력 까지 하는 전체 작업 플로우 핵심 정리. -본 개발환경은 RTOS 인 Zephyr (발음 : 제퍼) OS 기본 적용된다. VSCode 에서 개발환경 셋팅 - nRF Connect for VSCode 개발환경 구축되어야 한다. 별도정리 : https://igotit.tistory.com/5652 nRF Connect for VS Code . 포터블 설치nRF Connect for VS Code . 포터블 설치 - 외장 SSD 에 VS Code 를 Portable 설치(상세보기 :.. 2026. 2. 25. winapi . 100나노초 UTC 시각 . GetSystemTimePreciseAsFileTime . GetSystemTimePreciseAsFileTime 로컬 시간 독립성: 로컬 시간대나 일광 절약 시간제(DST)의 영향을 받지 않는 절대적인 UTC 시간 반환. 고정밀: 일반적인 GetSystemTime이 10~15ms 단위로 업데이트되는 것과 달리, 이 함수는 하드웨어 카운터(QPC)와 연동되어 0.1μs(=100나노초) 의 정밀도. 단위: 1601년 1월 1일 UTC 0시부터의 경과 시간을 100나노초 단위로 반환. 마이크로초 단위로 받으려면 나누기 10.지원운영체제 : windows 8 이후 Windows Server 2012 이후 C++ 코드예 #include #include long long GetUtcNowMicroseconds() { FILETIME ft; // 1. 고정밀.. 2026. 1. 22. 피어슨 상관 계수 . Pearson Correlation Coefficient 피어슨 상관 계수 - 아래 식에서 r : 값의 범위 -1 ~ 1 X,Y : 여러 값들 . 즉 X = {x1, x2, x3, .... } , Y = {y1, y2, y3, ...}X,Y 는 시계열 데이터 일 수도 있고, 여러 사람의 키를 X, 몸무게를 Y 로 할 수도 있다. 두 개의 이미지 픽셀 데이터 일 수도 있다. 피어슨 상관 계수 의미 양수 : X와 Y 변화는 비례 관계 . 값이 1에 가까울수록 비례 정도 강함. 음수 : X 와 Y 변화는 반비례 관계 . 값이 -1에 가까울수록 반비례 정도 강함. 피어슨 상관계수 = 정규화된 공분산피어슨 상관계수 구하는 식의 원형은 아래식. 분자는 공분산(Corvariance) 이며, 분모는 x, y 의 표준편차 곱으로 나누기하여 정규화 (값의 .. 2026. 1. 22. 통화 표준 코드 . ISO 4217 ISO 4217 . Currency Code- ISO (국제표준화기구) 에서 USD, EUR, KRW 등의 통화 코드 및 골드 등의 금속 코드 정의.- 코드라 함은 유일 식별용으로 사용 가능한 고유 아이디(문자, 숫자 모두 발급되어있음 )를 의미하며 매우 중요한 정보이며, 금융 정보 관리 데이터 베이스, 코딩시 식별 아이디용으로 필수 활용할것. 이미 세계 표준이 만들어진 것은 필수 표준 준수할것. - 3자리 알파벳 코드와 3자리 숫자 코드 정의되어있음. - 보통 알파벳 코드의 앞 두 글자는 해당 국가의 ISO 3166 국가 코드 기반이며, 마지막 글자는 통화 이름의 첫 글자 등을 따름.- 170개 이상의 통화코드 정의. - ISO는 금속(현재는 4개 : 골드, 실버,팔라디움, 플라티늄 ) 을 .. 2026. 1. 21. Cantor Pairing Function . 칸토어 페어링 함수 . 2개 수로 고유 수 만들기 Cantor Pairing Function . 칸토어 페어링 함수 자연수 ( 0이상의 정수 ) 2개 (a, b) 짝과 1:1 대응하는 유일한 정수 만드는 함수. 서로 다른 페어 는 반드서 서로 다른 숫자가 계산 됨. 숫자를 역변환 하여 a, b 값 복원 가능. George Cantor .1870 ~ 1890년대 집합론(Set Theory) 연구 중 “자연수의 쌍을 자연수 하나로 표현할 수 있는가?”라는 질문에서 등장 계산 예. (1,2) 입력 . 출력 = 8(2,1) 입력 . 출력 = 7 C++ 코드 예 #include #include /*수치 안정성 관련 uint64_t 기준 a, b 가능한 값.a,b ≤2^16 : 계산값 uint64_t 오버프로우 없이 절대 안전하게 사용 가능. 주의.. 2026. 1. 21. C# . VC++ DLL 활용 . DllImport C# 에서 DLL 활용 DLL 에서 정의된 무인자 함수extern "C" __declspec(dllexport) void __stdcall OnActivated_CyNinjaX();extern "C" __declspec(dllexport) void __stdcall OnTerminated_CyNinjaX(); extern "C" → C++ name mangling을 막아서 C-style 이름으로 export__stdcall → 호출 규약 (C#에서는 CallingConvention.StdCall)반환형 void → C#에서는 void로 매핑 가능C# . DLL 임포팅 코드 예 - DLL 활용하는 기능을 C# 클래스로 캡슐화 - 본 DLL 은 여러 인스턴스 생성하면 안되는 것이어서 static 클래.. 2026. 1. 19. C++ . 네임스페이스 네임스페이스 . Namespace- 코드의 이름 충돌 방지 및 논리적인 그룹화 위해 활용. 이름 충돌 방지 (가장 큰 목적)서로 다른 라이브러리에서 같은 이름의 함수(init(), log())를 정의해도 네임스페이스가 다르면 공존 가능. 네임스페이스 기본문법 namespace 이름{....} // ; 없음. 예. #include namespace MyApp { int version = 10; void print() { std::cout 네임스페이스 중첩 및 별칭// C++17 이후 중첩은 간결하게 가능. namespace Company::Project::Module { void task() {}}// 별칭(Alias) - 긴 경로를 짧게 줄임namespace .. 2026. 1. 18. 닌자트레이더 . C# 코딩 . 닌자스크립트 기초 닌자트레이더 스크립트 C# 코딩하기. - 닌자트레이더에서 스크립트(C#) 작성 처음 접한 경우 전체 개념 파악 하기 좋은 정보 정리. - 가장 기본적인 "hello ninja" 코딩하면서 전체적인 활용법 쉽게 파악 가능하게 정리. 사전준비 - 닌자트레이더 개요 이해 , 설치 : https://igotit.tistory.com/6408 닌자 트레이더 . 개요 . 설치 . 둘러보기닌자 트레이더 개요 . 특징 - 선물(Futures) 중심의 전문 트레이딩 플랫폼.- 닌자 트레이더 는 프로그램 설치만으로 매매 가능한 구조 아니며 외부 선물브로커,데이터공급자 별도 연결해줘야 하고igotit.tistory.com 스크립트 편집기 닌자트레이더 실행하여, control center 메뉴 : New -> N.. 2026. 1. 17. 닌자 트레이더 . 개요 . 설치 . 둘러보기 닌자 트레이더 개요 . 특징 - 선물(Futures ,예 : CME 선물 ) 중심의 전문 트레이딩 플랫폼.- 닌자 트레이더 는 프로그램 설치만으로 매매 가능한 구조 아니며 외부 선물브로커,데이터공급자 별도 연결해줘야 한다. - - 비교 : MT5 는 브로커 서버 및 데이터 공급도 이미 셋팅되어 플랫폼에 내장된 구조여서 프로그램 설치하면 즉시 매매 가능. - 닌자스크립트 (C# 언어 그대로임) 이용하여 개발자가 직접 지표, 전략, 챠트 시각화 기능 등 구현가능 - - 비교 : MT5 의 EA ( C++ 언어 ) 만큼의 매매 전략 개발 자유도는 부족해 보인다. 닌자 트레이더의 데이터 공급자 NinjaTrader에서 데이터 프로바이더(Data Provider)란거래소로부터 실시간 시세를 받아 Ninja.. 2026. 1. 17. MFC . 대화상자 클래스 템플릿 . 클래스위저드 없이 직접 만들기 MFC . 대화상자 클래스 템플릿 활용시 아래 코드의 클래스 이름 CFixStatusDlg 만 임의 변경해서 활용. 주로 클래스 위저드 오류 발생시 직접 만들어서 활용한다. 상위정리 Visual Studio , Visual C++ 활용 정리.Visual Studio C++ 활용 Visual Studio Visual C++ / C# 1.설치, 설정 주제 비고. Visual Studio 2010 설치. Visual Studio 2013 (Community)무료 설치. Visaul Studio 2015 (Community)무료 설치. - Visual Studio 2015 버전은 이전 버전대비igotit.tistory.com 연관 Visual C++ 2022 . 클래스 위저드 오류 해결. .. 2026. 1. 11. MFC . Tab Control (탭 컨트롤) 사용방법 MFC . Tab Control . CTabCtrl - 대화상자에서 추가로 여러 가지 컨트롤 배치하고 활용 해야하는데 1개의 대화상자로는 비좁은 경우 유용. - CTabCtrl 자체는 화면 전환 기능없고 선택된 탭인덱스만 관리하는 것. - 탭클릭시 실제 화면 전환은 각 탭에 대응하는 Child Dialog 를 Show/Hide 해서 구현된다. [Main Dialog] ├─ TabCtrl ├─ Child Dialog #0 (Tab 0용) ├─ Child Dialog #1 (Tab 1용) ├─ Child Dialog #2 (Tab 2용) 구조 개요부모: 메인 대화상자 (CMainDlg)자식: 탭별 전용 대화상자 (CTabPage_xxx)Tab 변경 이벤트에서 자식 다이얼로그 전환 CTab.. 2026. 1. 11. VC++ . 정적 라이브러리 .Static Library Static 라이브러리Static 라이브러리는 .h, .cpp로 구현된 클래스 소스를 단일 위치에서 일관되게 관리하기 위한 매우 현실적인 수단이다.특정 기능이나 도메인 로직을 하나의 static 라이브러리 프로젝트로 구성해두면,여러 응용 프로그램에서 동일한 클래스 구현을 그대로 공유하면서 사용할 수 있다. 이 방식의 핵심은 클래스 소스의 관리 경로 단일화에 있다. Static 라이브러리를 사용하면 클래스의 구현은 오직 한 곳에만 존재하고, 모든 응용 프로젝트는 그 결과물을 링크하여 사용한다.따라서:클래스는 지속적으로 개선될 수 있고변경 사항은 즉시 모든 응용 프로그램에 반영되며복사·붙여넣기에서 발생하는 구조적 문제를 근본적으로 제거할 수 있다 Static 라이브러리는 “배포를 위한 형식”이라기 보다는 내.. 2026. 1. 7. C++ Embedded Python (임베디드 파이썬) . Python C API . pybind11 C++ Embedded PythonC++ Embedded Python 이란, C++ 애플리케이션 내부에 CPython 인터프리터를 내장하고 Python C API 또는 pybind11을 통해 Python 코드를 실행하는 구조를 의미한다. Python C API vs. pybind11 비교 - pybind11 은 Python C API 호출을 C++ 스타일로 래핑하여 제작된 헤더온리 C++ 러이브러리. - pybind11 에서 11 의 의미는 C++11 표준을 적극적으로 사용했다는 의미. - C++ 프로그램에서 Pyhton 실행만 필요하고 간단하게 활용하는 경우에는 Python C API 만으로 충분. - C++ 프로그램에서 파이썬 측 함수호출 , 구조체 반환 등 많은 인터페이스가 요구되는 경우에는 .. 2026. 1. 4. 이전 1 2 3 4 ··· 147 다음