프로그래밍
-
AWS Secret Manager를 이용한 반복 체크프로그래밍 2024. 11. 21. 09:48
필자는 애플리케이션을 설정할 때 환경 변수 이외에도 각종 설정을 Secret Manager에 기록하여 사용하고 있다. 이번에 살펴볼 내용은 Secret Manager를 사용할 때 설정값의 변경되고 해당 변경값을 계속적으로 읽어 반영해야 하는 경우이다. 먼저 Secret Manager를 이용한 기본적인 코드는 아래와 같다. var client = new AmazonSecretsManagerClient(keyId, accessKey, RegionEndpoint.GetBySystemName(region)); var request = new GetSecretValueRequest() { SecretId = secretName, VersionStage = versionS..
-
c# 에서 mongodb를 다루는 방법 (2)프로그래밍 2024. 11. 20. 11:49
이전 글에 이어서 mongodb를 효과적으로 다루는 내용에 대해 기술한다. Mongodb Driver로 작업하게 될 경우 아래의 코드가 반복된다. var db = _client.GetDatabase("database name"); var collection = db.GetCollection("collection name"); 또한 Database와 Collection에 대한 이름을 계속 넣어서 생성해야 한다. 이러한 번거로움을 최소화하기 위해 필자는 아래와 같이 구현했다.1. Attribute를 사용해서 MongoDb Object에 대한 database name, collection name에 대한 속성을 선언적으로 한다.2. 반복 코드를 재사용하는 클래스를 만든다.3. 해당 ..
-
c# 에서 mongodb를 다루는 방법프로그래밍 2024. 11. 19. 16:25
C#에서 mongodb는 필자가 경험한바, 2가지로 다룰 수 있다. 하나는 Mongodb.Driver를 사용하는 것이요,하나는 Mongodb.EntityFrameworkCore를 사용하는 것이다. 이 두 가지 개발 경험을 공유하고자 한다. 먼저, 결론적으로 Mongodb.Driver를 사용해서 개발하기를 추천한다. Mongodb.Driver를 사용해서 개발하는 예는 아래와 같다. 1. collection 생성 및 index var client = scope.ServiceProvider.GetRequiredService(); var db = client.GetDatabase(ENUM_MONGODB_DATABASE_TYPE.Demo.Name); await ..
-
Kafka Consumer를 조금 더 효율적으로 처리하는 방법프로그래밍 2024. 11. 13. 16:42
Kafka를 개발하다보면 consumer를 어떻게 효율적으로 처리할지 고민하게 된다. 필자는 consumer를 처리할 때 아래의 조건에 따라 개발해 보았다.1. producer에서는 사용자ID에 따라 publish하고 있다.2. consumer는 최대한 많은 처리를 해야 하고 consumer 처리에 따라 집계가 수행되어야 한다.3. 집계는 10분, 1시간, 1일, 1주, 1월이다. 먼저 producer에서 발행하는 값는 KEY가 주어진다. 즉, KEY에 따라 할당된 파티션에 순서적으로 데이터가 쌓이는 것을 보장하고 있다. 이에 따라 consumer를 생성할 때 다중 consumer를 생성할 수 있는 조건이 성립되었다. 그림은 아래와 같다. 아래의 코드를 보자. public class ParallelCo..
-
시계열 데이터를 전송하는 방법프로그래밍 2024. 10. 25. 15:31
지난 시간에 멀티 스레드에서 다중 전송할 경우 큐를 이용해서 전송하는 방법을 알아보았다. 시계열 데이터를 처리할 때 필자는 클라이언트에서 큐를 이용하여 처리해야 하는 것으로 생각하였으나 이러한 부분을 전혀 고려하지 않아 발생하는 문제를 해결하는 과정에서의 결론을 적어본다. 상황은 이렇다. N개의 센서를 모바일을 이용하여 BLE 데이터를 수신, 이후 해당 데이터를 서버에 전송하는 형식이다.서버에서는 각각의 센서 데이터를 수신받아 공유자에게 전송하고 동시에 Kafka를 이용하여 데이터를 적재하고 있다. 먼저 클라이언트에서 BLE데이터를 발송할 때 위와 같은 케이스라면 코루틴에서 동작하게 된다. 코루틴은 이벤트가 언제 발생할지 알 수 없으므로 코루틴에서 데이터를 직접적으로 발신하는 경우 발신 데이터가 전송 속..
-
사용자 Session을 처리하는 방법프로그래밍 2024. 10. 24. 12:18
우리가 흔히 개발을 할 때 사용자 인증과 정보를 처리하기 위해서 Session을 사용하게 된다.즉, 사용자가 접속한 정보 및 인증, 개인정보 등의 집합체를 Session으로 정의할 수 있다.흔히 MVC라면 cookie 또는 서버측 Session을 이용할 것이다.SPA라면 JWT를 사용할 것이다.JWT는 cookie로도 사용할 수 있다. 조금 색다른 방법을 알아보고자 한다. MVC의 경우인데, Url query에 session key를 넣어서 사용하는 것이다. 예로 아래와 같다. https://test.demo.com?session=b4F8d2E7c1A6g7H9i4L2m9P0x5T7r8Q6과 같이 구성하는 것이다. 따라서 이후 url query는 session을 포함한 url이 되게 된다. 예는 아래와 같..
-
GUID대신 ULID를 사용해 보자.프로그래밍 2024. 10. 23. 11:39
고유 식별자는 엔터티를 고유하고 일관되게 구별하기 위한 소프트웨어 개발에 필수적이다. 가장 일반적인 유형으로는 GUID, UUID 및 ULID가 있다.이 문서에서는 GUID, UUID 및 ULID에 대한 차이점과 ULID를 추천하는 이유에 대해 설명한다. 주된 이유는 ULID는 난수 임에도 시간 정렬이 가능하다는 것이다.GUID(Globally Unique Identifier, 전역 고유 식별자)개요GUID는 Globally Unique Identifier의 약자.컴퓨터 시스템의 정보를 고유하게 식별하는 데 사용되는 128비트 숫자.Microsoft 기술에서 일반적으로 사용.판표준 형식: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx본보기: 123e4567-e89b-12d3-a456-..
-
AntdUI 소개프로그래밍 2024. 10. 22. 20:36
Ant Design은 중국의 대기업 엔트그룹에서 개발 및 지원하는 웹 UI, UX 라이브러리이다. 근데 신기하게도 웹 UI, UX를 Winform으로 만들고 있어서 소개한다. 레포는 아래와 같다. https://github.com/AntdUI/AntdUI.git GitHub - AntdUI/AntdUI: 👚 基于 Ant Design 设计语言的 Winform 界面库👚 基于 Ant Design 设计语言的 Winform 界面库. Contribute to AntdUI/AntdUI development by creating an account on GitHub.github.com 데모만 보았는데, 나름 괘찮은 그낌이다. Winform으로 해봤자 머... 라고 생각하고 있었는데, 나름 웹 UI, UX에 근접한 ..