AI Product EngineeringC++ Systems & Inference

AI 모델을,
실제 환경의 소프트웨어로

선동인입니다. OpenVINO C++ 추론 SDK와 Windows 클라이언트를 개발하고, 실시간 최적화·커널 보호·배포·장애 분석까지 수행해온 시스템 소프트웨어 엔지니어입니다.

AI REVIEW

AI 모델을 C++ 추론 SDK와 클라이언트 소프트웨어에 통합하고, 실시간 최적화부터 OS 연동·배포·운영 장애까지 해결해온 개발자입니다. 사람·카메라 탐지와 liveness 3종을 포함한 모델 5종 + 특징점 추출 파이프라인을 멀티스레드로 재설계해 프레임당 지연을 150ms에서 40~50ms로 줄였습니다. 핵심 클라이언트 저장소 기여율 81%(832/1,029 커밋)로 구현을 주도했고, 최근 12개월 두 계정 전 저장소·전 브랜치 합계는 931커밋입니다. Windows 커널 드라이버·Credential Provider로 넓힌 시스템 통합 경험을 macOS 클라이언트 확장에도 적용하고 있습니다. 이 평가는 AI(Claude)가 저장소 기여 데이터를 근거로 3시간마다 자동 생성·갱신합니다 · 최근 갱신 2026-08-01 12:51 KST

주요 개발 활동은 회사 조직의 프라이빗 저장소에 있습니다 · 개발 활동 근거 보기 ↓

선동인 미모지 아바타
SCROLL

AI 개발 하네스 실전 사례

SEEUON macOS PORT

Windows에서 개발한 Vision AI 클라이언트의 동작을 Swift·AVFoundation 기반 macOS 앱으로 옮기며, Claude 구현과 Codex 리뷰를 설계·검증 절차 안에 통제한 작업입니다

사용자 PC에서 모델 5종과 특징점 추출이 프레임마다 도는 구성 — 프레임당 40~50ms · 소리 없음

AI 에이전트를 개발 절차에 통합한 방식
과제
Windows 클라이언트의 처리 흐름을 Swift/AVFoundation으로 재구현하는 작업입니다. AI 에이전트 둘을 사용하되, 설계 판단과 최종 승인은 사람이 맡는 구조를 먼저 정의했습니다.
역할 분리
  • 선동인설계 · 결정 · 승인
  • Claude구현
  • Codex독립 리뷰
저장소의 AGENTS.md를 사람·AI 공통 규칙서이자 날짜가 박힌 의사결정 로그로 사용하고, Windows 원본 동작과 요구사항 정합성을 기준으로 우선순위를 판단합니다.
통제 장치
main 직접 push 금지. 브랜치 → 자체 점검 → Windows 원본 흐름도 정합성 점검 → PR → 교차 리뷰 → CI → 명시적 merge. 에이전트 둘이 동시에 작업하므로 시작 전 동기화도 강제이며, AI의 "완료" 선언은 판정 체크리스트를 만족하기 전까지 보류됩니다.
사람의 개입
에이전트가 제안한 기능 하나를 검토 후 "구현 안 함"으로 종결하고 대안 경로를 지정한 결정, 리뷰 분담이 생기자 자체 점검 횟수를 5회에서 2회로 줄인 프로세스 튜닝 — 모두 날짜와 함께 문서에 남아 있습니다.
규모
10주 진행커밋 702머지된 PR 254테스트 646 로컬 저장소 실측 기준이며 진행 중입니다. 데모 영상의 실서버 연동 화면이 현재 상태입니다.
공개 검증
이 포트폴리오 저장소가 같은 하네스로 운영됩니다 — 역할 규칙(AGENTS.md)Codex 리뷰가 근거와 함께 종결되는 이슈 트래커가 전부 공개돼 있습니다.
150ms → 45ms
모델 5종 + 특징점 추출 · 사용자 PC 기준 (3배 개선)
7년
Windows 시스템 개발
81% · 1위
핵심 클라이언트 저장소 기여율
931 commits
최근 12개월 · 전 저장소/전 브랜치

What I Do

핵심 역량

무엇을 만들 수 있는지, 검증 가능한 축으로만 묶었습니다

CORE

AI 모델 통합 — POC에서 운영 가능한 클라이언트까지

훈련된 모델을 추론 SDK와 판별 미들웨어로 감싸 Windows 애플리케이션에 연결하고, 설치·배포와 현장 장애까지 이어서 해결했습니다

POC 데모검증
추론 SDK · 미들웨어엔진
Windows 클라이언트통합
설치 · 배포릴리스
운영 장애 대응현장
CORE

멀티스레딩 & 병목 설계 — 실시간을 만든 구조

한 경로에서 순차 처리하던 수집·전처리·추론·후처리를 분리하고, ROI·위변조 탐지를 조건부 실행해 150ms → 40~50ms로 줄였습니다

Capture / Preprocess입력 분리
Detection Workersperson · camera
ROI / Liveness Gateliveness 3종 조건부
Postprocess / Decision판별 통합

