
글로벌하게 이름이 중복되어서는 안되는 경우가 있다. db가 아닌 인 메모리 형식으로 데이터를 가지고 있어야 한다. 데이터를 담아두는 방식에 따라서 중복 검사의 속도가 엄청나게 차이 날 수 있다는 것을 알았다. rust의 Vec과 HashSet을 비교해 볼 예정이다. 1
개요 데이터가 추가될 수 있거나 여러 데이터를 컬럼으로 가져야 할 경우, nvarchar 타입으로 컬럼을 생성하여 json 형식으로 저장하는 것도 하나의 방법이라는 것을 알았다. 유연성이 필요하거나 데이터 구조가 자주 변경될 수 있는 경우에 큰 장점을 가진다고 한다.
HashMap 형태의 자료구조를 특정 인덱스를 통해 정렬 후, 원하는 키 값으로 찾는 로직이 필요하다. BTreeMap을 활용해서 구현해볼 예정이다. Group이라는 구조체를 하나 만들어 주었고, 보기 좋게 출력하고자 Display를 구현해 주었다. gemini에게 데

global_db_table을 생성하여 Unique 한 name column을 만들어서 이름 중복이 되지 않는 로직을 작성해야 하는데, 테스트를 위해 많은 데이터를 넣어줘야 했다. bulk insert를 사용하면 빠르게 넣을 수 있다고 했다. 해당 내용을 간단히 정리해

client와 테스트를 진행하며 추론이 잘 되지 않는 이슈가 발생하였다. 따라서 postman을 활용해 실제 추론이 잘 되고 있는지 체크하는 내용이다.클라이언트로부터 넘어오는 이미지를 ocr 처리한 결과가 정확하지 않아서 직접 해당 이미지를 받아서 처리하였다. 테스트를

개요 easyocr -> paddleocr -> grpc paddleocr 내용 도커 세팅 Dockerfile에서는 필요한 의존성 설치 및 사전 설치를 하고 ENTRYPOINT를 설정해준다. sh파일에 필요한 실행 루틴을 설정한다. 특히 ocr.proto를ocrp

개요 azure function은 azure에서 제공해 주는 serverless 서비스이다. 어떤 식으로 동작을 하는지, 왜 사용하는지 공부한 내용을 작성하겠다. 내용 결론

azure의 service bus에 대해서 공부한 내용요금제에 따라서 사용할 수 있는 기능이 나누어져 있는 것 같다.기본을 선택하면 토픽은 사용할 수 없다고 한다.토픽을 사용할 수 없다고 해서 표준 가격을 골랐는데 서비스 버스의 경우 기본 요금이 있다고 한다. 개인 사

mssql server를 설치하여 db를 연동하였다. 마무리 단계이다.docker를 활용해서 설치하였다. aws ec2에 설치하려고 했는데 메모리 용량 이슈 때문에 로컬에 설치했다(프리 티어 사용 중)위 명령어를 실행하였더니 도커로 아주 손쉽게 설치할 수 있었다. 예전

개요 rust로 ocr 라이브러리를 사용해서 개발을 하려고 했다. 그러나 복잡하기도 하고 필요한 라이브러리들을 설치하기 위해서 로컬에 너무 많은 것을 설치해야 했고 ai 모델을 사용하는 거에 대해서 지식이 별로 없었기 때문에 어려웠다. 최근에 도커에 대해서 공부했고 편

rust의 tokio는 여러 비동기 채널을 제공해준다.https://docs.rs/tokio/1.47.1/tokio/sync/index.htmlmpsc 채널에서 bounded와 unbounded 채널의 차이점에 대해서 알아볼 예정이다. unbounded의 경우

개요 NameValue 속성에 대해서 파싱하는 방법을 알아보겠다. 내용 결론 syn::Meta::NameValue(metanamevalue) => { let Some(ident) = metanamevalue.path.get_ident()

derive 매크로를 사용 시 어떻게 파싱하고 TokenStream으로 반환하여 코드를 만드는지 알아보겠다. 매번 사용은 하지만 정확하게 짚고 넘어가고 싶다. attributes에는 종류가 크게 3가지 있다.1\. Path2\. List3\. NameValue테스트를

데이터 프레이밍이란?이 기술을 사용하는 이유는 TCP 통신의 메시지 경계 문제를 해결하기 위해서이다.TCP는 데이터 스트림을 연속적으로 전송하므로, 하나의 큰 데이터 덩어리를 여러 번에 나눠 보내거나, 여러 개의 작은 메시지가 합쳐져서 한 번에 도착할 수 있다. Len
개요 내용 위 코드는 정상적으로 컴파일되지 않는다. 소유권 문제가 발생한다. rust를 개발하면서 아주 자주 겪는 상황이다. 결론
개요 bevy의 ecs 프레임워크를 활용해서 websocket 통신을 구현하려고 한다. 특히 권위 서버(Authoritative Server) 형태로 만들 예정이다. 지속적으로 업데이트할 예정이다. 내용 간단하게 WebSocket을 tokio runtime을 통해서
스레드를 생성 시, spawn 메서드에 클로저를 넘겨주게 된다. spawn함수의 원형을 보면F 제네릭 타입이 Send + 'static이다. 여기서 중요한 것은 'static을 가진다는 것이다. 이 의미는 FnOnce가 호출 시 내부의 변수들은 모두 소유권을 가지고 있

여기서 incoming 변수의 메서드인 try_for_each를 호출하는데 이게 어떻게 가능한지에 대해서 분석하다가 정리를 해야 할 것 같아서 작성한다.일단 try_for_each의 원형은 아래처럼 생김매개변수로 F타입을 받음. 즉, 제네릭 타입임.그럼 F: FnMut
일반적으로 tokio를 사용할 때 \`그러나 특정 상황에서는 tokio 런타임을 수동으로 관리해야하는 경우가 생긴다. 이에 대해서 알아보도록 하겠다.기존의 거대한 동기 코드베이스를 한 번에 async로 바꾸는 것은 거의 불가능에 가깝다. 또한 main을 async로 바