전체 글(120)
-
RabbitMQ Consumer Timeout
회사에서 RabbitMQ를 사용해서 프로젝트를 하고 있는데, 이슈가 있어서 해당 이슈를 분석하고 해결하는 방법을 정리하려고 합니다. 현재 상황 RabbitMQ가 있고 Replicas가 되어 있는 Worker가 메시지를 받게 되면 처리하고 다음 Queue로 메시지를 전송하는 로직입니다. Worker는 메시지를 예약하고 처리 후 Ask로 메시지가 Queue에서 삭제하도록 되어 있습니다. 만약 Exception이 발생해도 Ask를 날리고 Qeueue에서 메시지를 삭제하고 다음 메시지를 받도록 되어 있습니다. 이슈 평소에는 메시지 1개당 처리 시간이 5분에서 10분 정도 였는데, 어느 날 1시간이 넘는 처리 시간을 가진 메시지가 들어와 이슈가 발생하였습니다. Worker 내부적으로 30분이 넘으면 Timeout..
2023.04.17 -
Web Assembly 만들어 보기
Rust를 공부하다 보니 가장 많이 연관되는게 WebAssembly라 튜토리얼을 한번 따라 해봤습니다. Web Assembly?? Web Assembly는 Javascript만으로는 어려웠던 고성능의 애플리케이션을 C, C++, C#, Rust 등을 사용하여 웹이지만 네이티브에 가까운 속도로 실행 가능하게 만드는 것입니다. 정확한 원리는 잘 모르지만, 제가 생각 할 때는 다른 언어로 개발하고 컴파일하면 wasm이라는 파일이 나오게 되는데, 웹에 접속하면 자동으로 wasm이라는 파일을 다운받아 브라우저 위에서 wasm을 실행시키기 때문에 빠른 것으로 보입니다. 이름이 Web Assembly이지만 막상 만들고 나니 브라우저 뿐만 아니라 wasm 파일이 리눅스, 윈도우, IoT 등 다양한 플랫폼에서 돌아간다는..
2023.04.15 -
Rust Option의 메서드 알아보기
오늘은 Rust의 Option에 대해 알아보도록 하겠습니다. Option Rust에서 기본적으로 null이 존재하지 않습니다. 그래서 널 포인터 참조와 같은 에러는 발생하지 않습니다. 하지만 Null을 표현하는 방법이 필요할 때가 있기 때문에 Rust에서는 Option라는 Enum 타입을 제공합니다. enum Option { Some(T), None, }Option 안에는 두 개의 variant(종류)가 존재합니다. Some : 값을 가지는 variant None : 값을 가지지 않는 variant 예제 설명 fn divide(dividend: i32, divisor: i32) -> Option { if divisor == 0 { None } else { Some(dividend / divisor) } ..
2023.04.01 -
윈도우 11 휴지동 작업 표시줄 고정
바탕화면에서 휴지통을 없애고 작업표시줄에 고정하는 방법에 대해 알아보겠습니다. 바탕화면에서 휴지통 제거 먼저 설정에서 개인설정 -> 테마로 이동합니다. 위 그림과 같이 바탕 화면 아이콘 설정 버튼을 클릭 합니다. 휴지통 체크 해제 한 후 확인 버튼을 클릭합니다. 휴지통 바로가기 생성 작업표시줄에 고정하기 위해서는 휴지통 바로가기를 먼저 생성해야 합니다. 바탕 화면에서 마우스 우측 버튼을 클릭하여 새로 만들기 -> 바로 가기를 만듭니다. %SystemRoot%\explorer.exe shell:RecycleBinFolder 위 와 같이 위치를 입력하고 휴지통이라고 이름을 지정합니다. 그럼 바탕화면에 휴지통 바로가기 아이콘이 생성되는데 휴지통과 같이 아이콘을 변경 시켜야 합니다. C:\Windows\Syst..
2023.03.26 -
Rust 소스 코드 문서화
여러 언어에서 주석으로 문서를 생성하는 방법이 많이 있습니다. 예를 들어 docfx나 hugo 등이 많이 있습니다. Rust에서는 빌드 시스템이자 패키지 관리자인 Cargo에 기본적으로 내장되어 있습니다. 오늘은 내가 만든 코드를 자동으로 문서화 시키는 방법에 대해 알아보도록 하겠습니다. 예제 코드 먼저 아래와 같이 Cargo를 통해 새로운 프로젝트를 생성하고 main.rs를 작성합니다. $ cargo new rust_doc enum Color { Red, Blue } struct Student { name : String, age : i32 } fn add(x:i32, y:i32) -> i32 { x + y } fn main() { println!("Hello, world!"); } 예제 코드 문서화 ..
2023.03.21 -
Rust 열거형(Enum)
Enum(열거형)이란 한 타입의 종류(variant)를 나열 할 때 흔히 사용됩니다. Enum은 컴파일러에 프로그램에 관한 정보를 제공하므로 프로그램을 더 안정적으로 만들 수 있습니다. 간단한 예제를 살펴보겠습니다. enum Move { Up, Down, Left, Right } fn which_move(go: Move){ match go { Move::Up => println!("up"), Move::Down => println!("down"), Move::Left => println!("left"), Move::Right => println!("right"), } } enum Move안에 속한 값들을 열것값(variant)라고 부릅니다. 열것값들의 끝에는 콤마로 구분하고 마지막 열것값의 경우는 선택사..
2023.03.20