커널 드라이버 & 자기보호

FileSystem Minifilter 단독 설계·개발. 화이트리스트 기반 솔루션 자기보호, 관리자·SYSTEM 권한 우회까지 커널에서 차단, IOCTL 기반 커널-유저모드 통신 설계. Microsoft filter altitude 정식 할당

AI 추론 SDK

OpenVINO 기반 C/C++ 추론 엔진과 C++/C#/Python 바인딩을 만들고, 모델 5종 + 특징점 추출 경로를 일반 사용자 PC에 맞게 최적화했습니다

필드 엔지니어링

백신·EDR 충돌, OS 업데이트, 정책 공백처럼 배포 뒤에야 드러나는 문제를 고객 환경에서 재현하고, 풀 덤프와 WinDbg로 원인 경로를 규명해 코드 수정으로 연결합니다

커뮤니케이션 & 협업

고객사 실무자·보안 벤더·AI 리서처 사이에서 기술 언어를 통역합니다. 장애 분석을 예외 정책과 코드 변경으로 연결하고, 엠클라우독에서는 부팀장으로 운영 이슈를 조율했습니다

배포 & 코드 서명

NSIS, Themida, 인증서 서명 기반 릴리스 파이프라인을 구축하고 AI 클라이언트 전체 릴리스 프로세스를 담당했습니다

Languages
C++CC#PythonMFCWPF
Kernel / OS
WDK · MinifilterWinDbgFSD / FsFdCredential ProviderAPI Hooking · DLL InjectionWindows API · IPC
AI / Vision
OpenVINOOpenCVPyTorchTensorFlowVision AI
Build / Deploy
NSISInstallShieldThemidaCode SigningCMakeUbuntu

Projects

주요 개발 사례

AI 모델을 시스템 소프트웨어에 통합하며 해결한 문제와 구현 결과

CULockerFsfd

2023.07 – 현재 · Windows FileSystem Minifilter Driver

Windows 파일·프로세스 접근을 커널에서 통제하는 Minifilter 드라이버 — 베이스 설계부터 서명, MS 등재까지 단독 개발

C WDK / Minifilter MS Altitude 정식 할당
  • 커널 드라이버 베이스 설계부터 인증서 서명, 배포까지 전체 사이클 단독 개발 — 사내 저장소 커밋 93/93 (100% · 2026-08-01 기준)
  • Microsoft에 filter altitude 정식 할당받아 공식 allocated altitudes 문서 등재 (CULockerFsfd.sys · altitude 389385.5)
  • MS Hardware Dev Center 등록 — 드라이버 제출, attestation 서명, 배포 체계 구축
  • Anti-Debugging 및 로컬 시스템 파일 I/O 통제로 솔루션 무결성 보호. 프로세스·파일/폴더 보호 및 권한 설정
기술 딥다이브 — 문제와 해결
  • 문제 — 보안 솔루션은 그 자체가 우회 대상이 됩니다: 프로세스 강제 종료, 디버거 부착, 바이너리 교체로 정책을 무력화할 수 있습니다. 유저모드 방어만으로는 관리자 권한 앞에서 무의미합니다
  • 설계 축이 이전 경험과 정반대였던 점 — 엠클라우독의 파일시스템 드라이버는 사용자 파일시스템 전체를 관장하는 정책 기반 접근 제어였고, 난이도는 호환성에 있었습니다(OS 업데이트·신규 프로그램 출시마다 연쇄 파일 I/O와 fallback 미지원 프로그램 대응). CULockerFsfd는 반대로 솔루션 자기보호를 위한 화이트리스트가 목적이라, 정책 복잡도보다 차단 강도와 우회 봉쇄가 핵심이었습니다
  • 구현 — 화이트리스트에 없는 접근은 정책 검사 없이 차단. 솔루션 내부 프로세스 사이에도 zero trust를 적용하고, 관리자·SYSTEM 권한 프로세스라도 정책 밖이면 커널 레벨에서 거부. 신뢰 판별은 경로 → 바이너리 해시 → 디지털 서명 순으로 확인. Anti-Debugging을 함께 결합
  • 난점 → 해결 — 강한 차단은 정상 운영을 깨뜨립니다. 업데이트·유지보수는 제한된 경로로만 열리도록 설계하고, 실패 시 단계별로 되돌릴 수 있는 복구 절차와 완료 후 무결성 재검증을 함께 두었습니다. 보호가 일시적으로 완화되는 구간 자체를 최소화하는 것이 설계 목표였습니다
  • 커널-유저모드 통신 — IOCTL 기반으로, 요청 무결성과 호출 주체를 함께 검증하는 인증 계층을 설계했습니다. 목적은 암호화가 아니라 요청 위변조와 임의 프로세스의 호출을 걸러내는 것이고, 파일 I/O처럼 빈번한 경로가 아니라 검증에 연산을 더 쓸 수 있다고 판단했습니다
  • 결과 — Microsoft filter altitude 정식 할당과 attestation 서명 배포 체계 구축, 커밋 100% 단독 개발로 고객사 운영 환경에 배포

