사개 — 못을 쓰지 않고, 나무를 깎아 서로 끼워 맞추는 이음
forge — 그 부품을 직접 벼리는 곳
언어를 설계하고 · 커널을 올리고 · VR 을 빚고 · 게임을 만들고 · 파이프라인을 세웠습니다
2016 —
// nugdev — 내가 설계한 언어. 문법은 EBNF 로 30KB, 예제는 .nug 로 씁니다.
import "std/forge" as forge;
namespace Sagae {
export struct Developer<T: module> {
private let name: string = "사개"; // 깎아서 서로 끼워 맞추는 이음
private let since: number = 2016;
public property parts: T[] {
get(): T[] => this._forged; // 부품은 대체로 직접 벼린다
}
public fn build(pieces: T[]): T {
return pieces.fold(fn(a: T, b: T): T => fit(a, b));
}
}
}nugdev 문법입니다 — 하이라이팅은 TypeScript 것을 빌렸습니다. 실제 문법과 예제는 nugdev-language 에 있습니다.
하드웨어를 조작하는 복잡한 프로그램을
읽기 쉬운 코드로 만든다.
순수 함수의 집합만으로 운영체제 커널을 쓸 수 있는 언어.
순수하지 않은 함수는 모나드를 반환합니다. 함수가 순수한지를 컴파일 단계에서 검사하고, 예외는 try-catch 가 아니라 모나드로 처리합니다.
마일스톤 — 2026-01-31: x86/amd64 아키텍쳐에서 피보나치 재귀 함수를 구동할 수 있다.
컴파일러 kernc 와 표준 라이브러리 stdlib/ 를 같이 씁니다. 아홉 번째 컴파일러이고, mint64 커널과 nugdev 언어가 만나는 지점입니다.
C++ 2.1 MB · 커밋 155개 · 2026.01 – 2026.03 | archive-compiler/kern-research
직접 설계한 언어, 그리고 그 언어를 위한 컴파일러입니다.
문법 전체를 EBNF 30KB 로 썼습니다. 모듈 / 네임스페이스 / import·export, 제네릭 제약 (struct Vector<T: number>), 프로퍼티 getter, 화살표 함수, 정적 멤버까지 들어 있고 — 그 문법으로 실제 예제 프로그램(sample.nug, physics.nug)을 짰습니다. 문법을 눈으로 보려고 SFML 뷰어도 따로 만들었습니다.
컴파일러는 단계별로 잘라 놨습니다.
01_lib → 02_scanning → 03_tokenize → 04_parsing → 05_analysis
05_analysis 안에는 심볼 테이블 · 스코프 분석 · 타입 체커 · SSA 변환 · 데이터플로우(라이브 변수 / 도달 정의 / 에일리어스 / 이스케이프 / 프로시저 간) · 최적화(상수 폴딩 / 데드코드 제거 / 루프 / 대수적 단순화)가 있습니다.
C++ · CMake · vcpkg · gtest | archive-compiler/nugdev-compiler-2025 · nugdev-language
『64비트 멀티코어 OS 원리와 구조』를 따라, 부트로더부터 올렸습니다.
00_BootLoader 에서 시작해 → 01_Kernel32 에서 A20 게이트를 열고 보호모드로 넘어가 페이징 자료구조를 세우고 → 02_Kernel64 에서 롱모드로 진입해 키보드 드라이버까지. 디스크 이미지를 굽는 ImageMaker 도 같이 만들었습니다. 커밋이 7장 C언어 커널 추가 처럼 장 단위로 남아 있습니다.
x86-64 Assembly · C · Makefile · CMake | archive-systems/mint64
Unity 안에 오브젝트 시스템을 다시 만들었습니다 — Object_Object / Object_Component / Object_Behaviour / Object_ObjectLoader.
그 위에 네트워크 계층(NetworkManager · NetworkSession · NetworkPacket · NetworkHandler · NetworkEventer), 플레이어 계층(Controller · Input · Interaction · Physic · Status — 전부 *Base 추상 계층으로 분리), 인게임 맵 에디터, 에셋 번들 업로드·다운로드(Utility_AssetBundle · Utility_FBXImporter), 로그인·회원가입 백엔드 연동까지 얹었습니다. XR / XRI 포함. 스크립트 133개.
C# · Unity · XR | archive-network/unity/network-package
싱가포르 정부 조달(GeBIZ)·건설청(BCA) 데이터를 모아 "프로젝트 중심" 으로 정리하는 시스템.
Collector(배치 잡) / Storage(상시 API) / Processor(후처리)를 각각 독립 배포 가능하게 나눴습니다. 크롤러는 BaseCrawler 를 상속하고 팩토리에 등록만 하면 새 소스가 붙습니다. 공사비·기간 같은 정형 데이터는 RDBMS로 엄격하게, 시방서·지반 조건 같은 가변 데이터는 JSONB로 유연하게 — 두 갈래로 갈라 설계했습니다.
Playwright · FastAPI · SQLAlchemy · PostgreSQL · Docker | archive-web-services/crawler
각 항목을 눌러서 펼칠 수 있습니다.
언어 · 컴파일러 — 10개 · Quantum · nugdev-compiler · cos · kern-research
| 프로젝트 | 무엇 | 스택 | 커밋 |
|---|---|---|---|
kern-research 2026.03 |
순수 함수로 커널을 쓰는 언어 + kernc 컴파일러 |
C++ | 155 |
Quantum 2021.12 |
자작 언어용 C 런타임 — Object 박싱 · GC · Delegate · Exception + String / JSON 모듈. .c 243개 |
C | 103 |
nugdev-compiler 2024 |
FSM 토크나이저 · 타입 파싱 | C++ · vcpkg | 66 |
AnyangTechInterpreter 2021.06 |
"Quantum Language" — 첫 인터프리터. 『만들면서 배우는 인터프리터』 참고 | C++ · C | 54 |
NCX 2022.03 |
프론트엔드를 갈아끼울 수 있는 컴파일러 확장 | C++ | 14 |
nCompiler 2022.02 |
C++ 로 옮기며 처음부터 재작성 | C++ | 11 |
nugdev-compiler 2025 |
Scanner → Tokenizer → Parser → Analysis. SSA · 데이터플로우 · 최적화 | C++ · gtest | 9 |
cos 2025.11 |
NASM 백엔드 — 명령어 · 오퍼랜드 · 레지스터 할당기 직접. Pratt 파서 | C++ | 4 |
MakeInterpreter 2022.05 |
이번엔 C# 으로 인터프리터 | C# | 3 |
nugdev-language 2025.06 |
EBNF 문법 30KB + .nug 예제 + SFML 문법 뷰어 |
EBNF · C++ | 1 |
시스템 · 저수준 — 11개 · 가비지 컬렉터 · mint64 커널 · NDK · wine-python
| 프로젝트 | 무엇 | 스택 | 커밋 |
|---|---|---|---|
garbage-collection 2021.11 |
GC 구현과 테스트. ngc · gc-rebuild 로 두 번 더 갈아엎음 |
C | 18 |
program-manager 2021.12 |
프로그램 라이프사이클 매니저 | C | 16 |
nugunga-utility 2021.11 |
String / GC / Operator 종합 유틸리티 | C | 13 |
mint64 2025.11 |
부트로더 → 32비트 → 64비트 커널. 『64비트 멀티코어 OS 원리와 구조』 | ASM · C | 8 |
NDK 2025.04 |
공용 C++ 모듈 — algorithm / exception / json / string |
C++ · CMake | 4 |
dm-memory 2021.08 |
페이지 기반 동적 메모리 매니저 | C | 1 |
nugunga-develop-kit 2023.10 |
C++ 리플렉션 실험 — Property / Reflection | C++ | 1 |
make_Library 2022.03 |
포트폴리오용 C++ JSON 라이브러리 | C++ | 21 |
Advanced-Calc 2022.04 |
C++ 계산기 | C++ · C | 5 |
ini-parser 2024.03 |
C++ INI 파서 — Comment / Field / Line / Section 분리 | C++ | 1 |
wine-python 2024.09 |
Wine 위에서 Python ↔ DLL 브리지 | Python · Docker | 2 |
네트워크 · 멀티플레이 — 4개 · C++ 포커 서버 · Unity VR 멀티플레이 + 맵 에디터
| 프로젝트 | 무엇 | 스택 | 커밋 |
|---|---|---|---|
cpp-poker-server 2022.05 |
포커 서버. String / StringAry 라이브러리를 먼저 만들고 그 위에 얹음 — UTF-8 인코더·디코더, 패턴 매칭, 포맷까지 함수 하나당 파일 하나로 | C | 13 |
network-package 2022.08 |
Unity VR 멀티플레이 + 오브젝트 시스템 + 맵 에디터 | C# · Unity | 2 |
packet 2022.09 |
Unity 네트워크 패킷 프로토타입 | C# | 1 |
thread-server / client 2022.06 |
pthread 서버·클라이언트 습작 | C | 2 |
게임 — 6개 · 명일단보 · 오수는 게임중 · 주식게임 3종
| 프로젝트 | 무엇 | 스택 | 커밋 |
|---|---|---|---|
주식 게임 (웹) 2025.08 |
명재와 함께. 인증 · 게임 · 프로필까지 있는 웹 재작성판 | Kotlin Spring · Next.js | 25 |
오수는 게임중 2021.04 |
Java 콘솔 경제 시뮬 — 주식 · 부동산 · 코인. 실시간 타이머로 하루가 지나고 월세가 들어옴 | Java | 22 |
주식 게임 (Unity) 2025.05 |
같은 게임의 Unity 버전 | C# · Unity | 6 |
명일단보 2022.08 |
Unity 비주얼노벨. 엑셀(.xlsx)에 대사를 쓰면 NPOI 로 읽어 ScriptableObject 로 굽는 임포터 포함. 완성 |
C# · Unity | 3 |
bangdream-rhythm 2022.05 |
뱅드림 스타일 리듬게임 | C# · Unity | 2 |
sound-engine-preset 2021.12 |
Unity 사운드 매니저 프리셋 | C# | 1 |
서비스 · 도구 — 8개 · 싱가포르 ELT 크롤러 · 캘린더 · 지식베이스 · manim
| 프로젝트 | 무엇 | 스택 | 커밋 |
|---|---|---|---|
Singapore Collector 2026.01 |
건설 프로젝트 ELT 수집 시스템 | Playwright · FastAPI · PostgreSQL | 35 |
docker-samples 2023–2025 |
Next.js / Bun / Samba / 정적 웹 실습 | Docker | 6 |
calendar 2025.03 |
캘린더. event / note / user / workspace 도메인, Flyway 마이그레이션, OAuth2 |
Kotlin Spring Boot · Next.js 15 | 3 |
knowhow-base 2025.04 |
지식 관리 서비스. domain / infrastructure 계층 분리 + Alembic |
FastAPI · Next.js | 3 |
manim 2026.01 |
컴파일러가 하는 일을 설명하는 영상 | Python · manim | 1 |
translator 2026.08 |
Papago / Google 동시 번역 | Python | 1 |
PaperBot 2024.03 |
Next.js 습작 — 디스코드 클론 스터디 브랜치 6개 | Next.js · TS | 28 |
portfolio-site 2021.12 |
개인 포트폴리오 정적 사이트 | HTML · CSS | 1 |
🥽 XR · 3D — XR 프로토타입 7종 · 3D 모델 165개 · 미공개
안양공업고등학교 XR융합응용학과 를 나왔습니다. VR 과 모델링은 취미가 아니라 전공이었습니다.
| 무엇 | |
|---|---|
| XR 프로토타입 7종 | XRTest_Teleport / _Movement / _Locomotion / _Connect · VR UI Canvas · XR_Preset · TEST_3D — 이동 · 텔레포트 · 핸드 모델 · VR UI 를 하나씩 뜯어서 |
| 3D 모델링 | .blend · .fbx 165개 — 전공 과제 63 · VR 42 · Unity 17 |
| 런타임 3D 로딩 | Utility_FBXImporter + TriLib — 게임 안에서 모델을 불러와 배치 |
| Unity 그래픽스 | Catlike Coding — Clock / Graph / Math / Performance |
아직 저장소로 올리지 않았습니다.
📓 학습 기록 — Go · DDD · TTS · Arduino · 웹 · 코딩테스트 · 미공개
| 무엇 | |
|---|---|
| Go | Chapter 03 – 31 · .go 31개 · go.mod 29개 |
| DDD | 도메인 주도 개발 노트 — 복잡성 / 설계 vs 개발 프로세스 / 세 프로젝트 비교 |
| TTS · 음성 | mimic-recording-studio (BE + FE) + 자작 녹음기 TTS_Recoder |
| 임베디드 | Arduino |
| 웹 | 웹디자인기능사 · WebStandard · Responsive · 레이아웃 13종 |
| 코딩 테스트 | CodeUp · 이것이 코딩 테스트이다 |
아직 저장소로 올리지 않았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 커밋
2020 · · · · · · · · · · · ▓ 15
2021 ▓ ░ ░ ▓ ░ ▒ · · · · ▓ █ 155
2022 █ ▓ ▓ ▒ ▓ ░ · ░ · · · · 144
2023 · · · · · · · · ░ ░ · · 3
2024 ▓ ▒ ▒ · · · · · · · · · 42
2025 ░ ▓ ▓ ▒ ▒ ▒ ░ ▓ · ▒ ▒ · 118
2026 ▓ · █ · · · · · · · · · 190
· 없음 ░ 1–4 ▒ 5–14 ▓ 15–49 █ 50+
2022.09 부터 2023.09 까지 딱 1년이 비어 있습니다. 2023년 전체 커밋이 3개입니다. 반대로 몰아친 구간이 셋 — 2021.11–2022.03 (213커밋), 2025.02–03 (59), 2026.03 한 달에 150(kern-research).
| 연도 | 무엇을 했나 |
|---|---|
| 2020 | AnyangTechInterpreter — 첫 인터프리터 (12월 시작) |
| 2021 | 오수는 게임중 · garbage-collection · nugunga-utility · program-manager · Quantum |
| 2022 | nCompiler · NCX · MakeInterpreter · make_Library · cpp-poker-server · network-package · 명일단보 |
| 2023 | 거의 비어 있음 — NDK 리플렉션 실험 · Docker 실습 |
| 2024 | PaperBot · nugdev-compiler 2024 · ini-parser · wine-python |
| 2025 | calendar · NDK · nugdev-compiler 2025 · 주식게임(Unity → 웹) · nugdev-language · cos · mint64 |
| 2026 | Singapore Collector · manim · kern-research |
편입·문서 커밋을 뺀 실제 작업 커밋 기준. 공개 저장소에 남은 가장 이른 커밋은 2020-12-14 입니다.
같은 문제를 계속 다시 만듭니다. 두 갈래가 특히 그렇습니다.
컴파일러 — 아홉 번
flowchart LR
A["AnyangTech<br/>2021.06"] --> Q["Quantum<br/>2021.12"] --> NC["nCompiler<br/>2022.02"] --> NX["NCX<br/>2022.03"] --> MI["MakeInterpreter<br/>2022.05"] --> N4["nugdev-compiler<br/>2024.03"] --> N5["nugdev-compiler<br/>2025.05"] --> CS["cos<br/>2025.11"] --> KR["kern-research<br/>2026.03"]
style Q stroke-width:3px
style N4 stroke-width:3px
style KR stroke-width:3px
고등학교 때 『만들면서 배우는 인터프리터』를 따라 만든 게 시작이었습니다. C 로 갔다가 C++ 로 옮기고, 중간에 C# 으로 한 번 새고, 2024년에 다시 잡아 2025년에 가장 멀리 갔고, NASM 백엔드를 따로 판 뒤 — 지금은 커널을 쓰기 위한 언어를 만들고 있습니다.
경제 게임 — 세 번
flowchart LR
O["오수는 게임중<br/>2021.04 · Java 콘솔"] --> U["주식 게임<br/>2025.05 · Unity"] --> W["주식 게임<br/>2025.08 · Kotlin + React"]
2021년에 Java 콘솔로 주식·부동산·코인 시뮬레이션을 만들었고, 4년 뒤 같은 걸 Unity 로, 그 3개월 뒤 웹으로 다시 만들었습니다.
따라 만들어 보고, 그 다음에 처음부터 다시 씁니다.
| 책 | 여기서 나왔습니다 |
|---|---|
| 『만들면서 배우는 인터프리터 / 컴파일러』 | AnyangTechInterpreter(2021.06) · nugdev-compiler(2024 · 2025) · cos(2025.11) — Pratt 파서와 AST 노드 구성이 여기서 왔습니다. 2024 에는 Monkey VM 을 스택 기반 → 레지스터 기반으로 바꾸는 연구 노트가 따로 있고, cos 의 레지스터 할당기가 그 연장선입니다 |
| 『64비트 멀티코어 OS 원리와 구조』 | mint64 (2025.11) — 커밋이 장 단위로 남아 있습니다 |
| Catlike Coding | Unity 그래픽스 — Clock / Graph / Math / Performance |
| Go 언어 교재 | Chapter 03 – 31 |
포크해 둔 코드도 그대로 관심사입니다.
chibicc · tinycc — 소형 C 컴파일러 / llvm-project · lamina — 컴파일러 백엔드 / chromium · boost · jdk — 대형 C++ · Java 코드베이스 / mint64os — 64비트 멀티코어 OS
직접 만들어 본 것들 — 라이브러리를 가져다 쓰기 전에
| 런타임 | 시스템 | 도구 |
|---|---|---|
| 가비지 컬렉터 ×3 | 부트로더 → 64비트 커널 | C 소스 자동 생성기 |
| 문자열 라이브러리 (String / StringAry) | A20 게이트 · 페이징 · 키보드 | 엑셀 → 게임 대사 임포터 |
| UTF-8 인코더 / 디코더 | C++ 리플렉션 (Property) | EBNF 문법 뷰어 (SFML) |
| 페이지 기반 동적 메모리 매니저 | Wine 위 Python ↔ DLL 브리지 | Unity 사운드 매니저 프리셋 |
| C 튜플 · 델리게이트 테이블 | pthread 서버 / 클라이언트 | Unity 인게임 맵 에디터 |
C++ 오브젝트 시스템 (nobject) |
소켓 네트워크 스택 | Unity 오브젝트 / 컴포넌트 시스템 |
| 가상 머신 (Quantum) | 레지스터 할당기 (cos) | manim 컴파일러 설명 영상 |
| 저장소 | 내용 | 기간 | |
|---|---|---|---|
| ⚙️ | archive-compiler | 자작 언어와 컴파일러 9세대 · VM · GC · EBNF 설계 | 2021 – 2026 |
| 🧩 | archive-c-toolkit | GC · 문자열 · 동적 메모리 · 튜플 · 델리게이트를 C 로 직접 | 2021 – 2024 |
| 🖥️ | archive-systems | mint64 커널 · NDK · Wine ↔ Python 브리지 | 2023 – 2025 |
| 🎮 | archive-games | 명일단보 · 오수는 게임중 · 주식게임 · 리듬게임 | 2021 – 2025 |
| 🌐 | archive-network | C++ 포커 서버 · Unity VR 멀티플레이 + 맵에디터 | 2022 |
| 🕸️ | archive-web-services | 건설 프로젝트 ELT · 지식베이스 · 캘린더 | 2021 – 2026 |
| 770 | 커밋 — 한 개도 버리지 않고 옮김 |
| 79 | legacy/* 태그 — 원본 브랜치 끝점 전부 |
| 4 → 1 | 흩어져 있던 GitHub 계정을 하나로 |
| 19 GB → 640 MB | 빌드 산출물만 걷어냄 |
C++ ██████████████████ 52.9 %
TypeScript ████ 10.3 %
C ███ 8.6 %
C# ███ 8.5 %
HTML █ 3.4 %
ShaderLab █ 3.1 %
CMake █ 3.0 %
Python █ 2.8 %
Kotlin █ 2.5 %
Others ██ 4.9 %
공개 저장소 기준 · 2026.08 / 위의 XR·3D 와 학습 기록은 아직 여기 포함돼 있지 않습니다.
히스토리는 어떻게 보존했나
각 프로젝트는 git subtree 로 편입했고, 원본 저장소의 커밋을 한 개도 버리지 않았습니다.
원본 브랜치 끝점은 전부 legacy/<프로젝트>/<브랜치> 태그로 남아 있습니다.
git tag -l 'legacy/*' # 보존된 원본 브랜치 79개
git log legacy/quantum/main # 그 프로젝트의 원본 커밋 히스토리
git show legacy/quantum/main # 편입 직전 최종 상태
git log -- <디렉터리>/로는 편입 커밋 1개만 보입니다. subtree 편입에-s ours병합을 썼기 때문이고, 원본 커밋은 전부 저장소 안에 있습니다.
흩어져 있던 계정 4개를 하나로 모았습니다. 여기서부터 다시 시작합니다.
⚒️ 깎아서, 끼워 맞춥니다.