5. Rust 소유권 이해
Rust의 소유권(Ownership)은 Rust가 다른 언어와 구분돼 갖는 가장 큰 특징 중 하나 입니다. 이 개념은 Rust를 다른 시스템 프로그래밍 언어와 구별되게 만드는 중요한 특징 중 하나입니다. 소유권의 세 가지 규칙 각 값은 소유자(owner)를 가집니다. 값은 하나의 소유자만 가질 수 있습니다. 소유자가 범위를 벗어나면 값...
Rust의 소유권(Ownership)은 Rust가 다른 언어와 구분돼 갖는 가장 큰 특징 중 하나 입니다. 이 개념은 Rust를 다른 시스템 프로그래밍 언어와 구별되게 만드는 중요한 특징 중 하나입니다. 소유권의 세 가지 규칙 각 값은 소유자(owner)를 가집니다. 값은 하나의 소유자만 가질 수 있습니다. 소유자가 범위를 벗어나면 값...
Rust에서는 문자열에 대한 다양한 개념이 존재하며, 이를 이해하는 것은 중요합니다. 이 글에서는 Rust 표준 라이브러리에서 제공되는 문자열의 두 가지 중요한 타입에 대해 살펴보겠습니다. 불변한 Borrowed String Slice: 문자열 슬라이스는 대부분 빌려오는(borrowed) 형태로 사용됩니다. 리터럴 문자열은 항상 빌려오는 문자열...
Rust는 안전성과 예측 가능성을 중요시하는 언어로, 이를 달성하기 위해 다양한 기능과 도구를 제공합니다. 그 중에서도 nth와 unwrap_or_else 함수는 코드를 안전하고 예측 가능하게 만드는데 도움을 줍니다. nth 함수의 역할과 활용 nth 함수는 이터레이터에서 주어진 인덱스에 해당하는 요소를 가져오는 메서드입니다. Rust에서...
Rust에서는 문자열 리터럴과 String 타입 간의 사용법이 다소 혼동스러울 수 있습니다. 특히 패턴 매칭과 비교 연산에서 이 차이를 명확히 이해하는 것이 중요합니다. 일반적으로 if arg == "sum"과 같은 비교 연산은 문자열 리터럴과 String 타입 간의 비교를 허용합니다. 이는 Rust가 문자열 리터럴을 내부적으로 &str 타입...
Rust는 불변성(immutability)과 타입 변환에 엄격한 규칙을 가지고 있습니다. 코드에서 변수가 불변한(immutable) 상태로 선언되었더라도 해당 변수의 타입이 변경되는 것을 허용하지 않습니다. 이러한 특성은 Rust의 안전성과 예측 가능성을 보장하기 위한 것입니다. 예를 들어, 다음과 같은 코드가 있다고 가정해봅시다. let a: S...
vscode 설정 vscode 설정에서 check command라고 검색하면 Rust-analyzer의 Check command를 변경할 수 있다. 최초에 다음과 같이 check로 돼 있는데, 이것을 clippy로 변경하면 lint가 cargo check에서 cargo clippy로 변경된다. Rustrover 설정 Rustrover의...
Rust 설치하기 Rust를 설치하려면 여기에서 rustup 설치 스크립트를 다운로드하세요. 자신의 운영 체제에 맞는 것을 선택하여 실행하세요. Visual Studio가 설치되어 있지 않다면 여기에서 Visual Studio용 Build Tools를 설치하세요. Rust 및 Cargo 버전 확인하기 설치가 완료되면 터미널에서 다음 명령어를 ...
Install id=$(whoami) sudo apt install wget curl git sudo apt install zsh sudo chsh -s $id $(which zsh) oh-my-zsh 설치 sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/mast...
krew는 kubectl에서 사용할 수 있는 유요한 plugin을 설치할 수 있게 도와준다. kubectrl krew install $pugin_name과 같은 방법으로 plugin을 설치할 수 있다. package manager와 유사하게 다음과 같은 명령어들이 지원된다. kubectl krew list kubectl krew searc...
Overview GCP를 이용하면 간단히 Kuberenetes cluster를 구축하고 이를 통해 cloud를 쉽게 활요하는 것이 가능하다. 이하에서는 GCP를 사용할 수 있는 기본 환경 설정 및 GKE(google kubernetes engine)을 사용하는 방법에 대해 알아보도록 하겠다. 전반적인 과정은 다음과 같다. 우선 GCP를 CLI환경에...
인그레스란? 외부의 HTTP 요청에 대한 서비스 처리 규칙을 정의한 리소스” 인그레스의 주요 기능 라우팅 - URL 및 경로별 백엔드 서비스 분리 SSL/TLS 인증서 연동 인그레스와 인그레스 컨트롤러 - 애플리케이션 관리 효율을 위해 외부 접속에 관한 상세 규칙을 별도 인그레스 리소스로 분리 Traefik Traefik ing...
ipvsadm -Ln명령을 통해 Loadbalance에 할당된 IP가 pod까지 전달되는 라우팅 정보를 확인할 수 있다. Layer 4와 유사 (cf. ingress는 layer7 와 유사) Metallb에 Loadbalance service가 추가 192.168.56.151이 생성된 것을 확인 External-IP 확인 및 Pod 연결 ...
Diagram as Code https://diagrams.mingrammer.com/ 다이어그램을 사용하면 Python 코드로 클라우드 시스템 아키텍처를 그릴 수 있습니다. 코드형 다이어그램을 사용하면 모든 버전 관리 시스템에서 아키텍처 다이어그램 변경 사항을 추적할 수 있습니다. Example) GoDiagram https://god...
Architecture Overview of Harbor https://github.com/goharbor/website/raw/main/docs/img/architecture/architecture.png Harbor는 OCI 호환 클라우드 네이티브 아티팩트 레지스트리로 진화했습니다. 이제 OCI 이미지와 OCI 이미지 인덱스를 지원합니다. OC...
환경 metallb 0.12.1 설정 helm pull metallb/metallb --version=0.12.1 아래와 같이 Main PC에 VM3개를 띄워 cluster를 구축했다고 가정했을 때 graph TD MainPC --> VM1(192.168.56.101) MainPC --> VM2(192.168.56.102) ...
구축 환경 ubuntu20.04 python3.9: ansible 8.5를 위해 필수로 설치 ubuntu20.04에서 python3.9 설치 https://codechacha.com/ko/ubuntu-install-python39/ Ubuntu에서 virtualbox 설치 wget -O- https://www.virtualbox.o...
설치 https://github.com/openebs/charts kubectl apply -f https://raw.githubusercontent.com/openebs/charts/gh-pages/openebs-operator.yaml 테스트 pvc 생성 apiVersion: v1 kind: PersistentVolumeClaim meta...
헬름 차트를 로컬에서 받고 사용하는 my-values.yaml과 같이 두고 사용하는 경우 values.yaml을 어떻게 수정했는지 관리하기가 용이해진다. 이러한 이유로 헬름 차트를 로컬호스트에 내려받고 필요한 변수를 수정해 애플리케이션을 설치하는 방법이 권장된다. Helm 설치 https://github.com/helm/helm/releases ...