CUFaceSDK

2022.07 – 2024.01 · AI Model Inference SDK

훈련된 AI 모델을 애플리케이션에서 쓸 수 있게 하는 OpenVINO 기반 추론 엔진 SDK

C / C++ OpenVINO Windows / Linux
  • 훈련 모델을 C/C++로 포팅한 추론 엔진 SDK 설계·개발 및 데모 앱 제작
  • C / C++ / C# / Python 멀티 언어 바인딩, Windows·Ubuntu 크로스 플랫폼 라이브러리 제공
  • SEEUON의 기반 SDK로 채택 — 이를 토대로 판별 미들웨어(FaceOnDiscriminator) 개발
  • Edge Device 보드 최적화 버전 개발 — 사내 저장소 기여 2위 (커밋 325회 · 2026-08-01 기준)
기술 딥다이브 — 문제와 해결
  • 문제 — 연구실에서 훈련된 모델을 C++ 클라이언트에서 안정적으로 호출하려면 모델 입출력과 런타임 차이를 감싸는 추론 계층이 필요했습니다
  • 구현 — OpenVINO 기반 C/C++ 추론 엔진을 설계하고, C/C++/C#/Python 바인딩과 Windows·Ubuntu 크로스 플랫폼 빌드 제공
  • 왜 사용자 PC인가 — 서버 장애와 망분리 환경에서도 추론이 중단되지 않고 얼굴 영상을 외부로 보내지 않아야 했습니다. 그래서 Intel CPU 기반 사용자 PC를 기준 실행 환경으로 선택했습니다
  • OpenVINO 선택 — 대상 PC의 다수가 Intel CPU 기반이었고, CPU 스레드 튜닝·모델 캐싱·내장 그래픽 활용 등 클라이언트 추론 경로를 세밀하게 조정할 수 있어 ONNX Runtime/OpenCV DNN보다 요구사항에 잘 맞았습니다
  • SDK 설계 원칙 — 코어는 기능만 제공하고 메모리 소유권은 애플리케이션이 갖는 구조로 두었습니다. 리소스 생명주기는 명시적 init/finalize에 더해 언어별 생성자·소멸자 패턴까지 고려해 정리했습니다. 모델은 최초 로딩 시 캐시를 만들고 이후에는 필요한 모델만 부분 load/unload할 수 있게 했습니다
  • 쓰는 사람 기준으로 검증 — C#·Python Wrapper는 혼자 상상해서 내지 않고, 실제 그 언어를 쓰는 개발자들에게 사용성을 물어 API 형태를 조정했습니다
  • 파이프라인 설계 — 프레임 수집·전처리·모델 추론·후처리·판별이 한 경로에서 순차 처리되던 병목을 분리했습니다. 얼굴 검출 결과를 기준으로 ROI를 만들고, 위변조 탐지는 얼굴이 검출된 경우에만 수행했습니다. 다만 고객 정책에 따라 모든 판별 이력을 남겨야 하는 모드도 있어, 조건부 실행과 전체 탐지를 모두 지원했습니다
  • 난점 → 해결 — 실행 환경이 서버 GPU가 아니라 고객의 일반 사용자 PC였고, 한 프레임에 사람 탐지·카메라 탐지, 그리고 위변조(liveness) 탐지 3종 — 디스플레이·출력물·IR — 까지 모델 5종과 얼굴 특징점 추출이 모두 얹혔습니다 (얼굴 등록 시엔 품질 평가 모델 3종이 추가됩니다). 초기엔 프레임당 150ms(약 6fps)라 실시간 감시라 부르기 어려운 수준이었습니다. 추론 워커와 판별 미들웨어(FaceOnDiscriminator)의 처리 경로를 분리하고, ROI 기반 조건부 실행과 모델 캐싱으로 병목을 줄였습니다
  • 정확도와 트레이드오프 — 3배 개선은 모델 경량화나 입력 해상도 축소가 아니라 추론 아키텍처와 처리 경로 개선에서 얻었습니다. 모델 자체 정확도는 유지했고, 정확도 손실 가능성은 사용자 PC에서 실행 가능한 모델을 만들기 위한 FP16/양자화 단계의 트레이드오프로 분리해 판단했습니다
  • 결과 — 같은 사용자 PC에서 프레임당 150ms → 40~50ms(약 3배 개선). SDK를 Windows 클라이언트와 판별 미들웨어의 공통 추론 계층으로 적용하고 Edge Device 보드 최적화 버전까지 확장

ClouDoc

2020.01 – 2022.05 · C++/MFC · FSD/FsFd · WinDbg

문서 중앙화 보안 솔루션 클라이언트와 파일시스템 드라이버 개발. 가상드라이브, 탐색기 이동·복사 정책, 매체/네트워크 제어와 배포 파이프라인을 맡았고, 부팀장으로 운영 이슈를 정리했습니다.

골프 자세분석 프로그램

2024.06 · Side Project · OpenCV/OpenVINO

