오픈 소스 기여 모음
Oh My Posh Unity Segment

Tags: Go
Oh My Posh는 다양한 “segment”를 조합해 현재 폴더, 사용자 정보, git 상태 등 컨텍스트를 표시하는 커스텀 프롬프트 엔진입니다.
Unity Engine을 자주 사용하고 oh-my-posh를 선호해서, 현재 작업 디렉터리의 Unity/C# 버전을 표시하는 커스텀 segment를 기여했습니다. 이때 처음으로 Go를 본격 사용했습니다.
Versionize
Conventional Commit 메시지를 이용한 자동 버전 관리 및 CHANGELOG 생성 도구
Tags: C#, conventional commits
- 코어 메인테이너 2명 중 1명으로 활동
- 다른 메인테이너가 원 제작자이고, 저는 이후 합류


ReactiveUI

Tags: C#, Rx.NET, iOS, Android, UWP, WPF
약 2018년부터 2022년까지 core maintainer로 활동했습니다. 코드 기여뿐 아니라 ReactiveUI Slack 지원, Stack Overflow 답변 활동도 수행했습니다.
- fix(memory leak): original view model is not released when swapped out
- fix(threading): RxApp scheduler logic makes unit tests unpredictable
PropertyChanged
Tags: C#, Rx.NET
H5P-Nodejs-library

Tags: H5P, NodeJS, TypeScript, S3, MongoDB
KidsLoop에서 백엔드 엔지니어로 근무할 때 실제로 사용하던 라이브러리여서 기여했습니다.
이 TypeScript 라이브러리는 NodeJS 기반 커스텀 H5P 서버 구축에 필요한 기능을 제공합니다.
- fix(h5p-mongos3): s3 lifecycle helper not taking effect
- perf(h5p-server): reduce memory and IO when uploading package
.NET-Ogg-Vorbis-Encoder
Tags: C#, Vorbis
Before
| Method | Mean | Error | StdDev | Allocated |
|---|---|---|---|---|
| ConvertPCMFile | 4.174 s | 0.0828 s | 0.1835 s | 608.78 MB |
After
| Method | Mean | Error | StdDev | Allocated |
|---|---|---|---|---|
| ConvertPCMFile | 1.605 s | 0.0374 s | 0.1073 s | 162.53 MB |

- IList 파라미터를 구체 타입(array, OffsetArray)으로 변경
- OffsetArray 대신 Span
활용 - stackalloc 및 MemoryPool 최적화 추가
작은 크기의 임시 배열은 힙이 아닌 스택에 할당하고, 큰 경우에는 풀에서 대여 후 필요한 범위만 slice해서 사용했습니다.
float[] seedArr = null;
Span<float> seed = _totalOctaveLines <= 128
? stackalloc float[_totalOctaveLines]
: (seedArr = ArrayPool<float>.Shared.Rent(_totalOctaveLines));
seed = seed.Slice(0, _totalOctaveLines);