분류 전체보기 203

VSCode로 C 코드 디버깅하기

1. 디버그 기능의 필요성프로그램이 의도대로 동작하지 않을 때 소스 코드에 출력 함수(printf)를 삽입하여 값을 확인하는 방식은 한계가 있다.프로젝트 규모가 커질수록 출력 코드를 일일이 추가하고 삭제하는 과정에서 시간이 낭비되며, 코드의 전체적인 실행 흐름을 파악하기 어렵기 때문이다.VSCode의 디버그 기능을 사용하면 다음과 같은 이점이 있다.실행 일시 정지: 특정 지점에서 실행을 멈추고 메모리 상태를 점검할 수 있다.단계별 실행: 코드를 한 줄씩 실행하며 로직의 변화를 추적할 수 있다.데이터 모니터링: 변수에 저장된 값의 변화를 실시간으로 확인할 수 있다.런타임 수정: 실행 중에 변수 값을 임의로 변경하여 가상 시나리오를 테스트할 수 있다.2. C 언어 디버깅 환경 설정VSCode에서 C 코드를 ..

[Linux] APT 저장소 방식으로 VS Code 설치하기 (작동 원리)

리눅스에서 VS Code를 설치하는 방법은 크게 Snap과 공식 APT 저장소 방식으로 나뉜다.Snap은 간편하지만, 샌드박스(Sandbox) 내에서 실행되기 때문에 시스템의 컴파일러나 디버거와의 연동이 까다롭고 실행 속도가 상대적으로 느리다는 단점이 있다. 반면, 공식 저장소를 등록하는 방식은 시스템 자원에 직접 접근하기 쉬워서 개발 도구 간의 호환성이 뛰어나고, apt upgrade 명령어로 다른 패키지들과 함께 일괄 업데이트가 가능하기 때문에 더 효율적이다. 1. 필수 유틸리티 설치sudo apt install -y wget gpg작동 원리: 시스템에 패키지를 다운로드할 wget과 보안 검증을 위한 gpg 도구가 있는지 확인하고 설치한다.패키지 역할: wget은 웹에서 파일을 가져오는 통신 도구이며..

[Linux] C/C++ 개발 환경 세팅: GCC, G++ 설치 및 build-essential

리눅스 환경에서 C 또는 C++ 프로그램을 개발하기 위해서는 컴파일러 설치가 필수적이다.우분투에서 C 개발 환경을 구축하는 방법과 주요 도구들의 차이점을 알아보자.1. GCC vs G++GCC와 G++ 둘 다 GNU 컴파일러 모음(GCC)에 포함되어 있지만, 처리 방식에 차이가 있다.구분GCC (gcc)G++ (g++)주요 대상C 언어 컴파일러C++ 언어 컴파일러확장자 인식.c는 C로, .cpp는 C++로 인식모든 파일을 C++로 간주라이브러리 링크C++ 표준 라이브러리를 자동 링크하지 않음**C++ 표준 라이브러리(STL)**를 자동 링크 C 코드를 짤 때는 gcc, C++ 코드를 짤 때는 g++를 사용하는 것이 표준이다.C++ 파일을 gcc로 컴파일하면 라이브러리 링크 오류가 발생할 수 있으므로 주의..

C언어 개발 환경 비교: Visual Studio vs VSCode

1. Visual Studio vs VSCode: 무엇이 다른가?가장 큰 차이는 '통합 개발 환경(IDE)'이냐, '코드 에디터'냐 하는 점이다.Visual Studio (통합 개발 환경, IDE)장점: C언어 학습에 필요한 컴파일러(MSVC), 디버거, 라이브러리 관리 도구가 모두 내장되어 있다. 설치 한 번으로 즉시 코딩과 실행이 가능하다. 디버깅 성능이 좋고 대규모 프로젝트 관리 기능이 있다.단점: 프로그램이 무겁고 설치 용량이 수십 GB이다. 실행 속도가 상대적으로 느리며 윈도우 환경에 최적화되어 있다.용도: 윈도우 전용 애플리케이션 개발, 복잡한 대규모 프로젝트, 초보자가 환경 설정 없이 바로 학습을 시작하고 싶을 때 적합하다.VSCode (코드 에디터)장점: 가볍고 빠르며 UI가 편리하다. 확..

[VMware] 가상머신 템플릿 만들기: OVF, OVA