영상 기반 스윙 분석 데스크톱 프로그램을 기획부터 현장 설치까지 1인 개발. OpenCV/OpenVINO 추론을 외부 사용 환경에 직접 적용한 사례입니다.

Deep Dive

가상 기술 면접

AI(Codex)가 CTO 관점에서 파고든 질문과, 제가 실제로 내린 판단입니다

Q왜 서버 GPU가 아니라 사용자 PC에서 Vision AI 추론을 돌렸나요?

서버 장애와 망분리 환경에서도 추론이 중단되지 않고, 얼굴 영상을 외부로 보내지 않아야 했습니다. 전용 GPU를 전제하지 않는 Intel CPU 기반 사용자 PC를 실행 환경으로 잡았습니다.

그래서 OpenVINO 기반 SDK와 판별 미들웨어를 설계했습니다. CPU 스레드 튜닝, 모델 캐싱, 내장 그래픽 활용 가능성처럼 클라이언트 실행 환경에서 조정 가능한 선택지를 확보했습니다.

파이프라인은 단순히 스레드를 늘리는 방식으로만 보지 않았습니다. 위변조 탐지는 얼굴 기반 공격이므로 얼굴이 검출된 경우에만 ROI를 잡아 수행했고, 고객 정책에 따라 모든 판별 이력을 남겨야 하는 모드에서는 전체 탐지도 지원했습니다. 성능 수치는 얼굴·바디 탐지, 카메라 탐지, 위변조 탐지와 특징점 추출을 모두 수행하는 가장 높은 보안 강도를 기준으로 잡았습니다.

속도 개선은 모델 경량화나 입력 해상도 축소가 아니라 추론 아키텍처와 처리 경로 개선에서 얻었습니다. 같은 사용자 PC에서 프레임당 처리 시간을 150ms에서 40~50ms 수준으로 줄였고, 모델 자체 정확도는 유지했습니다. 정확도 손실 가능성은 사용자 PC에서 실행 가능한 모델을 만들기 위한 FP16/양자화 단계의 트레이드오프로 분리해 판단했습니다.

liveness는 RGB 단일 프레임만으로 강한 공격을 모두 막기 어렵다는 점을 전제로, 위협도가 높은 로그인 세션에서는 성능보다 탐지 강도를 우선했습니다. 갤러리의 liveness 데모도 Windows 로그인 세션 기준이라, 보안 솔루션의 시작 지점에서 가능한 한 강하게 체크하도록 설정한 사례입니다.

Q커널 드라이버를 두 회사에서 다 하셨는데, 목적이 어떻게 달랐나요?

같은 FileSystem Minifilter지만 설계 축이 정반대였습니다.

엠클라우독의 드라이버는 사용자 파일시스템 전체를 관장하는 정책 기반 접근 제어가 목적이었습니다. 제품 자체가 프로세스 기준으로 동작했고, 정책 파일이 커널 메모리에 상주하면서 "이 프로세스가 이 경로에 권한이 있는가"를 판단했습니다. 여기서 어려운 건 차단이 아니라 호환성이었습니다. OS 업데이트나 신규 프로그램이 나올 때마다 연달아 일어나는 파일 I/O를 감당해야 했고, 프로그램 쪽에서 fallback 처리를 하지 않아 정책을 새로 적용하는 도중 문제가 되는 경우도 많았습니다.

시선에이아이의 CULockerFsfd는 솔루션 자기보호를 위한 화이트리스트가 목적입니다. 정책 복잡도보다 차단 강도와 우회 봉쇄가 핵심이라, 화이트리스트에 없으면 별도 판단 없이 거부하면 됩니다. 대신 상당히 강하게 걸었습니다 — 솔루션 내부 프로세스 사이에도 zero trust를 적용했고, 관리자나 SYSTEM 권한 프로세스라도 정책에 맞지 않으면 커널 레벨에서 접근을 막았습니다.

Q강한 deny 정책을 유지하면서, 업데이트·설치·백신 스캔·장애 분석 같은 정상 운영 경로는 어떻게 열어줬나요?

화이트리스트가 강할수록 운영이 깨지기 쉽다는 게 실제로 가장 큰 숙제였습니다.

업데이트는 일반 사용자 세션과 분리된 제한된 유지보수 경로에서만 수행되도록 설계했습니다. 도중 실패는 단계별로 되돌릴 수 있게 했고, 완료 후에는 무결성을 다시 검증했습니다. 보호가 일시적으로 완화되는 구간은 존재할 수밖에 없으므로, 그 창을 얼마나 좁히고 그 안에서 무엇을 다시 확인하느냐가 설계의 핵심이었습니다.

백신·EDR은 원칙적으로 차단하되, OS가 스스로 보호하는 Windows Defender 컴포넌트는 허용했습니다. 그 외 제품은 고객사 환경과 정책에 따라 예외 등록이나 운영 협의로 풀었습니다. 장애 분석은 모니터링 서비스를 따로 두고, 덤프는 레지스트리 설정으로 수집해 서버로 자동 전송되게 했습니다.

