μ΄μ μ μ€λ§νΈ ν¬μΈν° Boxλ₯Ό μκ°νλ©΄μ μ κΉ μλ¦¬μΌ ν€λ₯Ό μμ±νλ μμ λ₯Ό λ§λ€μμ΅λλ€. νλ‘κ·Έλ¨ μ¬μ©μκ° μ¬μ©μ IDμ μ ν IDλ₯Ό μ λ ₯νλ©΄, νλ‘κ·Έλ¨μ μ λ ₯λ°μ λ λ¬Έμμ΄μ ν©μ³μ νλμ μλ¦¬μΌ ν€λ₯Ό μμ±νλ μμ μμ΅λλ€. GenSerialDataλΌλ νΈλ μ΄νΈλ₯Ό λ§λ€μ΄μ μ¬μ©μ IDμ μ ν IDλ₯Ό μν κ³΅ν΅ μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄μ μ¬μ©μ μ λ ₯μ λ°κ³ μ리μΌμ μμ±νλλ° μ¬μ©νμμ΅λλ€.
νΈλ μ΄νΈλ₯Ό λ§λ€λ©΄ κ³΅ν΅ μΈν°νμ΄μ€λ₯Ό λ§λ€ μ μκ³ , νΈλ μ΄νΈ κ°μ²΄λ₯Ό λ§λ€μ΄μ νΉμ νΈλ μ΄νΈλ₯Ό ꡬνν κ°μ²΄λ€μ νκΊΌλ²μ κ΄λ¦¬ν μ μμ΅λλ€. μ΄λ κ² νΈλ μ΄νΈμ κΈ°λ₯μ λν μ΄ν΄λ₯Ό νλ€κ³ ν΄μ κ³§λ°λ‘ νΈλ μ΄νΈλ₯Ό μ μ©ν΄μ νλ‘κ·Έλ¨μ λ§λ€κΈ°λ μ½μ§ μμ΅λλ€. κ·Έλμ μ΄μ©λΌλ κ±΄κ° μκ°μ΄ λ€ μλ μμ΅λλ€. μ΄λ²μ₯μμλ μλ¦¬μΌ ν€λ₯Ό μμ±νλ νλ‘κ·Έλ¨μ μμ£Ό λ¨μν ννλΆν° μ μ μ μ§λ³΄μκ° νΈλ¦¬ν μ€μ μ νμ κ°κΉμ΄ ννλ‘ λ°μ μμΌλκ°λ©΄μ νΈλ μ΄νΈλ₯Ό μΈμ μ΄λ»κ² μ¬μ©ν΄μΌνκ³ , κ·Έλμ μ νΈλ μ΄νΈκ° μ€μνμ§μ λν΄μ μ΄μΌκΈ°λ₯Ό ν΄λ³΄λ €κ³ ν©λλ€.
μ°μ κ°μ₯ λ¨μνκ² μμν΄λ³΄κ² μ΅λλ€. λ§μ½μ νμ₯λμ΄λ λ€λ₯Έ λλ£λ‘λΆν° μλ¦¬μΌ ν€λ₯Ό λ§λλ νλ‘κ·Έλ¨μ λ§λ€μ΄λ¬λΌκ³ λΆνμ λ°μΌλ©΄ μ΄λ»κ² μμνμ ¨κ² λμ? μ λΌλ©΄ μ΄λ€ μ λ ₯ λ°μ΄ν°λ₯Ό κ°μ§κ³ μλ¦¬μΌ ν€λ₯Ό λ§λ€λ©΄ λλμ§ λ¬Όμ΄λ³΄κ² μ΅λλ€. μλ₯Ό λ€μ΄ κ³ κ°IDμ μ νIDκ° μλ€λ λ§μ λ€μΌλ©΄ μλ§ λ€μκ³Ό κ°μ΄ λ§λ€μμκ²μ λλ€.
use std::io::{stdin, stdout, Write};
fn get_user_input() -> String {
let mut s = String::new();
let _ = stdout().flush();
stdin()
.read_line(&mut s)
.expect("Did not enter a correct string");
if let Some('\n') = s.chars().next_back() {
s.pop();
}
if let Some('\r') = s.chars().next_back() {
s.pop();
}
s
}
fn main() {
println!("Please input 4-digits Customer ID: ");
let customerid = Some(get_user_input());
println!("Please input 8-digits Product ID: ");
let productid = Some(get_user_input());
let plain_serial = format!("{}{}", customerid.unwrap(), productid.unwrap());
println!("Plain serial: {}", plain_serial); // μνΈν μ μλ¦¬μΌ μΆλ ₯
let verify_customerid = &plain_serial[0..4];
let verify_productid = &plain_serial[4..12];
println!("Verify Customer ID: {}", verify_customerid);
println!("Verify Product ID: {}", verify_productid);
}$ cargo run --bin serial_project_step1
Compiling my-rust-book v0.1.0 (/home/gkim/study/quick-guide-rust-programming)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.33s
Running `target/debug/serial_project_step1`
Please input 4-digits Customer ID:
1234
Please input 8-digits Product ID:
qwerasdf
Plain serial: 1234qwerasdf
Verify Customer ID: 1234
Verify Product ID: qwerasdfμ κ° λ§μ½ κ³ κ°IDμ μ νIDλΌλκ² μ¬μ€ μ²μ κ·Έλ°κ² μλ€λκ±Έ μμμλμλ μ΄λ»κ² μ²λ¦¬ν΄μΌλ μ§ λͺ¨λ₯Ό μλ μμ΅λλ€. μ΄λμμ κ° μ΄μ€νκ²λλ§ λ°°μ΄λ°λ‘ μμ λΆμλ λ§μΌν νμ κ°μ κ³ κ°IDμ μ νIDκ° λ¬΄μμΈμ§λ₯Ό μ‘°μ¬νλ©΄μ μꡬμ¬νμ μμ§νμ κ²μ λλ€. λ§μ½ μλ₯Ό λ€μ΄μ κ°κ° 4κΈμ, 8κΈμμ λ¬Έμμ μ«μλ‘λ λ°μ΄ν°λΌλ κ²μ μμμΌλ©΄ μμ κ°μ΄ νλ‘κ·Έλ¨ μ¬μ©μμκ² 4κ°μ λ¬Έμλ‘ λ κ³ κ° λ²νΈμ 8κ°μ λ¬Έμλ‘ λ μ ν λ²νΈλ₯Ό μ λ ₯λ°λ νλ‘κ·Έλ¨μ λ§λ€μμ κ²μ λλ€.
μ΄ νλ‘κ·Έλ¨μ λ¨μν λκ°μ μ λ ₯ λ¬Έμμ΄μ νλλ‘ λΆμ¬μ μλ¦¬μΌ λ²νΈλ₯Ό λ§λ€μ΄μ 보μ¬μ€λλ€. μ΄ μμ λ μ¬μ€μ μλ¦¬μΌ ν€λ₯Ό μμ±νλ κΈ°λ₯μ μ ν μκ³ λ¨μν 2κ°μ§ μ λ ₯ λ°μ΄ν°λ₯Ό λ°κΈ° μν μμ μμ΅λλ€λ§ μ΄μ¨λ λλ΅ μ΄λ κ² μμνμ κ²μ λλ€. μ΄μ λλ‘ λ§λ€μ΄μ μ λμνλ κ²μ νμΈνκ³ , μ΄ νλ‘κ·Έλ¨μ μ¬μ©ν μ¬μ©μμκ² μ΄μ λλ‘ λμνλ νλ‘κ·Έλ¨μ΄λ©΄ μ΄λ λκ³ λ¬Όμ΄λ³΄κ³ , λλ¦ μꡬμ¬νλ±μ μμ§νλ €λ μλλ₯Ό νμ κ²μ λλ€.
νλ‘κ·Έλ¨ μ¬μ©μκ° μ΄μ λλ©΄ μΈ μ μκ² λ€λ νΌλλ°±κ³Ό ν¨κ» μνΈνλ§ μΆκ°ν΄λ¬λΌκ³ 리뷰λ₯Ό ν΄μ€¬λ€κ³ μκ°ν΄λ³΄κ² μ΅λλ€. κ·Έλ°λ° μ°λ¦¬κ° μΌμ νλ€λ³΄λ©΄ νμ κ²ͺλ μΌμ΄ μμ΅λλ€. λλ£μκ² μꡬμ¬νμ λ°κ³ , 리뷰κΉμ§ λ°κ³ κ°λ°μ νλ€λ³΄λ©΄ μ΄λ€ μΌμ΄ λ²μ΄μ§λμ? νμ, μ μ λ§ λ§ κ·Έλλ‘ νμ μꡬμ¬νμ λ³ν©λλ€. 보ν΅μ λ³ν λΏ μλλΌ λμ΄λκΈ°κΉμ§ ν©λλ€. μμ μ μ΄μ λλ©΄ μΆ©λΆνλ€κ³ 리뷰λ₯Ό ν΄μ£Όμ§ μμλκ³ νμμ°μ ν΄λ΄λ κ±°μ νμ μꡬμ¬νμ λ³νκ³ , λ³νλ κ²λ§μ΄ μλλΌ μλ‘μ΄ μꡬμ¬νμ΄ λ€μ΄μ€κ³ , κ²°κ΅ νλ‘κ·Έλ¨μ 볡μ‘ν΄μ§λλ€. μλ§ μ‘°κΈμ΄λΌλ κ·Έλ° κ²½νμ ν΄λ³΄μ λΆμ΄λΌλ©΄ μ§κΈ μ νλ‘κ·Έλ¨μ μ ν μꡬμ¬ν λ³νλ₯Ό μμ©ν μ μλ€λ κ²μ μ΄ν΄νμ€ κ²μ λλ€. μμ§ κ·Έλ° κ²½νμ ν΄λ³΄μ§ λͺ»νμ , μ΄μ λ§ μννΈμ¨μ΄ κ°λ°μ μ λ¬Ένμ λΆμ΄λΌλ©΄ 미리 λ§μμ μ€λΉλ₯Ό νμκΈΈ λΆνλ립λλ€. μꡬμ¬νμ μ λ κ³ μ λ μ μκ³ , μννΈμ¨μ΄ κ°λ° μ€λ§μ΄ μλλΌ λ€ λλκ³ μΆμλ μ΄νμλ λ λ°λμ λ³ννκ³ , λμ΄λλ€λ κ²μ κΈ°μ΅ν΄μ£ΌμΈμ.
-
νΉμ μλ¦¬μΌ λ²νΈλ₯Ό μμ±νλ νλ‘κ·Έλ¨μ λ§λ€μ΄λ³Έ μ μ΄ μλ€λ©΄ νλ‘κ·Έλ¨μ λμμΈν΄λ³΄μΈμ. μ΄λ ν μꡬμ¬νμ΄ μκ³ , μ΄λ€ μ€κ³λ‘ νλ‘κ·Έλ¨μ λ§λ€ μ μμμ§ μκ°ν΄λ³΄μΈμ.
-
리λ μ€ μ»€λμ κ°μ νμΌ μμ€ν (Virtual Filesystems)μ΄ μ΄λ»κ² μ¬λ¬κ°μ νμΌμμ€ν (FAT32, EXT4, Btrfs)λ±μ λμμ μ§μν μ μλμ§ μκ°ν΄λ³΄μ μ μ΄ μλμ? κ΄λ ¨ μλ£λ₯Ό μ°Ύμμ μ½μ΄λ³΄μΈμ.
-
리λ μ€ μ»€λμ λͺ¨λλ¦¬ν± μ»€λμ λλ€. 컀λμ΄λΌλ νλ‘κ·Έλ¨μ νλμ λ°μ΄λ리 νμΌμ λλ€. κ·Έλ°λ° μ΄λ»κ² λμ μΌλ‘ νλμ¨μ΄ λλΌμ΄λ²λ₯Ό μ€μΉνκ±°λ μμ ν μ μμκΉμ? κ΄λ ¨ μλ£λ₯Ό μ°Ύμμ μ½μ΄λ³΄μΈμ. μΆνμ κ°μμ νμ μ μ μ©ν μ μλ μμ΄λμ΄λ₯Ό μ»μ μ μμμ§λ λͺ¨λ¦ λλ€.