가상화 환경을 운영하다 보면 사용 중인 가상 머신(VM)을 다른 서버로 옮기거나, 백업용으로 소장해야 할 일이 생긴다.이때 가장 많이 사용하는 기능이 바로 'Export to OVF/OVA'다.1. OVF와 OVA의 차이점OVF (Open Virtualization Format): 여러 개의 파일이 하나의 폴더에 담긴 형태다. 설정 파일(.ovf), 가상 디스크 파일(.vmdk), 무결성 검사 파일(.mf) 등이 각각 존재한다.OVA (Open Virtualization Archive): OVF의 여러 파일들을 하나로 묶은 '단일 아카이브' 파일이다. 쉽게 말해 OVF 폴더를 하나의 파일로 압축해 놓은 것이다.2. OVF보다 OVA를 권장하는 이유마이그레이션이나 템플릿 배포 시 OVA 형식이 많이 쓰이는..

VMware workstation 가상머신 설치 및 삭제 - 디스크 용량 관리 팁

VMware에서 가상머신을 정리할 때 : Remove 옵션으로 정리하면 VMware workstation 내부에서만 삭제되므로 디스크에는 여전히 남아있게 된다. 따라서 하드디스크에서 완전히 삭제하려면 해당 머신이 poweroff 된 상태에서 Manage > Delete from Disk 를 선택해야 한다. 가상머신을 설정할 때 최대 디스크 용량을 선택하게 되어 있다.최대 용량은 말 그대로 "최대" 용량이다.따라서 100GB를 설정하더라도 실제로 사용한 만큼만 호스트 PC의 용량을 차지하게 된다.오라클 데이터베이스를 구축하게 되면 기본 17GB 정도 소모되기 때문에 가상머신의 최대 디스크 사이즈를 넉넉하게 잡는 것이 좋다. (100GB 정도) VMware는 디스크 생성 시 별도의 옵션을 선택하지 않는 ..

[k8s] 멀티 컨테이너 파드 - 네임스페이스(Namespace) 공유 구조와 사이드카(Sidecar) 패턴

쿠버네티스(Kubernetes)의 가장 기본적인 배포 단위인 파드(Pod)는 일반적으로 하나의 컨테이너를 포함하지만, 용도에 따라 여러 개의 컨테이너를 하나의 파드 안에 묶어서 운영할 수 있다.이를 '멀티 컨테이너 파드'라고 하며, 컨테이너 간 긴밀한 협업이 필요한 경우 매우 효율적이다. 1. 멀티 컨테이너 파드의 개념과 구조파드는 쿠버네티스에서 생성하고 관리할 수 있는 가장 작은 배포 단위다. 원칙적으로는 '1 파드 1 컨테이너' 모델이 권장되지만, 주 프로세스를 돕는 보조 프로세스(로그 수집, 프록시 등)가 필요할 때 멀티 컨테이너 구조를 사용한다.이 구조의 핵심은 네임스페이스(Namespace) 공유다. 아래 그림은 하나의 파드 안에 Nginx 컨테이너와 Ubuntu 컨테이너가 실행되는 경우의 파드..

[k8s] Deployment 배포와 파드 간 통신 테스트

이번 포스팅에서는 쿠버네티스 클러스터의 상태 점검부터 배포, 그리고 내부 네트워크 확인까지 알아본다. 1. 클러스터 초기 상태 및 구성 요소 점검작업 전, 마스터 노드에서 클러스터가 정상적으로 통신하고 있는지, 제어부(Control Plane)의 주요 컴포넌트들이 건강한지 확인해야 한다.# 클러스터 마스터 및 서비스(CoreDNS) 정보 확인kubectl cluster-info Control Plane: 클러스터의 두뇌 역할을 하며, kubectl cluster-info를 통해 API 서버의 엔드포인트를 확인할 수 있다. Kubernetes control plane is running at... :쿠버네티스의 핵심부인 컨트롤 플레인(특히 API 서버)이 192.168.57.100이라는 IP의 6443번..

[k8s] Vagrant 설정파일 분석

Vagrantfile은 VirtualBox를 기반으로 쿠버네티스(Kubernetes) 클러스터 환경을 자동으로 구축하기 위한 설정 파일이다.파일의 내용은 변수 정의, 공통 설정, 마스터 노드 설정, 그리고 워커 노드 설정의 4단계로 구성된다. 1. 전역 변수 설정파일의 최상단에는 클러스터 구축에 필요한 핵심 정보들이 변수로 선언되어 있다.# [1] 전역 변수 설정 구역domain = "kubernetes.lab"control_plane_endpoint = "k8s-master." + domain + ":6443"pod_network_cidr = "10.244.0.0/16"master_node_ip = "192.168.57.100"version = "v1.29" 네트워크 및 도메인: 클러스터 내부에서 사용..