최신 글

14페이지 중 4페이지
  1. 도구/GitHub

    Obsidian 플러그인 릴리스에서 styles.css가 사라지는 이유: GitHub Actions 워크플로우의 빠진 한 줄

    커스텀 summary card 디자인을 새로 도입하면서 styles.css가 생겼는데, release.yml의 gh release upload 커맨드에 파일명을 빠뜨려서 GitHub Release asset에서 누락됐습니다. 사용자에게는 "스타일이 안 보인다"는 버그로 나타났고, 2줄 fix로 해결했습니다. Obsidian 플러그인 release workflow 체크리스트도 함께 정리.

    12분 읽기
  2. AI/Claude Code

    소스와 테스트를 grep 한 줄로 연결하기: @tested / @covers 양방향 마커 시스템

    코드베이스가 커지면 "이 파일에 테스트가 있나?" "이 테스트가 뭘 커버하나?"를 추적하는 비용이 커집니다. JSDoc에 @tested와 @covers 마커를 넣어 소스·테스트 간 양방향 링크를 구축하면, grep 한 줄로 커버리지 맵을 얻을 수 있습니다. 실제 Obsidian 플러그인 프로젝트에 적용한 사례.

    14분 읽기
  3. 도구/Obsidian

    E2E 스위트가 하나로 부족해진 날: Obsidian 플러그인에 두 번째 CDP 테스트 추가하기

    첫 번째 CDP E2E 스위트 글의 속편. multi-config 리팩토링에서 Settings UI를 검증하기 위해 두 번째 E2E 스위트를 추가했고, 그 과정에서 51줄의 CDP 인프라 코드를 공유 모듈로 추출했습니다. 두 스위트를 하나의 Obsidian 인스턴스에서 돌리는 격리 규칙과 공유 경계 설계까지.

    18분 읽기
  4. 도구/Obsidian

    Singleton을 Per-Instance로 바꾼 뒤 찾아온 메모리 누수: 16줄로 잡은 Orphaned RateLimiter

    Obsidian 플러그인의 multi-config 리팩토링 중 발견한 조용한 메모리 누수: config를 삭제해도 그 config가 쓰던 RateLimiter가 공유 Map에 그대로 남았던 버그의 원인과 3파일 16줄짜리 fix. Per-instance 서비스 전환 시 주의해야 할 4가지 cleanup 함정을 정리했습니다.

    17분 읽기
  5. 도구/Obsidian

    Obsidian 플러그인을 Multi-Database로 리팩토링하기: DatabaseProvider 추상화와 FieldType 정규화

    Airtable에 강결합돼 있던 Obsidian 플러그인 서비스 레이어를 provider-agnostic DatabaseProvider 인터페이스로 추상화한 2단계 리팩토링(PR #49, #50) 기록. 런타임 capability flag, 5-way discriminated union credential, 29→11 StandardFieldType 정규화까지 395/395 테스트를 유지하며 진행한 설계 결정을 공유합니다.

    24분 읽기
  6. 도구/Obsidian

    하나의 Obsidian Vault에서 여러 Airtable 동시 싱크: Multi-Config 아키텍처 구현기

    Airtable 플러그인을 단일 config에서 multi-config 멀티테넌트 구조로 확장한 경험. ConfigInstance와 ConfigManager의 역할 분리, credential-scoped RateLimiter 공유, defensive + idempotent 마이그레이션, 폴더 겹침 검증, Obsidian command palette의 dynamic re-registration까지.

    24분 읽기
  7. 자동화/블로그

    Ghost MCP v1.0.1 업데이트기: 프로토타입에서 오픈소스 도구로 — 무엇이 달라졌나

    v1.0.0 공개 후 2개월. "내 블로그용 스크립트"를 "오픈소스 도구"로 끌어올린 변화 — 테스트, 보안, 유연성, 온보딩 네 가지 영역의 성숙화를 한눈에 정리합니다.

    18분 읽기
  8. AI/도구활용

    양방향 링크 시스템을 테스트 커버리지에 확장하기: @tested / @covers 마커 패턴

    문서↔코드 양방향 링크 시스템을 테스트 영역에 확장한 후속편. @tested / @covers 마커 설계, 3계층 테스트 커버리지 선언, CI 검증 스크립트까지 정리합니다.

    12분 읽기
  9. 백엔드/API설계

    마크다운 3포맷 자동 감지 파서 설계: legacy, frontmatter, plain을 한 파서로

    기존 사용자의 레거시 포맷을 깨지 않으면서 표준 frontmatter와 일반 마크다운까지 지원해야 했습니다. 감지 순서, fallback 설계, 그리고 strategy 패턴을 포기한 이유를 정리합니다.

    17분 읽기
  10. 백엔드/인증-보안

    MCP 서버 보안: LLM이 생성한 파일 경로를 18줄로 막는 Path Traversal 방어

    MCP 서버는 로컬 권한과 LLM 입력이 만나는 새로운 공격 표면입니다. Path Traversal, prefix 우회, symlink 공격을 18줄의 검증 함수로 막는 방법과 그 뒤의 설계 원칙을 정리합니다.

    17분 읽기