목록기술 노트 (142)
anothel의 지식 창고

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

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

서론: Spark와 실무 데이터 분석의 필요성Spark는 대규모 데이터를 빠르게 처리하고 머신러닝 파이프라인을 구축할 수 있는 강력한 분산 컴퓨팅 프레임워크다. Pandas나 SQL 기반 데이터베이스도 데이터 분석에 널리 쓰이지만, 대규모 데이터에서는 메모리 및 성능 문제가 발생하기 쉽다. Spark는 클러스터를 통한 분산 처리를 지원하여 대규모 데이터에서도 성능 저하 없이 빠르게 처리할 수 있어 실무에서 폭넓게 사용되고 있다.이번 글에서는 Spark의 주요 기능과 실무에서의 활용 팁을 정리하여 실무적 인사이트를 제공하고자 한다.1. Spark와 Pandas의 데이터 구조 비교Spark와 Pandas의 DataFrame은 데이터 분석에 주로 사용되지만, 데이터 처리 방식에서 큰 차이가 있다. Pandas..

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

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

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..

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 버전을 지원한다고 명시되어 있었지만, 실제로는 해당 업데이트가 적용된 버전만 정..

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 버전이 명시되어 있어 필요한 버전을 쉽게 선택할 수 ..

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

1. 애자일 소프트웨어 개발 선언이란?애자일 소프트웨어 개발 선언(Manifesto for Agile Software Development)은 소프트웨어 개발을 새로운 방식으로 접근하려는 철학을 담고 있다. “Agile”은 변화에 유연하게 대응하며, 사람 간의 상호작용을 중시하고, 고객과의 협력을 중심에 둔다는 철학이다. 선언은 다음 네 가지에 더 큰 가치를 둔다고 명시하고 있다.공정과 도구보다 개인과 상호작용을포괄적인 문서보다 작동하는 소프트웨어를계약 협상보다 고객과의 협력을계획을 따르기보다 변화에 대응하기를왼쪽 요소도 중요하지만, 오른쪽에 더 큰 가치를 둔다는 의미로 작성되었다. 이 선언에는 Kent Beck, Martin Fowler, Robert C. Martin 등 소프트웨어 개발의 대가들이 참..