프로그래밍

    [Rust]프로젝트 모듈 관리

    패키지와 크레이트크레이트(crate)가장 작은 코드 단위이다. 바이너리 크레이트는 실행파일로 컴파일할 수 있는 프로그램이다. main 함수를 포함해야 한다.라이브러리 크레이트는 여러 프로젝트에서 공용될 의도로 만들어진 기능들이 정의되어 있는 크레이트이다. 일반적으로 ‘크레이트’라고 하면 라이브러리 크레이트를 말한다. 즉, ‘크레이트’라는 개념은 다른 언어에서의 ‘라이브러리’라고 볼 수 있다.크레이트 루트 (crate root)는 러스트 컴파일러가 컴파일을 시작하는 소스 파일이고, 크레이트의 루트 모듈을 구성한다.패키지(package)패키지는 여러 크레이트의 번들이다. 크레이트를 빌드하는 법이 설명된 Cargo.toml 파일을 포함한다. 패키지에는 여러 바이너리 크레이트가 포함될 수 있고, 라이브러리 크레..

    [Rust] 열거형

    열거형 정의열거형은 하나의 타입이 가질 수 있는 배리언트(variant)를 열거해 타입을 정의할 수 있도록 한다. 어떤 값이 여러 개의 가능한 값의 집합 중 하나라는 것을 나타낸다.IP주소는 ipv4, ipv6 두 가지 표준으로만 사용되므로, 열거형으로 모든 배리언트를 열거할 수 있다.enum IpAddrKind { V4, V6,}let four = IpAddrKind::V4;let six = IpAddrKind::V6;열거형을 정의할 때 식별자로 네임스페이스가 만들어지므로 각 배리언트 앞에 :: 을 붙여야 한다.enum IpAddr { V4(String), V6(String),}let home = IpAddr::V4(String::from("127.0.0.1"));let loopb..

    [Rust] 구조체

    구조체 정의와 인스턴스구조체를 정의하려면 struct 키워드와 구조체에 지어줄 이름을 입력한다.필드에는 각 구성 요소의 이름과 타입을 정의한다. struct User { active: bool, username: String, email: String, sign_in_count: u64,}fn main() { let mut user1 = User { active: true, username: String::from("someusername123"), email: String::from("someone@example.com"), sign_in_count: 1, }; user1.email = String::from("a..

    [Rust] 소유권

    소유권러스트가 메모리를 관리하는 방식이다.각각의 값은 소유자(owner)가 정해져 있다.한 값의 소유자는 동시에 여럿 존재할 수 없다.소유자가 스코프 밖으로 벗어날 때 값은 버려진다(dropped).String 타입쌍따옴표로 감싸 만든 문자열 리터럴은 immutable이라 변경할 수 없다. 따라서 String 타입이 존재한다. 힙에 할당된 데이터로 컴파일 타임에 크기를 알 수 없는 텍스트도 저장할 수 있다.let s = String::from("hello");위 코드는 String 타입에 있는 from 함수를 네임스페이스 연산자(:: )를 사용해 지정했다. 힙에 메모리를 할당했으므로 변경할 수 있다. 메모리를 할당했으면 해제도 해야 한다. 러스트에서는 변수가 소속된 스코프를 벗어나는 순간 메모리가 해제된..

    [Rust] 변수, 함수, 조건문, 반복문

    변수와 가변성러스트에서 변수는 기본적으로 immutable이다. 코드를 읽고 쓸 때 값이 어디서 바뀔지 추적할 필요가 없도록 하기 위함이다. 변수를 가변으로 만들려면 앞에 mut 을 붙이면 된다.fn main() { let mut x = 5; println!("The value of x is: {x}"); x = 6; println!("The value of x is: {x}");상수상수는 항상 불변이므로 mut 를 사용할 수 없다. let 대신 const를 사용한다. 관례적으로 단어 사이에 밑줄을 사용하고 모든 글자를 대문자로 쓴다. const HOURS_IN_SECONDS: u32 = 60 * 60;섀도잉새 변수를 이전 변수명과 같은 이름으로 선언할 수 있다. 이 때 첫 번째 ..

    「웹해킹을 위한 자바스크립트(Javascript) 훑어보기」- 7. DOM

    본 글은 Udemy(유데미)에서 제공하는 Colt Steele님의 「The Web Developer 부트캠프 2023」 강의를 수강하며 배운 내용을 바탕으로 작성했습니다. 웹 해킹 및 보안에 쓰이는 자바스크립트 코드를 보고 이해할 수 있는 수준에 다다르기 위해 전반적인 내용을 가볍게 훑어보는 기획입니다. DOM(Document Object Model) DOM은 문서 객체 모델의 약자로, 문서인 웹페이지를 자바스크립트 등의 프로그래밍 언어로 다룰 수 있도록 객체화한 것입니다. 브라우저가 자동으로 생성하며, 웹페이지를 구성하는 javascript 객체의 집합이라 할 수 있습니다. 한 마디로, javascript를 이용해 웹 페이지를 다룰 수 있게 됩니다. DOM을 이용하는 메서드를 알아봅시다. 요소 선택 g..

    「웹해킹을 위한 자바스크립트(Javascript) 훑어보기」- 6. 전개(spread)와 분해

    본 글은 Udemy(유데미)에서 제공하는 Colt Steele님의 「The Web Developer 부트캠프 2023」 강의를 수강하며 배운 내용을 바탕으로 작성했습니다. 웹 해킹 및 보안에 쓰이는 자바스크립트 코드를 보고 이해할 수 있는 수준에 다다르기 위해 전반적인 내용을 가볍게 훑어보는 기획입니다. spread spread는 전개 구문으로, 내응을 하나하나 분리합니다. 함수 호출 시 const nums = [13,4,5,21,3] Math.max(nums) //NaN Math.max(...nums) //21 위 코드에서 Math.max() 함수는 개별적인 숫자 인수를 받아 최댓값을 반환합니다. 그냥 nums 배열을 넘겨주게 되면 배열 자체를 숫자로 변환할 수 없으므로 NaN(Not a Number)..

    「웹해킹을 위한 자바스크립트(Javascript) 훑어보기」- 5. 콜백(callback)

    본 글은 Udemy(유데미)에서 제공하는 Colt Steele님의 「The Web Developer 부트캠프 2023」 강의를 수강하며 배운 내용을 바탕으로 작성했습니다. 웹 해킹 및 보안에 쓰이는 자바스크립트 코드를 보고 이해할 수 있는 수준에 다다르기 위해 전반적인 내용을 가볍게 훑어보는 기획입니다. 콜백 함수(callback function) 콜백 함수는 다른 함수의 인자로 이용되는 함수입니다. 콜백 함수를 이용하는 메서드를 살펴보며 이해해 봅시다. forEach forEach는 주어진 함수를 배열 요소 각각에 대해 실행합니다. const numbers = [1,2,3,4,5] /* function print(element) { consloe.log(element) } numbers.forEach(..