1. 시작하며 자주 쓰는 git 명령어를 git commands cheat sheet 를 참고하여 정리해보자. 자세한 내용은 언제나 그렇듯이 내 블로그보다는 공식 사이트를 확인하는 것이 좋다. git으로 새로운 프로젝트를 시작하고자 한다면 프로젝트 생성하기로 바로 이동하자. 시간이 없다면 자주 쓰는 명령어만 보면 된다. 자주 쓰는 Git Command # 현재 directory 의 모든 파일을 Staging Area 로 이동 git add . # file 들의 tracking 상태 보기 git status # Staging 의 파일들 commit 하기 git commit -m "messsage" # 저장소에 commit 반영하기 git push # 저장소에서 commit 가지고 오기 git pull # ..
패키지: 크레이트를 빌드, 테스트, 공유할 수 있는 카고의 기능 크레이트: 라이브러리나 실행 파일을 생성하는 모듈의 트리(tree) 모듈과 use: 코드의 구조와 범위, 그리고 경로의 접근성을 제어하는 기능 경로(path): 구조체, 함수, 혹은 모듈 등의 이름을 결정하는 방식 패키지와 크레이트 크레이트는 하나의 바이너리 혹은 라이브러리다. 크레이트 루트(root)는 러스트 컴파일러가 컴파일을 시작해서 크레이트의 루트 모듈을 만들어내는 소스 파일이다. 패키지는 이 크레이트를 빌드하는 방법을 서술하는 Cargo.toml 파일을 갖는다. 패키지를 생성하게되면 (cargo new 명령) 카고는 Cargo.toml 파일을 생성해 패키지를 만들어 낸다. 모듈을 이용한 범위와 접근성 제어 모듈(module)은 크레..
열거자(enumerations, enums)는 사용 가능한 값만 나열한 타입을 정의할 때 사용한다. 열거자 정의하기 IP주소를 예를 들어 보자. IP주소는 버전 4나 버전 6으로 두 가지가 표준으로 자리 잡고 있다. enum IpAddrKind { V4, V6, } 열거된 값들을 열것값(variants)라고 한다. 열거자의 값 let four = IpAddrKind::V4; let six = IpAddrKind::V6; fn route(ip_type: IpAddrKind) {} route(IpAddrKind::V4); route(six); 열거자의 각 값은 식별자를 이용해 구분하며, 식별자와 값을 구분하기 위해 두 개의 콜론을 사용한다. 열거자를 매개변수로 갖는 함수를 정의할수도 있고, 열거자의 값을 이..
구조체(struct or structure)는 서로 관련이 있는 여러값을 의미 있는 하나로 모으고 이름을 지정해 접근할 수 있는 사용자 정의 데이터 타입이다. 구조체 정의와 인스턴스 생성 구조체를 정의하려면 struct 키워드 다음에 구조체에 부여할 이름을 지정해주면 된다. 이후 중괄호 안에 구조체가 저장할 데이터의 타입과 이름을 나열한다. 이 데이터들을 필드(field)라고 한다. 구조체를 정의한 후 이를 사용하려면 각 필드에 저장할 값을 명시에서 구조체의 인스턴스를 생성해야 한다. 정의 순서와 같을 필요는 없다. 구조체에서 원하는 값을 읽으려면 마침표(.)를 이용하면 된다. struct User { username: String, email: String, sign_in_count: u64, acti..
소유권이란? 러스트는 다른 언어들과 달리 가비지 콜렉터를 사용하거나, 명시적 메모리 할당 해제 하는 방법으로 메모리를 관리하지 않는다. 소유권 규칙 러스트가 다루는 각각의 값은 소유자(owner)라고 부르는 변수를 가지고 있다. 특정 시점에 값의 소유자는 단 하나뿐이다. 소유자가 범위를 벗어나면 그 값은 제거된다. 변수의 범위 변수의 범위(scope)는 선언된 지점 부터 현재의 범위를 벗어나기 전까지 유효하다. 범위와 변수의 유효성 사이의 관계는 다른 프로그래밍 언어와 크게 다르지 않다. { //변수 s를 아직 선언하지 않았다 let s = "hello"; //변수 s는 이 지점부터 유효 //변수 s를 이용해 필요한 동작을 수행 } //범위를 벗어나므로 변수 s는 이제 유효하지 않음 String 타입 S..
1. 시작하며 GitHub 를 사용하여 프로젝트를 진행한다면 커밋 내역을 Pull Request 하고 팀원들과 코드 리뷰하는 시간을 가지게 된다. 덕분에 코드를 merge 하기 전에 변경 사항에 대해 검토하고 팀원들과 의견을 나눌 수 있다. 이 때 pull request template을 작성해두면 Pull Request 마다 자동으로 템플릿을 내용을 PR body에서 확인 할 수 있다. 2. 왜 pull request template이 필요한가 PR의 description 형식을 표준화 할 수 있다. 잘 작성한 PR 은 리뷰어로 하여금 코드 이해를 돕고 시간을 절약 할 수 있게 한다. PR을 요청한 개발자 역시 PR template을 작성하면서 한번 더 코드를 체크 할 수 있다. 3. GitHub pu..
1. 시작하며 관련글: AWS Solutions Architect Associate (SAA) 자격증 취득 후기 AWS Certified Cloud Practitioner (CLF-C01) 자격증을 취득하여 합격 후기를 남겨 두고자 한다. 공부 기간 : 약 2주, 하루 1~3시간 공부 방법 : 동영상 시청 4일, 그 외는 한글 백서 및 덤프 문제 풀기, 오답 노트 작성 공부 내용은 [AWS] AWS Certified Cloud Practitioner 공부 정리 에 포스팅 2. 응시 계기 AWS Certified Cloud Practitioner 은 AWS 자격증 중에 가장 기본인 자격증이다. 따라서 가장 기초적인 자격증 부터 따는 것이 좋을 것 같아 시작하게 되었다. 그리고 합격하면 다음 시험을 위한 5..
AWS Certified Cloud Practitioner (CLF-C01) Cheat sheet 자격증 준비를 위해 AWS Cloud Practitioner Essentials 강의 일부, 백서, 덤프 보기 학습 노트 내용 정리 Amazon Web Service Shared responsibility model AWS Support AWS Well-Architected Amazon Web Service 컴퓨팅 Amazon EC2 거의 모든 워크로드에 적합한 안전하고 크기 조정 가능한 컴퓨팅 용량 Auto Scaling 애플리케이션 가용성을 유지하는 데 도움이 되고 정의한 조건에 따라 Amazon EC2 용량을 자동으로 확장하거나 축소하는 서비스 Amazon Elastic Container Service..
변수와 가변성 기본적으로 변수는 변경이 불가능 하다. 하지만 필요하다면 변수를 변경할 수 있게 선언할 수도 있다. 확인을 위해 variables 라는 프로젝트를 만들자 fn main() { let x = 5; println!("x의 값: {}", x); x = 6; println!("x의 값: {}", x); } 위 코드 작성후 빌드를 실행하면 에러가 발생한다. 에러 메시지를 읽어보면 불변 변수 x에 값을 두번 할당했기 때문이라고 나온다. 변수 이름 앞에 mut 키워드를 추가하면 가변 변수를 선언할 수 있다. fn main() { let mut x = 5; println!("x의 값: {}", x); x = 6; println!("x의 값: {}", x); } 이후 프로그램을 다시 실행하면 다음 결과가 ..
1~100사이의 난수를 생성해서 입력을 받아 입력한 값이 더 큰지 작은지 알려주어 숫자를 맞추는 게임을 구현해보자. 새 프로젝트 셋업하기 책에서는 cargo new 명령어를 통해 새프로젝트를 생성하라고 되어있지만 나는 IntelliJ를 통해 guessing_game 프로젝트를 생성하였다. 플레이어가 예측한 값 처리하기 먼저 플레이어에게 예측한 값을 묻는 코드를 작성해보자 use std::io; fn main() { println!("숫자를 맞혀봅시다!"); println!("정답이라고 생각하는 숫자를 입력하세요."); let mut guess = String::new(); io::stdin().read_line(&mut guess) .expect("입력한 값을 읽지 못했습니다."); println!("입..
시작하며 Rust 언어를 공부하기위해 한국어로 번역된 유일한 책인 이 책을 구매하였다. 그리고 지인의 추천으로 IntelliJ에서 Rust를 사용하고자 한다. 설치 러스트 설치 책을따라 https://www.rust-lang.org/tools/install 주소에 들어가서 rustup을 이용해 러스트를 설치하였다. 설치후 rustc --version 명령어를 통해 버전을 확인하였다. IntelliJ 설치 우선 IntelliJ 부터 설치하자. https://www.jetbrains.com/idea/ 해당 주소에서 커뮤니티 버전을 다운받아 설치하였다. 이제 rust 플러그인을 설치해보자. 플러그인 탭에서 rust를 검색하여 rust 플러그인을 설치하였다. rust 플러그인을 설치하기위해서는 toml 플러그인..
이 책을 고른 이유 언리얼 엔진 관련하여 C++로 개발관련된 책은 얼마 없었다. 그 중에서도 이 책은 책제목에 정석 이라는 단어를 썼다는 점에서 높은 신뢰감을 얻을 수 있었고, 바로 구매하여 책을 따라하기 시작하였다. 느낀 점 챕터 1부터 간단한 게임을 차례대로 만들어보며 구현해 나가는 점에서 성취감과 보람을 느낄 수 있었고, 에디터의 설정이라든지 결과 화면등을 스크린샷으로 보여주고 있어 따라하는데 큰 문제가 없었다. 게임모드, 게임 캐릭터, 모델링, 애니메이션, 월드, 레벨이동, UI 처리 등 게임에서 다뤄야할 필수적인 부분들을 차례대로 설명해주고 있어, 전반적인 기능을 훑어보게되어 좋았다.기술 서적들을 읽으면서 필요한 부분만 읽고 마는 경우가 있었는데, 이 책은 처음부터 끝까지 진행해야만 끝낼 수 있..