기술 노트 18

Google C++ Style Guide(2024) - 1장 C++ 버전 (C++ Version)

1장 C++ 버전 (C++ Version)현재 구글 C++ 스타일 가이드는 C++20을 기준으로 코드를 작성하도록 권장하며, C++23 기능은 사용하지 않는 것을 원칙으로 한다. 가이드는 최신 C++ 버전으로 빠르게 전환할 계획이기 때문에, 코드 작성 시점에 맞는 최신 가이드를 참고하는 것이 중요하다.비표준 확장은 사용하지 않는 것이 원칙이다. 또한, C++17과 C++20의 기능을 프로젝트에 적용하기 전 다른 환경으로의 이식성을 반드시 고려해야 한다.참조URLhttps://google.github.io/styleguide/cppguide.html

Google C++ Style Guide(2024) - 배경 (Background)

2024년도에는 진짜 마지막 구글 C++ 스타일 가이드 포스팅을 해낸다.배경 (Background)C++은 구글의 여러 오픈 소스 프로젝트에서 주요 개발 언어로 사용되고 있다. C++을 사용하는 개발자라면 알다시피, 이 언어는 강력한 기능을 제공하지만 그만큼 복잡성을 동반하며, 코드가 버그에 취약해지고 읽기 어려워지거나 유지보수가 까다로워질 수 있다.이 가이드는 C++ 코드를 작성할 때 지켜야 할 사항과 피해야 할 사항을 상세히 설명함으로써 이러한 복잡성을 관리하고자 한다. 이러한 규칙들은 개발자가 C++ 언어의 기능을 생산적으로 활용하면서도 코드베이스를 관리 가능하게 유지하는 데 그 목적이 있다.스타일 또는 가독성이라 불리는 규칙은 단순한 소스 파일 형식 이상의 관습을 포함하는데, 이는 코드 작성 방식..

CHM(Compiled HTML Help, 윈도우 도움말 파일)

1장 개요CHM(Compiled HTML Help) 파일은 주로 Windows 환경에서 사용되는 도움말 파일 형식으로, HTML, 이미지, 스크립트 등 다양한 파일을 압축하여 하나의 파일로 제공한다. Microsoft에서 개발한 이 파일 형식은 소프트웨어 사용자에게 도움말 시스템 제공에 최적화되어 있으며, 웹 브라우저와 유사한 탐색 환경을 지원한다. CHM 파일은 오프라인 상태에서도 사용 가능하여 정보 접근이 쉽고 빠르다.1.1 도움말 시스템문서화는 모든 소프트웨어에서 중요한 요소다. 복잡한 소프트웨어 시스템을 비프로그래머도 이해할 수 있도록 설명하는 것으로, 프로그램의 작동 방식과 기능, 그리고 이를 사용해 목표를 달성하는 방법을 안내한다.좋은 문서는 사용자에게 큰 도움이 되지만, 부족한 문서는 오히려..

기술 노트 2024.10.24

Spark와 머신러닝: 실무 활용 가이드 정리(작성중)

서론 스파크 머신러닝 완벽 가이드 - Part 1 강의 | 권 철민 - 인프런권 철민 | 스파크(Spark) 머신러닝의 핵심 Framework에 대한 이해, 난이도 높은 실전 문제를 통한 SQL 기반의 데이터 가공, 업무 도메인 분석을 통한 데이터 분석과 최적화된 머신러닝 모델 구현 능력www.inflearn.comSpark는 대용량 데이터 처리와 머신러닝에 특화된 분산 컴퓨팅 프레임워크로, 데이터 엔지니어링과 머신러닝을 통합할 수 있는 강력한 도구다. 이번 블로그에서는 권 철민 강사님의 스파크 머신러닝 완벽 가이드 - Part 1 강의 내용을 바탕으로, Spark와 Pandas의 주요 기능 비교, 데이터 처리 방법, SQL 쿼리 활용법 등을 정리해 보려고 한다. Spark의 머신러닝 프레임워크와 SQL..

기술 노트 2024.03.31

MacOS 개발 첫 발: 환경 설정부터 코드 호출까지

서론: 드디어 MacOS 첫 발을 떼게 된 이유Swift로 C 기반의 모듈을 호출하는 iOS 앱을 무려 일주일 만에 완성했다. 환경설정으로 고생 좀 했지만, 드디어 해냈다.오랫동안 애증의 대상이었던 나의 가계부 iOS 애플리케이션이 있다. 2017년 초부터 사용해온 이 앱은 대부분 수작업으로 이루어지지만, 오히려 이 자유도 덕분에 시중의 자산 관리 앱과는 비교할 수 없는 매력을 가진다. 다만, 더 이상 업데이트가 없어서 iPhone SE부터 iPhone 12 Pro Max까지의 화면 차이에 적응하기가 쉽지 않다.그러던 중, 회사에서 다양한 OS에서 암호화 모듈을 테스트해야 하는 과제가 주어졌다. 그중 iOS도 포함되어 있어, 드디어 MacOS에 발을 들이게 되었다. 기대 반 두려움 반으로 시작한 MacO..

기술 노트 2022.03.18

Unix와 Linux: 다양한 OS 환경에서의 빌드와 자동화 경험