지금이라면 — 보호를 전체 완화하는 대신, 업데이트에 필요한 파일·프로세스·시간 범위만 여는 maintenance mode로 좁히겠습니다. 완화 구간 자체가 가장 매력적인 공격 타이밍입니다.
Q커널과 유저모드 프로그램 사이의 요청은 무엇으로 신뢰했나요?

IOCTL로 주고받되, 단순 체크섬처럼 위변조에 취약한 방식은 배제하고 요청 무결성과 호출 주체를 함께 검증하는 인증 계층을 두었습니다. 파일 I/O처럼 초당 수천 번 들어오는 경로가 아니라 검증에 연산을 더 써도 부담이 적다고 봤습니다. 목적은 암호화가 아니라 요청 위변조와 임의 프로세스의 호출을 걸러내는 것이고, 커널과 통신하는 앱 자체를 소수로 한정했습니다.

바이너리 쪽은 패킹·난독화만을 보안 경계로 보지 않고, 경로·무결성·서명 등 복수의 신뢰 신호를 함께 확인했습니다. 하나가 뚫려도 나머지가 남도록 판별 근거를 겹쳐 두는 것이 목표였습니다.

지금이라면 — 정적인 비밀값은 장기적으로 완전한 보안 경계가 되지 못하고, 난독화는 분석 비용을 올릴 뿐입니다. 키 수명주기 관리, 재전송(replay) 방지, 최소 권한을 축으로 다시 설계하고, 커널 측에서 요청자를 한 번 더 검증하는 계층을 얹겠습니다.
Q다른 보안 솔루션과의 충돌은 어떻게 다뤘나요?

충돌은 예외가 아니라 상수였습니다. 특히 DLL 인젝션, API 후킹, 파일시스템 필터링처럼 타 EDR·백신과 같은 시스템 영역을 쓰는 기능에서 부딪힐 가능성이 컸습니다.

재현 가능한 시나리오는 풀 덤프를 남기도록 설정하고, 충돌 시점에 각 프로세스와 드라이버가 어떤 API·I/O 경로를 타는지 WinDbg로 분석했습니다. 원인이 자사 기능이면 예외 처리나 기능 수정으로 대응했고, 서로의 동작이 맞물려 생기는 문제면 고객사 보안 담당자나 해당 솔루션 벤더와 협의해 화이트리스트 등록을 진행했습니다. 인터넷망 연결이 가능한 환경이면 벤더 쪽에, 온프레미스면 고객사 담당자를 통해 예외 정책을 잡는 식이었습니다.

기능적으로 충돌이 불가피한 조합은 상호 보완적으로 한쪽 기능을 끄는 운영 정책으로 정리했습니다. 코드만으로 풀 수 없는 제약은 관계자와 합의해 운영 가능한 상태로 만들었습니다.

QC++ 코어 SDK를 C#·Python에 바인딩할 때 메모리 소유권과 생명주기는 어떻게 설계했나요?

코어 SDK는 기능만 제공하고 상태와 리소스를 무겁게 들고 있지 않도록 했습니다. 메모리 소유권은 애플리케이션에 두고, 생명주기는 명시적인 init/finalize로 열고 닫게 했습니다. 여기에 언어별 생성자·소멸자 패턴이 있으면 그것도 함께 적용해서, 어느 쪽 습관으로 써도 리소스가 새지 않도록 했습니다.

모델은 최초 로딩 시 필요한 캐시 파일을 만들고, 이후에는 필요한 모델만 부분 load/unload할 수 있게 구성했습니다. 실행 모드마다 사용하는 모델 조합이 다르다는 점을 반영한 선택이었습니다.

C#·Python Wrapper는 제가 상상해서 만들지 않고, 실제 그 언어를 쓰는 개발자들에게 써보게 하면서 API 형태를 조정했습니다. SDK는 결국 쓰는 사람이 편해야 채택된다고 생각합니다.

위 답변은 실제 기술 면접 시뮬레이션에서 나온 것으로, 제품 보안에 영향을 줄 수 있는 구체적 구현 값은 의도적으로 제외했습니다.

Activity

개발 활동

잔디에 보이지 않는 것까지 — 전 저장소 · 전 브랜치 집계

커밋 히트맵 2025-08-01 – 2026-08-01 · 931 commits

회사 계정(disun-cubox-ai, SECERN AI 조직) + 개인 계정(devdongin)의 전 저장소 · 전 브랜치 커밋 집계 (중복 제거, KST 기준). 고객사별 코드가 브랜치로 분리 운영되어, 기본 브랜치·gh-pages만 세는 GitHub 잔디에는 잡히지 않는 고객사 브랜치 push까지 포함한 실제 활동량입니다. 2026-08-01 수집 · merge 커밋 포함 · author 계정 기준 통합.

