Language(38)
-
.NET Serilog 사용법
Serilog https://serilog.net/ 아래의 예제는 .NET Worker Service 프로젝트에서 사용하는 방법에 대해 소개하도록 하겠습니다. Serilog란? 파일, 콘솔 등의 다양한 저장소의 로깅을 지원합니다. 그리고 설정하기 쉬운 API로 되어 있으며 다양한 플랫폼에 이식이 가능합니다. 또한 구조화 된 로깅으로 다른 플랫폼에서 읽기 쉽도록 로깅을 생성할 수 있습니다. 사용법 Worker Service를 먼저 생성합니다. 그리고 Nuget Package에서 Serilog.AspNetCore를 설치합니다. Program.cs에 아래와 같이 코드를 추가합니다. using Collector.Service; using Serilog; IHost host = Host.CreateDefaultB..
2023.04.26 -
Stream, FileStream, BufferedStream, MemoryStream
Stream이란? 프로그램을 개발하다보면 Stream을 사용하는 일이 많습니다. Java와 .NET 에서는 입풀력 작업을 Stream이란 개념을 통해서 추상화하여 사용합니다. 대표적으로 파일을 읽고 쓸 때 많이 사용하는데, 자세히 알아보도록 하겠습니다. 먼저 사전적인 의미를 보자면 아래와 같습니다. A stream is a small narrow river. A stream of smoke, air, or liquid is a narrow moving mass of it. A stream of vehicles or people is a long moving line of them. (액체 등의) 좁은 흐름 우리 말로하면 작은 시냇물 같은 의미를 가지고 있습니다. 즉, 프로그램에서 Stream이란 데이터가..
2023.04.25 -
.NET Core에서 Redis Job Queue 사용하기
소개 Redis는 Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)입니다. 데이터베이스, 캐시, 메시지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소입니다. 많이들 Redis의 자료구조 중 List를 가지고 Queue나 Stack을 만들어 사용합니다. 속도는 O(n)의 속도를 가지며 이 포스트에서는 Job Queue를 만들어 Message Queue 처럼 사용하는 방법에 대해 소개하도록 하겠습니다. flowchart LR Client -- 3, 2, 1 --> Queue Queue -- 1 --> Worker1 Queue -- 2 --> Worker2 Queue -- 3--> Worker3 Redis Nuget Pack..
2023.04.22 -
VS Code에서 Python Type Check 기능 활성화
소개 python은 기본적으로 동적(dynamic)프로그래밍 언어로써 인터프리터(interpreter)가 코드를 실행하면서 Type을 추론하여 체크하기 때문에 Type이 고정되어 있지 않습니다. 하지만 Python 3.5 부터 Python에서도 Type을 체크할 수 있도록 Type Hints라는 기능이 도입되어 ㅆ습니다. 데이터형에 주석을 붙여 사용하게 됩니다. def greeting(name:str) -> str: return 'Hello' + name name:str : 인수 name의 Type이 str이라는 것을 어노테이션합니다. -> str : 함수 반환값의 Type이 str이라는 것을 어노테이션 합니다. VSCode Type Check 활성화 VS Code에서 아래와 같이 코딩을 합니다. def..
2023.04.21 -
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