Language(38)
-
Rust 문자열
러스트에서 문자열을 다룰 때는 String 타입 또는 &str 타입을 이용합니다. &str은 변경이 불가능 하기 때문에 함수의 반환 값으로 사용해야 할 때는 String 타입을 사용하고 있습니다. 이 둘의 차이점에 대해 먼저 알아 보겠ㅅㅂ니다. String 타입 String 타입은 벡터 타입입니다. 정확히는 vec 타입입니다. u8은 부호가 없는 8비트(1바이트) 정수이기 때문에 String 타입은 1바이트 단위로 데이터를 확장 할 수 있고, 벡터 타입은 힙 메모리에 저장됩니다. &str 타입 &str 타입은 슬라이스라고 합니다. 큰따옴표("")로 감싼 문자열이 &str이며, 러스트에서는 슬라이스인 &[u8] 타입으로 취급됩니다. &[u8] 타입인 것을 보면 참조자로만 사용 할 수 있기 때문에 소유권이 ..
2023.06.24 -
cargo diesel_cli 설치 에러
개요 Rust의 ORM 중 가장 유명한 diesel을 사용하고 싶어 테스트 중이 였다. DB는 Postgres며, 튜토리얼을 따라 하는데 정상적으로 diesel_cli가 설치 되지 않아 정리하려 한다. Diesel 설치 [dependencies] diesel = { version = "2.0.4", features = ["postgres"] } $ cargo install diesel_cli --no-default-features --features postgres ... ... b" "-o" "/tmp/cargo-installtmxLrL/release/deps/diesel-51c0e09b49673ddd" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-..
2023.06.22 -
환경변수 파일 읽기
개요 프로젝트를 하다보면 프로그램 내부에서 사용 할 환경 설정 파일을 따로 관리하는 경우가 있습니다. 이럴 때 우리는 .env 파일을 만들어서 사용합니다. 오늘은 .env 파일을 읽는 방법에 대해 알아보도록 하겠습니다. dotenv 추가 .env 파일을 읽고 환경변수를 가져오도록 하는 Crate 중 유용한 게 dotenv라는 crate가 있습니다. 먼저 Cargo.toml에 추가합니다. [dependencies] dotenv = "0.15.0" .env 파일 셋팅 저는 postgres에 접속 할 수 있는 Database 연결 정보를 설정해보도록 하겠습니다. NAME='TEST' AGE=13 환경변수 불러오기 환경 변수를 불러오는 방법은 간단합니다. dotenv().ok(); 를 추가만 해주면 .env 파..
2023.06.21 -
MemoryCache
개요 프로젝트의 성능을 향상 시키기 위해서 캐싱을 많이 사용합니다. 캐싱으로 유명한 Redis를 사용 할 수도 있지만, 작은 프로젝트에서는 Redis를 따로 사용하지 못하는 경우도 있습니다. 그래서 C#에서는 캐시를 구현 할 수 있는 MemoryCache 클래스를 제공합니다. 이 클래스는 객체의 삽입, 갱신, 삭제와 같은 작업을 메모리상에서 처리하기 때문에 데이터베이스에 부담을 줄이고 좀 더 개발하기 편하게 해줍니다. IMemoryCache IMemoryCache는 Microsoft.Extensions.Caching.Memory 패키지에서 사용 할 수 있습니다. 간단하게 Visual Studio를 사용해서 .NET 7 ASP.NET Core 웹 API 프로젝트를 생성해서 진행하도록 하겠습니다. 프로젝트를..
2023.06.19 -
Rust 명령줄의 인수 받기
개요 Rust는 Command Line에 즉 CLI 도구에 많이 사용 됩니다. 그래서 오늘은 Command Line에서 인수를 받는 방법에 대해 알아보도록 하겠습니다. 표준 라이브러리 인수 다루기 Rust의 표준 라이브러리인 std::env::args()를 통해 Rust 프로그램의 인수를 가져 올 수 있습니다. fn main() { let args = std::env::args(); for (i, s) in args.enumerate(){ println!("{}", s); } } $ cargo run 10 20 30 a b c 1.1 1.2 10 20 30 a b c 1.1 1.2 인수의 경우는 전부 string으로 받게 됩니다. Clap 크래이트 사용하기 CLI를 사용하기 위해서는 표준 라이브러리 만으..
2023.06.18 -
Task vs. ValueTask
개요 C# 프로그래밍에 익숙해지다 보면 비동기 프로그래밍에 관심을 갖게 됩니다. 비동기 프로그래밍은 사용자 경험을 향상시키고, 자원을 최적화하며, 성능을 높여주기 때문에 무척 중요한 개념입니다. 이 글에서는 C#에서 사용되는 주요 비동기 작업 유형인 Task와 ValueTask에 대해 알아보겠습니다. 이 두 가지 유형의 차이점을 이해하면 비동기 작업을 더 효율적으로 설계하고 구현할 수 있습니다. 기본 개념 Task는 비동작 작업을 나타내는 참조 형식입니다. 비동기 작업을 표현하기 위해 Task를 사용하면 코드의 가독성과 유지 관리가 향상 됩니다. ValueTask는 비동기 작업을 나타내는 값 형식입니다. Task와 달리, 메모리 할당 및 GC에 더 효율적입니다. 여기서 중요한 것은 참조 형식이냐? 값 형..
2023.06.17