8월9월10월11월12월1월2월3월4월5월6월7월2025-07-20 · 집계 기간 이전2025-07-21 · 집계 기간 이전2025-07-22 · 집계 기간 이전2025-07-23 · 집계 기간 이전2025-07-24 · 집계 기간 이전2025-07-25 · 집계 기간 이전2025-07-26 · 집계 기간 이전2025-07-27 · 집계 기간 이전2025-07-28 · 집계 기간 이전2025-07-29 · 집계 기간 이전2025-07-30 · 집계 기간 이전2025-07-31 · 집계 기간 이전2025-08-01 · 3 commits2025-08-02 · 0 commits2025-08-03 · 0 commits2025-08-04 · 2 commits2025-08-05 · 1 commits2025-08-06 · 2 commits2025-08-07 · 1 commits2025-08-08 · 1 commits2025-08-09 · 0 commits2025-08-10 · 0 commits2025-08-11 · 0 commits2025-08-12 · 3 commits2025-08-13 · 4 commits2025-08-14 · 0 commits2025-08-15 · 0 commits2025-08-16 · 0 commits2025-08-17 · 0 commits2025-08-18 · 1 commits2025-08-19 · 3 commits2025-08-20 · 2 commits2025-08-21 · 2 commits2025-08-22 · 0 commits2025-08-23 · 0 commits2025-08-24 · 0 commits2025-08-25 · 6 commits2025-08-26 · 2 commits2025-08-27 · 2 commits2025-08-28 · 3 commits2025-08-29 · 0 commits2025-08-30 · 0 commits2025-08-31 · 0 commits2025-09-01 · 1 commits2025-09-02 · 1 commits2025-09-03 · 0 commits2025-09-04 · 2 commits2025-09-05 · 1 commits2025-09-06 · 0 commits2025-09-07 · 0 commits2025-09-08 · 3 commits2025-09-09 · 4 commits2025-09-10 · 2 commits2025-09-11 · 3 commits2025-09-12 · 0 commits2025-09-13 · 0 commits2025-09-14 · 0 commits2025-09-15 · 1 commits2025-09-16 · 4 commits2025-09-17 · 7 commits2025-09-18 · 6 commits2025-09-19 · 0 commits2025-09-20 · 0 commits2025-09-21 · 0 commits2025-09-22 · 2 commits2025-09-23 · 0 commits2025-09-24 · 1 commits2025-09-25 · 0 commits2025-09-26 · 0 commits2025-09-27 · 0 commits2025-09-28 · 0 commits2025-09-29 · 0 commits2025-09-30 · 0 commits2025-10-01 · 0 commits2025-10-02 · 2 commits2025-10-03 · 0 commits2025-10-04 · 0 commits2025-10-05 · 0 commits2025-10-06 · 0 commits2025-10-07 · 0 commits2025-10-08 · 0 commits2025-10-09 · 0 commits2025-10-10 · 1 commits2025-10-11 · 0 commits2025-10-12 · 0 commits2025-10-13 · 1 commits2025-10-14 · 4 commits2025-10-15 · 2 commits2025-10-16 · 2 commits2025-10-17 · 6 commits2025-10-18 · 0 commits2025-10-19 · 0 commits2025-10-20 · 0 commits2025-10-21 · 0 commits2025-10-22 · 1 commits2025-10-23 · 1 commits2025-10-24 · 3 commits2025-10-25 · 0 commits2025-10-26 · 0 commits2025-10-27 · 8 commits2025-10-28 · 0 commits2025-10-29 · 4 commits2025-10-30 · 0 commits2025-10-31 · 0 commits2025-11-01 · 0 commits2025-11-02 · 0 commits2025-11-03 · 3 commits2025-11-04 · 4 commits2025-11-05 · 3 commits2025-11-06 · 1 commits2025-11-07 · 6 commits2025-11-08 · 0 commits2025-11-09 · 0 commits2025-11-10 · 1 commits2025-11-11 · 0 commits2025-11-12 · 1 commits2025-11-13 · 2 commits2025-11-14 · 2 commits2025-11-15 · 0 commits2025-11-16 · 0 commits2025-11-17 · 2 commits2025-11-18 · 2 commits2025-11-19 · 1 commits2025-11-20 · 1 commits2025-11-21 · 3 commits2025-11-22 · 0 commits2025-11-23 · 0 commits2025-11-24 · 2 commits2025-11-25 · 16 commits2025-11-26 · 1 commits2025-11-27 · 0 commits2025-11-28 · 0 commits2025-11-29 · 0 commits2025-11-30 · 0 commits2025-12-01 · 5 commits2025-12-02 · 7 commits2025-12-03 · 3 commits2025-12-04 · 2 commits2025-12-05 · 5 commits2025-12-06 · 0 commits2025-12-07 · 0 commits2025-12-08 · 1 commits2025-12-09 · 1 commits2025-12-10 · 1 commits2025-12-11 · 5 commits2025-12-12 · 1 commits2025-12-13 · 0 commits2025-12-14 · 0 commits2025-12-15 · 3 commits2025-12-16 · 9 commits2025-12-17 · 3 commits2025-12-18 · 1 commits2025-12-19 · 2 commits2025-12-20 · 0 commits2025-12-21 · 0 commits2025-12-22 · 4 commits2025-12-23 · 5 commits2025-12-24 · 0 commits2025-12-25 · 0 commits2025-12-26 · 0 commits2025-12-27 · 0 commits2025-12-28 · 0 commits2025-12-29 · 3 commits2025-12-30 · 4 commits2025-12-31 · 0 commits2026-01-01 · 0 commits2026-01-02 · 0 commits2026-01-03 · 0 commits2026-01-04 · 0 commits2026-01-05 · 1 commits2026-01-06 · 3 commits2026-01-07 · 10 commits2026-01-08 · 0 commits2026-01-09 · 2 commits2026-01-10 · 0 commits2026-01-11 · 0 commits2026-01-12 · 3 commits2026-01-13 · 4 commits2026-01-14 · 7 commits2026-01-15 · 1 commits2026-01-16 · 0 commits2026-01-17 · 0 commits2026-01-18 · 0 commits2026-01-19 · 4 commits2026-01-20 · 8 commits2026-01-21 · 6 commits2026-01-22 · 0 commits2026-01-23 · 0 commits2026-01-24 · 0 commits2026-01-25 · 0 commits2026-01-26 · 3 commits2026-01-27 · 0 commits2026-01-28 · 5 commits2026-01-29 · 9 commits2026-01-30 · 1 commits2026-01-31 · 0 commits2026-02-01 · 0 commits2026-02-02 · 3 commits2026-02-03 · 11 commits2026-02-04 · 6 commits2026-02-05 · 12 commits2026-02-06 · 0 commits2026-02-07 · 0 commits2026-02-08 · 0 commits2026-02-09 · 5 commits2026-02-10 · 0 commits2026-02-11 · 4 commits2026-02-12 · 1 commits2026-02-13 · 8 commits2026-02-14 · 0 commits2026-02-15 · 0 commits2026-02-16 · 0 commits2026-02-17 · 0 commits2026-02-18 · 0 commits2026-02-19 · 7 commits2026-02-20 · 1 commits2026-02-21 · 0 commits2026-02-22 · 0 commits2026-02-23 · 3 commits2026-02-24 · 5 commits2026-02-25 · 2 commits2026-02-26 · 0 commits2026-02-27 · 0 commits2026-02-28 · 0 commits2026-03-01 · 0 commits2026-03-02 · 0 commits2026-03-03 · 2 commits2026-03-04 · 9 commits2026-03-05 · 4 commits2026-03-06 · 1 commits2026-03-07 · 0 commits2026-03-08 · 0 commits2026-03-09 · 3 commits2026-03-10 · 6 commits2026-03-11 · 3 commits2026-03-12 · 6 commits2026-03-13 · 2 commits2026-03-14 · 6 commits2026-03-15 · 10 commits2026-03-16 · 12 commits2026-03-17 · 3 commits2026-03-18 · 20 commits2026-03-19 · 3 commits2026-03-20 · 1 commits2026-03-21 · 0 commits2026-03-22 · 0 commits2026-03-23 · 0 commits2026-03-24 · 6 commits2026-03-25 · 16 commits2026-03-26 · 5 commits2026-03-27 · 8 commits2026-03-28 · 4 commits2026-03-29 · 2 commits2026-03-30 · 5 commits2026-03-31 · 6 commits2026-04-01 · 0 commits2026-04-02 · 5 commits2026-04-03 · 0 commits2026-04-04 · 0 commits2026-04-05 · 0 commits2026-04-06 · 3 commits2026-04-07 · 0 commits2026-04-08 · 12 commits2026-04-09 · 4 commits2026-04-10 · 0 commits2026-04-11 · 0 commits2026-04-12 · 0 commits2026-04-13 · 1 commits2026-04-14 · 16 commits2026-04-15 · 4 commits2026-04-16 · 9 commits2026-04-17 · 11 commits2026-04-18 · 0 commits2026-04-19 · 0 commits2026-04-20 · 3 commits2026-04-21 · 0 commits2026-04-22 · 12 commits2026-04-23 · 2 commits2026-04-24 · 8 commits2026-04-25 · 1 commits2026-04-26 · 0 commits2026-04-27 · 3 commits2026-04-28 · 16 commits2026-04-29 · 5 commits2026-04-30 · 6 commits2026-05-01 · 0 commits2026-05-02 · 3 commits2026-05-03 · 0 commits2026-05-04 · 0 commits2026-05-05 · 0 commits2026-05-06 · 7 commits2026-05-07 · 4 commits2026-05-08 · 7 commits2026-05-09 · 0 commits2026-05-10 · 0 commits2026-05-11 · 7 commits2026-05-12 · 10 commits2026-05-13 · 5 commits2026-05-14 · 9 commits2026-05-15 · 0 commits2026-05-16 · 0 commits2026-05-17 · 0 commits2026-05-18 · 12 commits2026-05-19 · 16 commits2026-05-20 · 17 commits2026-05-21 · 0 commits2026-05-22 · 0 commits2026-05-23 · 0 commits2026-05-24 · 0 commits2026-05-25 · 0 commits2026-05-26 · 9 commits2026-05-27 · 5 commits2026-05-28 · 13 commits2026-05-29 · 19 commits2026-05-30 · 0 commits2026-05-31 · 0 commits2026-06-01 · 6 commits2026-06-02 · 1 commits2026-06-03 · 0 commits2026-06-04 · 3 commits2026-06-05 · 12 commits2026-06-06 · 0 commits2026-06-07 · 0 commits2026-06-08 · 6 commits2026-06-09 · 10 commits2026-06-10 · 2 commits2026-06-11 · 3 commits2026-06-12 · 0 commits2026-06-13 · 0 commits2026-06-14 · 0 commits2026-06-15 · 0 commits2026-06-16 · 4 commits2026-06-17 · 1 commits2026-06-18 · 1 commits2026-06-19 · 0 commits2026-06-20 · 0 commits2026-06-21 · 0 commits2026-06-22 · 2 commits2026-06-23 · 1 commits2026-06-24 · 0 commits2026-06-25 · 0 commits2026-06-26 · 0 commits2026-06-27 · 0 commits2026-06-28 · 0 commits2026-06-29 · 0 commits2026-06-30 · 0 commits2026-07-01 · 0 commits2026-07-02 · 0 commits2026-07-03 · 0 commits2026-07-04 · 0 commits2026-07-05 · 0 commits2026-07-06 · 0 commits2026-07-07 · 0 commits2026-07-08 · 0 commits2026-07-09 · 0 commits2026-07-10 · 0 commits2026-07-11 · 0 commits2026-07-12 · 0 commits2026-07-13 · 4 commits2026-07-14 · 3 commits2026-07-15 · 1 commits2026-07-16 · 11 commits2026-07-17 · 0 commits2026-07-18 · 0 commits2026-07-19 · 0 commits2026-07-20 · 5 commits2026-07-21 · 0 commits2026-07-22 · 3 commits2026-07-23 · 3 commits2026-07-24 · 6 commits2026-07-25 · 0 commits2026-07-26 · 0 commits2026-07-27 · 7 commits2026-07-28 · 1 commits2026-07-29 · 5 commits2026-07-30 · 16 commits2026-07-31 · 18 commits2026-08-01 · 27 commitsLessMore
월별 커밋 합계 (텍스트)
commits
2025-0838
2025-0938
2025-1035
2025-1151
2025-1265
2026-0167
2026-0268
2026-03143
2026-04121
2026-05143
2026-0652
2026-0783
2026-0827

