use std::time::Instant;fn main() { let start_time = Instant::now(); // 측정 시작 ... your code ... let end_time = Instant::now(); // 측정 종료 /* 아래 2개 값 모두 같은 값 assert_eq!((end_time-start_time), end_time.duration_since(start_time)); */ let elasped_time = end_time - start_time; let elapsed_time = end_time.duration_since(start_time); println!("Elapsed : {:?}", elapsed..
개요소프트웨어 공급망(Supply Chain)은 SW 개발 단계에서 사용자에게 도달하기 전까지를 일컫는다.개발 환경, 소스 코드 저장소, 소프트웨어 배포 플랫폼까지 포함된다. 위와 같이 SW 개발 프로세스를 탈취하여 해당 SW의 사용자에게 영향을 끼치는 모든 경우를 공급망 공격이라고 부른다. 공급망 단계공격 유형공격 사례개발서버서버 침투 및 악성코드 삽입SolarWinds(20~21), Codecov(21), Kaseya(21)프로젝트 파일 대상 악성코드 배포Octopus Scanner(20), rest-client(19)악성 IDE 배포Xcode Repackaging(15)저장소오펀 패키치 탈취(Orphan Package Takeover)Arch User Repository acroread(18)계정 ..
Summary1. --release 옵션을 주어 릴리즈 모드로 컴파일2. 배포전에 LTO 활성화 및 바이너리 strip 옵션3. 메모리 집약적 프로그램이 아닐 경우 system allocator 사용4. 훨씬 큰 프로그램을 사용할 경우 UPX / 압축 사용5. 그외 더 작게 만드는 방법은 여러가지 방법을 사용 Optimization Level Table0no optimizations1basic optimizations2some optimizations3all optimizations"s"optimize for binary size"z"optimize for binary size, but also turn off loop vectorization.https://doc.rust-lang.org/cargo/..
출력 매크로 종류format!작성한 포맷팅대로 string 생성print!format! + 콘솔로 출력 (io::stdout)println!print!에서 줄바꿈 추가eprint!format! + 표준에러로 출력 (io::stderr)eprintln!eprint!에서 줄바꿈 추가 Positional parameters (arguments by position) println!("{} 일", 1); 1 일 (i32) println!("{} 일", 2i64); 2 일 (i64) println!("내 생일은 {}월 {}일", 6, 9); 내 생일은 6월 9일 (i32)Named parametersprintln!("{0}에는 은방울님이 계신다면 {1}에는 달씨님이 계신다.", "고대", ..