PKI 응용 소프트웨어를 다룬 지도 어느덧 4년 차다. 리눅스 환경은 익숙해졌고, 유닉스 환경에도 점차 적응했는데, 그 과정에서 절대 해서는 안 될 것들과 해두면 좋은 팁들이 자연스레 자리잡게 되었다. 이번 글에서는 그 경험을 공유해 보려 한다.1. Unix 환경에서 피해야 할 실수와 팁유닉스 환경에서는 OS마다 패키지나 명령어 지원이 제각기 다르고, 예상치 못한 작동을 하는 경우도 많다. 작은 실수 하나가 시스템 전반에 영향을 미칠 수 있기 때문에, 기본 시스템 설정이나 권한 설정은 특히 신중히 다뤄야 한다.2. 다양한 환경에서의 빌드 자동화 경험한창 CMake로 빌드 자동화를 시도하며 동일한 코드를 리눅스뿐 아니라 AIX, SunOS, HP-UX에서 테스트할 때가 있었다. 환경마다 명령어와 라이브러리..

기술 노트 2022.03.17

Solaris 10 이하에서 .tar.gz 파일을 여는 방법

1. 문제 상황: 낮은 버전 Solaris에서 압축 해제 오류Solaris 8, 9, 10 버전에서는 .tar.gz 파일을 풀려고 할 때 오류가 발생할 수 있다. 예를 들어, 다음과 같이 tar 명령어를 사용하려 할 때 디렉토리 체크섬 오류가 발생할 수 있다$ tar -xvf pressedFile.tar.gz tar: directory checksum error (디렉토리 체크섬 오류)2. 문제 원인: z 옵션 미지원Solaris 2.5부터 10까지의 버전에서는 tar 명령어의 z 옵션을 지원하지 않기 때문에 직접 .tar.gz 파일을 압축 해제할 수 없다. z 옵션은 gzip 압축을 다룰 수 있게 해주는 옵션이지만, 오래된 버전의 Solaris tar에는 이 옵션이 없다.3. 해결 방법: 낮은 버전 S..

기술 노트 2022.03.16

AIX에서의 XL gcc 컴파일러: 설치/삭제 가이드

1. AIX와 XL C/C++ 컴파일러의 필요성AIX에서 개발을 시작할 때 필수적으로 XL C/C++ 컴파일러를 사용해야 한다고 생각했었다. 과거 회사와 이전 AIX 버전들에서도 XL C/C++이 기본 컴파일러로 사용되었기 때문이다. 그러나 실제로는 AIX의 버전에 따라 지원하는 컴파일러 버전이 다르고 유료라는 점을 알게 되었다. 이러한 제약 때문에 AIX 버전에 따라 맞는 버전의 XL C/C++를 사용하는 것이 필요했다.2. AIX 버전별 XL C/C++ 호환성AIX의 버전별로 지원되는 XL C/C++ 컴파일러가 다르기 때문에, 각 버전에 맞는 컴파일러 버전 확인이 필수적이다. 예를 들어, AIX 7.2의 경우에는 13.1 버전을 지원한다고 명시되어 있었지만, 실제로는 해당 업데이트가 적용된 버전만 정..

기술 노트 2022.03.15

AIX에서 오픈소스 패키지 설치하기: 리눅스와의 차이점과 필수 도구

1. 리눅스와 AIX의 차이점: yum, apt가 없다리눅스에서는 CentOS의 yum이나 Ubuntu의 apt를 통해 쉽게 패키지를 설치할 수 있지만, AIX에는 이러한 패키지 관리 도구가 기본적으로 없다. AIX에서 필요한 소프트웨어는 직접 다운로드 후 설치해야 한다. 이 과정에서 적절한 패키지를 찾는 데 시간이 많이 소요될 수 있다.2. AIX Toolbox for Open Source SoftwareAIX에서 오픈소스 패키지를 쉽게 찾기 위해 AIX Toolbox for Open Source Software 사이트를 활용할 수 있다. IBM이 제공하는 이 사이트는 GNU 및 오픈소스 툴을 AIX용으로 제공하며, 패키지 이름 뒤에 지원하는 AIX 버전이 명시되어 있어 필요한 버전을 쉽게 선택할 수 ..

기술 노트 2022.03.14

AIX에서 이상적인 PS1 프롬프트 설정하기: 효율적인 작업 환경 만들기

1. 이상적인 PS1 설정의 필요성AIX에서 작업할 때 효율적이고 익숙한 프롬프트는 가독성과 작업 속도에 큰 도움을 준다. 사용자 이름, 호스트 이름, 현재 디렉토리 정보가 포함된 PS1 설정을 통해 빠르게 환경을 파악할 수 있다.2. PS1 설정 방법이상적인 PS1 프롬프트 설정을 위해 다음 단계를 수행한다.시작 파일 수정시스템 시작 파일 중 하나인 ~/.profile 파일을 연다.$ vi ~/.profilePS1 변수 추가사용자 이름, 호스트 이름, 현재 디렉토리 정보를 포함한 프롬프트를 설정하기 위해 다음 내용을 추가한다.export PS1="[$USER@$HOSTNAME "'${PWD##*/}'"]\$ "파일 저장 및 실행설정이 완료되면 esc를 누른 후 다음 명령어로 저장하고 종료한다.:wq설정..

기술 노트 2022.03.13