목록분류 전체보기 (79)
나만의 공부 노트

CI가 뭐지? — Continuous IntegrationCD는 뭐지? — Continuous Delivery, Continuous Deployment CI/CD 플랫폼CI/CD 플랫폼은 엄청나게 많습니다. 이 중에 제가 사용해본 플랫폼은 Jenkins, Github Action, CircleCI가 있습니다.JenkinsCircleCIGithub Action... 플랫폼 마다 인터페이스가 조금씩 다르고 가격 정책도 달라서 선택하기 전에 고민이 필요합니다. 플랫폼을 관리하는 방식에서 크게 다른 점이 있다면 On-premise 방식과 Cloud 방식이 있습니다.On-premiseOn-premise는 직접 설치해서 관리하는 방식입니다. 대표적으로 On-premise 방식에서 사용되는 플랫폼은 Jenkins ..

Package.swift에 대해 제대로 이해해보자 사용하는 방법은 어렵지 않으니 패스..생성하는 법부터 바로 알아보자참고 사이트 : https://tech.kakao.com/posts/521Package 생성하기 File->New->Package(더 쉽게는 왼쪽 하단에 + 버튼으로 Package 추가) 또는 터미널에서 'swift package init'를 입력위 사진을 보니 Package가 xcodeproj와 거의 대응되는 용도로 사용되는 듯함 Package 생성 템플릿을 보니 보통, library나 command line/excutable을 만드는데에만 사용하는 것 같다. xcodeproj는 생성할 수 있는 템플릿이 다양하다 -> Package는 xcodeproj보다 단순화하여 library만을 다..
spawn으로 새로운 스레드 생성하기use std::thread;use std::time::Duration;fn main() { thread::spawn(|| { for i in 1..10 { println!("hi number {} from the spawned thread!", i); thread::sleep(Duration::from_millis(1)); } }); for i in 1..5 { println!("hi number {} from the main thread!", i); thread::sleep(Duration::from_millis(1)); }} move 키워드를 사용하여 사..
Box 박스는 스택 대신 힙에 데이터를 저장한다는 점 외에는, 성능적인 오버헤드가 없습니다. 하지만 여러 가지의 추가 기능 또한 가지고 있지 않습니다. 여러분은 이를 아래와 같은 상황에서 가장 자주 쓰게 될 것입니다:컴파일 타임에 크기를 알 수 없는 타입을 갖고 있고, 정확한 사이즈를 알 필요가 있는 맥락 안에서 해당 타입의 값을 이용하고 싶을 때커다란 데이터를 가지고 있고 소유권을 옮기고 싶지만 그렇게 했을 때 데이터가 복사되지 않을 것이라고 보장하기를 원할 때어떤 값을 소유하고 이 값의 구체화된 타입을 알고 있기보다는 특정 트레잇을 구현한 타입이라는 점만 신경 쓰고 싶을 때역참조 강제가 가변성과 상호작용 하는 법불변 참조자에 대한 *를 오버 라이딩하기 위해 Deref 트레잇을 이용하는 방법과 비슷하게..
일급 객체(정의 까먹어서 다시 씀..)변수에 할당(assignment)할 수 있다.다른 함수를 인자(argument)로 전달 받는다.다른 함수의 결과로서 리턴될 수 있다. 클로저 할당 방식let expensive_closure = |num| { println!("calculating slowly..."); thread::sleep(Duration::from_secs(2)); num}; 타입 어노테이션 생략 가능(마지막처럼 표현식 1개로 구성된 경우, 중괄호도 생략 가능)fn add_one_v1 (x: u32) -> u32 { x + 1 }let add_one_v2 = |x: u32| -> u32 { x + 1 };let add_one_v3 = |x| { x + ..
라이프타임의 주목적은 댕글링 참조자(dangling reference)를 방지하는 것 매우 어렵.. 여러번 보자fn longest(x: &str, y: &str) -> &str { if x.len() > y.len() { x } else { y }} error[E0106]: missing lifetime specifier |1 | fn longest(x: &str, y: &str) -> &str { | ^ expected lifetime parameter | = help: this function's return type contains a borrowed value, but the s..
모듈 파일 시스템의 규칙파일에 관한 모듈의 규칙을 정리해봅시다:만일 foo라는 이름의 모듈이 서브모듈을 가지고 있지 않다면, foo.rs라는 이름의 파일 내에 foo에 대한 선언을 집어넣어야 합니다.만일 foo가 서브모듈을 가지고 있다면, foo/mod.rs라는 이름의 파일에 foo에 대한 선언을 집어넣어야 합니다.이 규칙들은 재귀적으로 적용되므로, foo라는 이름의 모듈이 bar라는 이름의 서브모듈을 갖고 있고 `bar는 서브모듈이 없다면, 여러분의 src 디렉토리 안에는 아래와 같은 파일들이 있어야 합니다: ├── foo│ ├── bar.rs (contains the declarations in `foo::bar`)│ └── mod.rs (contains the declarations in `..
소유권 규칙러스트의 각각의 값은 해당값의 오너(owner)라고 불리우는 변수를 갖고 있다.한번에 딱 하나의 오너만 존재할 수 있다.오너가 스코프 밖으로 벗어나는 때, 값은 버려진다(dropped).let s1 = String::from("hello");let s2 = s1;println!("{}, world!", s1);(Rust가 선택지에 없네..) 이 때, s1은 사용 불가(컴파일 에러).c++의 move semantic과 유사하나, 강력한 컴파일 에러를 통해 안전한 사용 보장 error[E0382]: use of moved value: `s1` --> src/main.rs:4:27 |3 | let s2 = s1; | -- value moved here4 | print..
https://rinthel.github.io/rust-lang-book-ko/

TEXTURE WRAPPING [0, 1] 범위를 벗어난 텍스처 좌표값을 처리하는 옵션 TEXTURE FILTERING Filtering option 텍스처로 사용할 이미지의 크기가 화면보다 크거나 작을 경우 처리하는 옵션 GL_NEAREST: 텍스처 좌표값에 가장 가까운 픽셀값을 사용 GL_LINEAR: 텍스처 좌표값 주변 4개의 픽셀값을 보간하여 사용 GL_NEAREST glGenTextures(1, &m_texture); glBindTexture(GL_TEXTURE_2D, m_texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILT..