Rust 20

Rust 강좌 5 - 안전하고 효율적인 Hyper로 HTTP 요청 처리하기

Rust 강좌 5 - 안전하고 효율적인 Hyper로 HTTP 요청 처리하기안녕하세요! 오늘은 Rust의 대표적인 HTTP 라이브러리인 hyper를 알아볼 텐데요. Rust의 HTTP 라이브러리 생태계는 1.0 이전까지는 변화가 많았지만, 이제는 hyper가 많은 Rust 개발자들의 사랑을 받는 대표 라이브러리로 자리 잡았습니다. 이 장에서는 hyper를 클라이언트로 사용하는 방법에 집중해 볼까 합니다. 이 라이브러리는 서버 구현도 포함하고 있지만, 대부분의 개발자들은 서버를 직접 만드는 것보다는, 이미 만들어진 서버의 API를 소비하는 경우가 많습니다. 그러면, hyper가 어떻게 우리에게 도움을 줄 수 있을까요?1. 기본적인 요청 보내기우선, Cargo.toml 파일에 의존성을 추가해 보겠습니다.[de..

Rust 2024.09.19

Rust 강좌 4 - Rust에서 명령줄 인자 파싱을 쉽게! docopt 사용법 완벽 가이드

Rust 강좌 4 - Rust에서 명령줄 인자 파싱을 쉽게! docopt 사용법 완벽 가이드Relevancy(유효성): 1.9 stable (매크로는 nightly에서만 사용 가능) 명령줄 프로그램을 작성할 때 가장 귀찮은 작업 중 하나가 인자 파싱(argument parsing)인데요, 예를 들어 myprogram --config=myfile.conf --verbose -o output.txt 같은 명령을 입력했을 때, 이를 어떻게 해석할지 결정하는 작업입니다. 인자 중에는 짧은 버전과 긴 버전이 있고, 일부는 선택적이며, 또 다른 일부는 위치 인자일 수도 있는데요. 인자 파싱을 위한 라이브러리는 굉장히 많습니다. 그중 일부는 각 언어의 표준 라이브러리에도 포함되어 있죠. 러스트(Rust)의 경우에는 ..

Rust 2024.09.14

Rust 강좌 3. CSV 파일 처리하기: 쉽고 간편한 방법

Rust로 CSV 파일 처리하기: 쉽고 간편한 방법안녕하세요! 오늘은 Rust에서 CSV 파일을 처리하는 방법에 대해 알아보겠습니다. 많은 프로그래머들이 경력 중에 CSV 형식을 접해본 경험이 있을 텐데요. 재무 데이터 분석이나 웹 애플리케이션의 사용자 활동 기록을 다운로드할 수 있게 하려면 CSV 형식은 매우 유용한 방법입니다. 하지만 CSV는 표준화되어 있지 않기 때문에 다양한 구현에서 여러 가지 특성이 생길 수 있습니다. CSV 파일 쓰기CSV 파일을 쓰는 것은 생각보다 간단할 것 같은데요. 먼저, Rust에서 CSV 파일을 작성하는 방법을 살펴보겠습니다. 예를 들어, 아래와 같은 데이터를 CSV 파일로 저장해보겠습니다.CSV 파일 작성 예제use csv::Writer;fn main() { l..

Rust 2024.09.07

Rust의 메모리 관리와 GC 언어 비교

안녕하세요! 오늘은 프로그래밍 언어에서 중요한 개념 중 하나인 메모리 관리에 대해 이야기해보려고 합니다. 특히, Rust와 GC(가비지 컬렉션) 기능이 있는 언어를 비교해보면서, 어떻게 메모리가 관리되는지 알아보겠습니다. 프로그래밍을 하다 보면, 우리가 작성한 코드가 컴퓨터 메모리를 어떻게 사용하는지 이해하는 것이 중요합니다. 왜냐하면 메모리 관리가 잘못되면 프로그램이 느려지거나, 심지어 크래시가 발생할 수 있기 때문이죠. 자, 그럼 Rust가 메모리 관리를 어떻게 하는지, 그리고 Java나 Python 같은 GC 기능이 있는 언어와는 어떤 차이가 있는지 살펴볼까요? Rust의 메모리 관리: 소유권 시스템Rust는 소유권 시스템(ownership system)이라는 독특한 메모리 관리 방식을 사용합니다...

Rust 2024.08.08

Rust 강좌 2. 프라임 - 소수와 친해지기

새로운 프로그래밍 언어를 배우기 시작할 때, 저는 항상 프로젝트 오일러 문제에 대한 여러 가지 해결책을 코드로 작성하는 것을 좋아합니다.  이 문제들은 수학 중심적이어서 일반적인 프로그래밍 입문으로는 최선의 선택은 아닐 수 있지만, 시작하기에는 좋습니다. 어쨌든, 문제를 푸는 것이 정말 재미있거든요! (...그리고 힘으로 푸는 것보다 빠르게 푸는 것이 훨씬 더 재미있죠.) 많은 프로젝트 오일러 문제는 어떤 식으로든 소수와 관련이 있습니다. n번째 소수를 찾거나, 효율적인 소인수분해를 하거나, 어떤 숫자가 소수인지 아닌지를 확인하는 등의 문제들이죠. 물론 이러한 수학적 절차를 직접 코드로 작성할 수도 있지만, 저는 게으른 편입니다. 그래서 기존에 만들어진 코드를 찾아 나섰고, 후온 윌슨(Huon Wilso..

Rust 2024.08.08

Rust 강좌 1. Cargo와 crates.io

안녕하세요? Rust를 공부하고 싶어 복습차원에서 글로 남겨 봅니다. Rust를 좋아하지만, 아직 깊이 파고들고 있는 중이거든요. 첫 번째는 패키지 관리에 대해 간략하게 다뤄보겠습니다. Python, Ruby 또는 Node.js를 사용해 보신 분들은 어느 정도 익숙하실 수도 있습니다. C++에는 전용 패키지 관리자가 없기 때문에, 이 부분이 C++ 개발자들에게 Rust를 매력적으로 만드는 요소 중 하나가 될 수 있을 것입니다. CargoCargo는 Rust의 패키지 관리자입니다. rustup.sh 스크립트를 사용하여 컴파일러를 설치하면 Cargo도 함께 설치됩니다. Cargo는 코드를 빌드하고 의존성을 관리합니다. 또한 새 프로젝트를 시작할 때 기본적인 프로젝트 구조를 생성해 줍니다.$ cargo new..

Rust 2024.08.05

Serde를 활용한 다양한 JSON 열거형 처리 방법 및 주의점

Serde를 활용한 다양한 JSON 열거형 처리 방법 및 주의점열거형의 4가지 표현Externally tagged (기본값)코드 예시실제 동작 예시Internally tagged코드 예시실제 동작 예시Adjacently tagged코드 예시실제 동작 예시Untagged코드 예시실제 동작 예시Untagged 형식의 주의점serde의 다른 기능과의 조합other공통 부분을 별도의 구조체로 추출하기마무리하며JSON은 REST API 호출, 데이터 저장, 다국어 연동 등에 자주 사용된다. 하지만 JSON은 언어에서 지원하는 표현이 정수, 부동 소수점 수, 문자열, 배열, 객체, 그리고 null 정도로만 제한되며, 이보다 복잡한 표현은 이러한 기본 기능을 조합하여 표현해야 한다. 기능을 조합하는 방법에는 여러 가..

Rust 2024.05.19

Rust 난수 생성 완벽 가이드 - rand 크레이트 사용법

Rust 난수 생성 완벽 가이드 - rand 크레이트 사용법의사 난수 생성기 (Pseudo Random Number Generator, PRNG)주기암호학적 의사 난수 생성기rand 크레이트 사용하기Cargo.toml 설정기본 사용법다양한 타입의 난수 생성범위 지정 난수 생성특정 분포에 따른 난수 생성rand_core 크레이트결론이번 글에서는 Rust에서 난수를 생성하는 방법을 쉽게 설명해 드리려고 합니다.난수는 여러 가지 용도로 사용되는데요, 예를 들어 게임에서 무작위 이벤트를 만들거나, 보안 키를 생성하는 등 다양한 분야에서 활용됩니다.그럼, 어떻게 Rust에서 난수를 생성할 수 있는지 알아볼까요?의사 난수 생성기 (Pseudo Random Number Generator, PRNG)먼저, 의사 난수 ..

Rust 2024.05.17

Rust 모듈 사용법 - 크레이트 생성부터 모듈 공개까지 완벽 가이드

Rust 모듈 사용법 - 크레이트 생성부터 모듈 공개까지 완벽 가이드샘플 프로젝트 생성모듈과 크레이트모듈 생성 방법1. 인라인 모듈2. 파일로 모듈 생성디렉터리로 서브 모듈 생성2015 버전 모듈 구조의 유산형제 모듈 간 접근 제어모듈의 경로 이름서브 모듈과 접근 제어모듈의 이름 변경크레이트 외부에서 모듈 사용외부 크레이트 이름 변경extern crate와 모듈 리네이밍모듈을 공개하지 않고 서브 모듈만 공개하기크레이트 내에서만 공개하기lib.rs와 main.rs요약참고 문서샘플 프로젝트 생성Rust 프로젝트를 시작하려면 cargo를 사용하여 새로운 프로젝트를 생성합니다.$ cargo new rust_modulescargo new 명령은 기본적으로 바이너리 프로젝트를 생성합니다. Cargo.toml 파일과..

Rust 2024.05.17

Rust로 좋은 CLI 프로그램 작성하기

커맨드 라인 인터페이스(CLI) 프로그램은 터미널에서 실행되므로, 그래픽 인터페이스가 없는 비GUI 프로그램입니다. 실제로 우리는 매일 ls, ps, top 등과 같은 CLI를 사용하고 있습니다. awesome-cli-apps에는 많은 훌륭한 CLI 프로그램들이 모여 있으니 참고하세요. 저는 러스트로 작성된 ls의 현대적 버전인 exa를 추천합니다.CLI 프로그램 형태CLI 프로그램은 다음과 같은 모습일 것입니다:$ ./program_name [arguments] [flags] [options] 보통 -h 또는 --help를 통해 사용 정보를 확인할 수 있습니다. 예를 들어 cargo 프로그램을 살펴봅시다:$ cargo -hRust's package managerUSAGE: cargo [OPTION..

Rust 2024.03.30