Career & Education

경력 & 학력

2022.07 – 현재

(주)시선에이아이 ([구]씨유박스)

Windows Systems / AI Inference Engineer

  • Vision AI 클라이언트 SEEUON — POC 데모부터 추론 SDK·판별 미들웨어·Windows 애플리케이션·커널 드라이버·배포까지 개발
  • OpenVINO 기반 AI 추론 SDK(CUFaceSDK) 설계·개발 — C/C++/C#/Python 멀티 언어 바인딩, Windows·Ubuntu 크로스 플랫폼
  • FileSystem Minifilter 커널 드라이버(CULockerFsfd) 단독 개발 — Microsoft filter altitude 정식 할당, attestation 서명·배포 체계 구축
  • Windows 로그인 얼굴인증 Credential Provider(SeeuonCP)와 IdP 확장판(SEEUONIdp) 클라이언트 메인 개발 — SSO·GoogleOTP·Passwordless 연계
  • API 후킹·DLL 인젝션 기반 스크린 캡처 방지 기능, WinDbg 덤프 분석 기반 장애·충돌 규명
  • NSIS·Themida·인증서 서명 릴리스 파이프라인 총괄, AI 코딩 하네스(Claude Code) 도입으로 macOS 클라이언트 확장 진행
  • 삼성 SDS·SDI, 국세청, SGI 서울보증 등 주요 고객사 POC·구축 메인 개발자 수행

2020.01 – 2022.05

엠클라우독 (넷아이디)

보안 솔루션 클라이언트 / 커널 드라이버 개발 · 부팀장

  • 문서 중앙화 솔루션 ClouDoc 클라이언트(MFC) 및 FileSystem Driver(FSD)·Filter Driver(FsFd) 개발
  • 가상드라이브, 탐색기 이동·복사 정책, 매체 제어, 네트워크 제어 등 로컬 PC 환경 통제 기능 개발
  • WinDbg 덤프 분석으로 타 보안 프로그램과의 충돌 원인 규명·해결
  • Python·NSIS·Themida·코드 서명 기반 전체 배포 파이프라인 담당

학력

호서대학교 정보통신공학 학사 (2014 – 2020)
졸업작품: 시각장애인을 위한 영상·음성 복합 서비스

수상

교내 캡스톤디자인 경진대회 최우수상 (2019)
YOLO 객체 인식 + STT/TTS 기반 시각장애인용 물건찾기 시스템

Blog & Links

최근 글 & 채널

기술 블로그 최신 글 — 매주 자동 갱신됩니다

Contact

함께 일해보고 싶다면

커널, 보안, AI 추론 — 어떤 이야기든 환영합니다