Language(38)
-
Rust에서 RabbitMQ 사용하기 (WorkQueue)
오늘은 Rust에서 RabbitMQ를 사용하는 방법에 대해 알아봅니다. RabbitMQ는 너무 유명한 MessageQueue이므로 따로 설명하지는 않겠습니다. RabbitMQ에서 가장 기본이 되는 것이 Work Queue입니다. 위와 같이 P는 Producer 즉 메시지를 Queue에 넣는 프로그램이며, C는 Consumer로 메시지를 받아 특정 작업을 하는 프로그램 입니다. 1개의 Queue에 여러 Producer와 여러 Consumer가 붙어서 사용 할 수 있습니다. Producer 먼저 메시지를 Queue에 넣는 방법에 대해 알아보겠습니다. Rust에서는 amiquip라는 Crate를 사용하면 됩니다. $ cargo new producer $ code producer Cargo를 통해 프로젝트를 생..
2023.06.03 -
if Let
Rust에서는 if let 표현식을 통해 관심 있는 베리언트에만 매칭하고 다른 것을 무시 할 수 있습니다. 예를 들어 아래와 같이 String이 있을 때 물음표(?) 뒤의 second만 가져오는 예제가 있습니다. fn main() { let some_str = String::from("first?second"); let mut second_str = None; match some_str.find('?') { Some(i) => { second_str = Some(&some_str[i + 1..]); } None => {} } } 위와 같이 second_str을 None으로 정의 후 '?'를 찾아 찾은 index + 1 ..을 통해 second라는 String을 가져 올 수 있..
2023.06.03 -
상속에서 Dispose 패턴
소개 C#에서는 가비즈 컬렉터(GC)가 메모리를 자동으로 관리합니다. 필요없는 클래스의 인스턴스를 메모리에서 바로 지우는 것이나라, 조건을 만족할 때까지 기다렸다가 지우기 때문에 클래스를 지웠다고 해도 메모리가 바로 해제 되지 않는다. 일반적인 메모리라면 GC에 맡겨도 상관 없지만, 관리되지 않는(Unmanaged, Native)리소스는 즉각 해제해야 하는 경우가 생기는데, 그럴때 필요한 것이 Dispose다. IDisposable 인터페이스 C#에서는 개발자가 명시적으로 메모리를 해제하기 위해서는 IDisposable 인터페이스를 상속 받아 구현한다. IDisposable에서는 Dispose() 하나의 메서드만 제공한다. public interface IDisposable { void Dispose()..
2023.05.31 -
EF Core Fluent API Entity Configuration
소개 이번 포스트는 EF Core에서 Fluent API 패턴을 기반으로 한 Entity Configuration에 대해 정리하도록 하겠습니다. Entity Configuration Entity Configuration은 테이블 및 관계 매핑에 대해 구성합니다. PrimaryKey(기본 키), AlternateKey(대체 키), Index, Table Name, 1대1 관계, 1대N 관계, N대N 관계에 대해 정의 합니다. Methods 사용법 HasAlternateKey() 엔티티에 대한 EF 모델의 대체 키 구성. HasIndex() 지정 된 속성의 인덱스 구성 HasKey() 속성 또는 속성 목록을 기본 키로 구성 HasMany() 일대다 또는 다대다 관계에 대해 다른 유형의 참조 수집 속성을 포함..
2023.05.17 -
Rust의 Trait
Rust를 공부하면서 Trait 패턴에 대해 처음 알게 되었습니다. 그래서 Trait이 Rust에서만 사용 되는 개념인가 했는데, 생각보다 여러 언어에서 채용하고, 또는 비슷한 개념으로 지원하고 있다는 것을 알게되었습니다. PHP나 Scalar는 Trait이라고 해서 사용하는 거 같고, C#, Java, Javascript, Kotlin, Python의 경우는 Mixin이라는 개념으로 Trait과 비슷하게 지원하는거 같습니다. 그래서 자료를 찾을 때 Mixin이라고 찾으면 더 많이 나오고 이해하기 쉬운거 같습니다. 객체지향 프로그래밍 언어 위키백과에서 러스트를 찾아보면 순수 함수형 프로그래밍, 액터 기반 병렬 프로그래밍, 명령형 프로그래밍, 객체 지향 프로그래밍 스타일을 지원한다. 라고 나와있습니다. 우..
2023.05.11 -
Rust 설치 및 VS Code 셋팅(Linux, Debian)
소개 최근 Rust에 관심이 생겨 Rust를 공부하고 있습니다. 제가 집에서 사용하는 PC는 Mint Linux로 Debian 계열의 리눅스를 사용하고 있습니다. Linux에 Rust를 설치하는 방법과 VS Code에서 Rust를 사용하는 방법에 대해 정리하겠습니다. Rust 설치 리눅스에서 Rust를 설치하는 방법은 3가지가 있습니다. rustup 사용 : 공식 사이트에서 가장 추천하는 방법 입니다. 패키지 매니저 사용 : 편리하지만 오래 된 버전의 Rust가 설치 됩니다. 직접 소스코드 빌드 : 특이한 경우가 아니라면 비추입니다. 저는 이 중 가장 추천하는 rustup을 사용하여 설치하겠습니다. Rustup으로 설치하기 먼저 터미널을 실행 시킵니다.(Ctrl + Alt + T) 아래 명령어를 사용합니..
2023.04.26