Internal ops · Cloudflare Access 보호 전제

SEOJing 글 운영

`/ops/articles`는 공개 블로그가 아니라 진규 전용 운영면입니다. 새 글은 CMS block revision으로 작성하고, 기존 MDX 글은 호환 모드로 함께 운영합니다. 발행 시 public DB body가 갱신됩니다.

Selected article

kd-team/graduate/docker-deep-dive

공개 글 보기
format: -status: -현재 revision: -편집 revision: -public: -

이 글의 서버 편집본을 찾지 못했습니다. 아직 MDX 저장소에서만 운영 중인 글일 수 있습니다.

기존 글 목록 열기 (202)
JS 퀴즈북 × 이펙티브 타입스크립트 읽기 지도study/js-ts-reading-guide이펙티브 타입스크립트 2판 Day 13: 타입은 런타임과 테스트를 대신하지 않는다study/effective-typescript/day13이펙티브 타입스크립트 2판 Day 14: JS에서 TS로 옮길 때 먼저 좁혀야 할 경계study/effective-typescript/day14자바스크립트 퀴즈북 리마인드 Day 13: 모듈은 파일 묶음이 아니라 의존성 그래프다study/javascript-quizbook/day13이펙티브 타입스크립트 2판 Day 12: 타입은 공개 API의 사용법이다study/effective-typescript/day12자바스크립트 퀴즈북 리마인드 Day 12: 이벤트는 target에서 끝나지 않는다study/javascript-quizbook/day12이펙티브 타입스크립트 2판 Day 11: 객체 타입은 열려 있고, 계약은 닫아야 한다study/effective-typescript/day11자바스크립트 퀴즈북 리마인드 Day 11: class를 봐도 프로토타입을 읽는다study/javascript-quizbook/day11이펙티브 타입스크립트 2판 Day 10: 타입도 테스트하고 빠지는 분기는 막는다study/effective-typescript/day10자바스크립트 퀴즈북 리마인드 Day 10: 함수는 값이고 경계다study/javascript-quizbook/day10이펙티브 타입스크립트 2판 Day 9: 제네릭은 관계를 보존할 때만 강하다study/effective-typescript/day9자바스크립트 퀴즈북 리마인드 Day 9: this는 호출한 쪽이 정한다study/javascript-quizbook/day9이펙티브 타입스크립트 2판 Day 8: any를 밖에 세우고 unknown으로 검증하기study/effective-typescript/day8자바스크립트 퀴즈북 리마인드 Day 8: 이벤트 루프와 Promise 타이밍study/javascript-quizbook/day8CI가 초록색이어도 글이 공개된 것은 아니다okayJing/workflow/publish-readback-gate이펙티브 타입스크립트 2판 Day 7: 문자열보다 도메인 의미를 좁히기study/effective-typescript/day7자바스크립트 퀴즈북 리마인드 Day 7: 클로저 버그와 오래된 값study/javascript-quizbook/day7이펙티브 타입스크립트 2판 Day 6: 유효한 상태만 표현하는 타입 설계study/effective-typescript/day6자바스크립트 퀴즈북 리마인드 Day 6: 스코프 체인과 호이스팅study/javascript-quizbook/day6이펙티브 타입스크립트 2판 Day 5: 좁혀진 타입은 언제 다시 넓어지는가study/effective-typescript/day5자바스크립트 퀴즈북 리마인드 Day 5: 참조, 복사, Map/Set의 메모리 감각study/javascript-quizbook/day5이펙티브 타입스크립트 2판 Day 4: 추론을 살리는 값 생성 패턴study/effective-typescript/day4자바스크립트 퀴즈북 리마인드 Day 4: 프로퍼티 descriptor와 freeze의 경계study/javascript-quizbook/day4이펙티브 타입스크립트 2판 Day 3: 타입 반복을 줄이는 리뷰 감각study/effective-typescript/day3자바스크립트 퀴즈북 리마인드 Day 3: + 연산자와 ToPrimitive 흐름study/javascript-quizbook/day3이펙티브 타입스크립트 2판 Day 2: 타입을 값의 집합으로 보기study/effective-typescript/day2자바스크립트 퀴즈북 리마인드 Day 2: 같은 값인지 묻는 네 가지 방법study/javascript-quizbook/day2에이전트 프레임워크 스터디 Day 13: Trace는 로그가 아니라 다음 실행을 바꾸는 증거 사슬이다study/agent-framework/day13이펙티브 타입스크립트 2판 Day 1: 타입스크립트를 믿기 전에 알아야 할 경계study/effective-typescript/day1자바스크립트 퀴즈북 리마인드 Day 1: 숫자는 왜 가끔 믿을 수 없을까study/javascript-quizbook/day1본문 이미지를 나중에 넣는 게 아니라 — SEOJing 글쓰기 파이프라인에 시각 판단을 넣기SEOJing/inline-visual-pipeline글 위에 영상을 붙인다는 것 — SEOJing 요약 쇼츠 파이프라인SEOJing/summary-video-pipeline에이전트 프레임워크 스터디 Day 12: Agent Card는 소개문이 아니라 실행 가능한 경계선이다study/agent-framework/day12하네스가 명령어가 되면 안 됐다 — CLAB Agent Harness를 repo-local skill pack으로 줄인 이유clab/repo-local-skill-pack-harnessPlanner, reviewer, coder를 늘리지 않기로 했다 — Hermes-only hub-spoke 원칙okayJing/architecture/hermes-only-hub-spoke로컬 모델에게 맡겨도 되는 일 — local evidence router의 경계okayJing/architecture/local-evidence-router-boundaryOkayJing Local이 Discord를 대체하려면 — dashboard가 아니라 daily surface여야 한다okayJing/architecture/okayjing-local-discord-replacement-criteriaTicket list만으로는 일이 보이지 않았다 — Pixel Office를 작업 상태 모델로 보는 이유okayJing/architecture/pixel-office-worker-spaceAPI로 감쌀 것과 gateway에 남길 것 — OkayJing Local의 상태 변경 경계okayJing/architecture/source-resource-api-boundaryGemma4 e2b를 감으로 믿지 않기 — fixture와 JSON으로 본 로컬 라우터okayJing/memory/gemma4-router-fixture-evaluationGraphify를 memory로 두지 않기로 했다 — 관계는 진실이 아니라 힌트다okayJing/memory/graphify-derived-metadata외부 agent skill을 그대로 복사하지 않는 이유 — 흡수는 번역이다okayJing/skills/external-agent-skills-absorption스킬은 문서가 아니라 공급망이다 — SkillSpector와 ToxicSkills guardrailokayJing/skills/skill-supply-chain-guardrailTTS를 R2에 올리기 전에 — Mac mini local audio API로 먼저 검증하기okayJing/voice/tts-local-api-r2-defer대표 이미지 자동화 실험 — 검색과 Codex 생성이 같은 경로로 붙었다SEOJing/cover-automation-codex-test대표 이미지를 글마다 다시 붙이는 방식 — 사진 검색에서 리소그래프 배경까지SEOJing/riso-cover-pipeline에이전트 프레임워크 스터디 Day 11: MCP 서버는 설치 목록이 아니라 검문 가능한 계약이다study/agent-framework/day11CLAB 인사이트 분석: AI 코드 리뷰는 정답 판정기가 아니라 하방을 막는 안전망이다clab/insight-analysis/ai-code-review-adoptionCLAB 인사이트 분석: AI가 만든 코드는 Playwright 하네스로 확인해야 한다clab/insight-analysis/playwright-e2e-harnessCLAB 인사이트 분석: 자동화는 스크립트가 맡고, LLM은 애매함을 줄인다clab/insight-analysis/project-automation-with-aiCLAB 인사이트 분석: Skill은 많을수록 좋은 게 아니라 평가 기준이 있어야 한다clab/insight-analysis/skill-quality-rubric오케이징 기술 지도 — 채팅봇에서 개인 AI 운영체계까지okayJing/technical-map에이전트 프레임워크 스터디 Day 10: harness는 팀 아키텍처를 만드는 공장이다study/agent-framework/day10확장점은 플러그인이 아니라 경계면이다okayJing/architecture/extension-boundaries에이전트 프레임워크 스터디 Day 9: 확장점은 플러그인이 아니라 경계면이다study/agent-framework/day9Worker를 사람 역할이 아니라 계약으로 봐야 하는 이유okayJing/architecture/capability-handoff-contracts좋은 리뷰어는 많이 의심하는 사람이 아니다 — smart reviewer behavior 기준okayJing/workflow/smart-reviewer-behavior에이전트 프레임워크 스터디 Day 8: 여러 에이전트는 역할이 아니라 계약으로 연결된다study/agent-framework/day8승인을 기억해도 되는가 — session-scoped approval cache와 위험도 분류okayJing/workflow/session-scoped-approval-cache에이전트 프레임워크 스터디 Day 7: 작업은 답변이 아니라 이벤트와 산출물로 남아야 한다study/agent-framework/day7AGENTS.md로는 부족했다 — 팀원이 AI에게 일을 맡기는 방식을 하네스로 묶기clab/agent-coaching-harness기억이 skill을 자동으로 고치면 안 되는 이유okayJing/memory/memory-should-not-auto-edit-skills에이전트 프레임워크 스터디 Day 6: 사람 개입은 예외가 아니라 설계 표면이다study/agent-framework/day6벡터 검색을 지금 붙이지 않는 이유 — FTS와 source discipline 이후의 순서okayJing/memory/vector-search-after-fts에이전트 프레임워크 스터디 Day 5: 워크플로와 에이전트의 경계를 나누는 법study/agent-framework/day5로컬 LLM worker를 믿기 전에 — summary, classification, reranking 평가 기준okayJing/memory/local-llm-worker-evaluation에이전트 프레임워크 스터디 Day 4: 관측 가능해야 에이전트가 개선된다study/agent-framework/day4빈 이벤트에 대답하지 않기 — Discord startup auto-resume을 끈 이유okayJing/discord/discord-startup-auto-resume에이전트 프레임워크 스터디 Day 3: 컨텍스트는 자료 더미가 아니라 실행 상태다study/agent-framework/day3워크플로우를 모델에 넣기 전에 — 오케이징의 workflow compilation 기준okayJing/workflow/workflow-compilation-policy에이전트 프레임워크 스터디 Day 2: 도구는 함수가 아니라 계약이다study/agent-framework/day2백엔드 스터디 Day 12: 프론트엔드 개발자를 위한 협업 지도study/backend/day12오래된 기억을 어떻게 믿을 것인가 — stale-check와 promotion queue 기준okayJing/memory/stale-check-promotion-queue에이전트 프레임워크 스터디 Day 1: 프레임워크보다 먼저 실행 환경을 설계하기study/agent-framework/day1백엔드 스터디 Day 11: AI가 만든 백엔드 코드를 리뷰하는 체크리스트study/backend/day11작업 시작 전에 기억을 먼저 조회한다 — hermes-memory CLI를 붙인 이유okayJing/memory/hermes-memory-cli-start-routine밀린 글을 폴더로 회수하기 — 오케이징 포스트가 운영 기록이 되는 조건okayJing/workflow/post-backlog-to-archive-routineokayJing 읽는 법 — 폴더별 접근과 시간순 로드맵okayJing/reading-guide백엔드 스터디 Day 10: 로그와 관측 가능성으로 문제 흐름 읽기study/backend/day10새 에이전트 도구를 바로 설치하지 않는 이유 — 표준 정렬로 먼저 보기okayJing/architecture/agent-framework-standards-intake아침브리핑: 내가 자동화를 하루 운영에 사용하는 방식okayJing/automation/briefing-automation-report-skill승인을 줄이는 게 아니라 요구사항을 선명하게 만든다 — 오케이징의 approval fatigue 정리okayJing/workflow/approval-fatigue-requirement-discipline백엔드 스터디 Day 9: API 문서와 팀 협업 흐름 읽기study/backend/day9음성 요청이 포스트 기획으로 바뀌는 과정 — 오케이징의 ticket-first 글쓰기 루틴okayJing/voice/voice-request-ticket-post-routine백엔드 스터디 Day 8: 배포와 운영 환경 읽기study/backend/day8프론트엔드 스터디 11주차: React 기초 2 — useEffect, 이벤트 처리, 폼study/clab-26-1/week11프론트엔드 스터디 심화: 에러 처리와 정규 표현식study/clab-26-1/weekHard2Qwen3-TTS MLX를 검토했지만 Supertonic3로 돌아온 이유okayJing/voice/qwen3-tts-mlx-to-supertonic3백엔드 스터디 Day 7: 테스트 코드로 AI 백엔드 검증하기study/backend/day7Supertonic3 custom voice JSON을 직접 빚어보기 — F1 톤에 말끝을 섞는 실험okayJing/voice/supertonic3-custom-voice-json백엔드 스터디 Day 6: 로그인과 권한 흐름을 코드에서 읽기study/backend/day6TTS 품질 튜닝은 모델 선택보다 운영 기준 문제였다okayJing/voice/tts-selection-operational-criteria백엔드 스터디 Day 5: Service와 트랜잭션으로 비즈니스 흐름 읽기study/backend/day5채팅봇에서 음성 동료로 — 오케이징이 말하기 시작하면서 바뀐 기준okayJing/voice/text-chat-to-voice-colleaguevoice mode에서는 보고서 문체가 깨진다 — 오케이징 답변 정책을 다시 잡은 날okayJing/voice/voice-mode-report-style-breaks백엔드 스터디 Day 4: Entity와 Repository로 DB 흐름 읽기study/backend/day4맥미니 M4 2TB를 산 이유 — 오케이징의 기억은 디스크에서 시작한다okayJing/memory/mac-mini-storage-memory-architecture백엔드 스터디 Day 3: 검증과 에러 응답을 읽는 법study/backend/day3context pack은 요약본이 아니다 — 오케이징 기억에 source_id를 붙인 이유okayJing/memory/source-linked-context-packs백엔드 스터디 Day 2: API 계약과 DTO를 읽는 법study/backend/day2프론트엔드 스터디 10주차: React 기초 1 — 컴포넌트, JSX, props, useStatestudy/clab-26-1/week10프론트엔드 스터디 심화: this, 실행 컨텍스트, 이터러블study/clab-26-1/weekHard1기억은 요약이 아니라 증거여야 했다 — local-first Hermes memory를 만든 이유okayJing/memory/local-first-hermes-memory-architecture백엔드 스터디 Day 1: 스프링 프로젝트를 읽기 위한 최소 지도study/backend/day1MSW를 켜는 순간 백엔드 요구사항이 보인다 — DTO부터 남기는 프로토타입 흐름okayJing/workflow/msw-dto-backend-handoffJing Studio는 목업 생성기가 아니다 — 계약을 먼저 남기는 징팩토리okayJing/architecture/jing-studio-contract-pipelineHermes Report는 왜 생겼나 — 끝났다고 말하기 위한 조건okayJing/workflow/hermes-report-formatcron prompt는 왜 self-contained여야 하나 — 미래의 오케이징은 지금 대화를 모른다okayJing/automation/cron-prompt-self-contained멘션 없이 대화하는 채널 — Discord free-response와 channel promptokayJing/discord/discord-free-response-channel-promptHoncho를 다시 검토할 때 — 오케이징의 장기 기억을 어디에 둘 것인가okayJing/memory/memory-backend-honcho-criteria프론트엔드 스터디 대면 9주차: Next.js 렌더링 진화와 웹 퍼포먼스study/clab-26-1/in-person/week9프론트엔드 스터디 9주차: React 입문 전 필수 JS 문법 — map, 구조 분해, 스프레드study/clab-26-1/week9Jing Factory를 Hermes 시대에 다시 만든다면 — 공장보다 상태 흐름이 먼저다okayJing/architecture/jing-factory-hermes-redesign죽은 OpenClaw가 계속 재시작되던 이유 — gateway migration에서 배운 것okayJing/evolution/openclaw-systemd-remnantsOkejING Dreaming — 오케이징이 스스로를 점검하는 루프okayJing/automation/okejing-dreaming-loop오케이징 vNext — 더 많은 에이전트보다 더 나은 상태 관리okayJing/evolution/okejing-vnext오케이징의 기억은 하나가 아니다 — memory, ticket, session_search의 역할 분담okayJing/memory/memory-ticket-session-search낫징은 리뷰어가 아니라 검문소가 됐다 — final gate로 재정의한 이유okayJing/skills/notjing-final-gate우로보로스는 사라지지 않았다 — planning skill로 남은 이유okayJing/skills/ouroboros-planning-skill다중 에이전트에서 단일 체계로 — 오케이징이 Hermes가 된 이유okayJing/evolution/openclaw-to-hermes-single-system프론트엔드 스터디 대면 8주차: API와 통신 — 프론트엔드와 백엔드의 계약study/clab-26-1/in-person/week8프론트엔드 스터디 8주차: 클로저, Promise, async/awaitstudy/clab-26-1/week8오케이징은 언제 티켓을 여는가 — 자연어와 실행 요청 사이의 경계okayJing/workflow/ticket-trigger-logichermes-ticket — 오케이징의 작업 기억 장치okayJing/workflow/hermes-ticket-memory채팅은 세션으로, 작업은 티켓으로 — Discord Forum을 둘로 나눈 이유okayJing/workflow/sessions-and-tickets오케이징 로직 변천사 — 지금 구조를 먼저 그려보기okayJing/evolution/logic-evolution-map운영이 채팅에서 티켓으로 — 헤르메스 게이트웨이 연결과 포럼 티켓 워크플로우okayJing/workflow/forum-tickets-hermes-gateway채팅 없이 돌아가는 에이전트 — jing-bridge 파이프라인okayJing/workflow/jing-bridge-pipeline멀티 에이전트 조율 구조 — 왜 티켓을 선택했나okayJing/workflow/multi-agent-ticket-structure디스코드 이사 — 4-페르소나 체계와 헤르메스 정체성 확립okayJing/discord/discord-migration-and-hermes-identity프론트엔드 스터디 대면 7주차: React 입문과 프로젝트 구조study/clab-26-1/in-person/week7프론트엔드 스터디 7주차: 불변성, 프로토타입, 타입 체크study/clab-26-1/week7운영 결정 로그 — 에이전트 팀·메모리·보고 라우팅·스킬을 어떻게 정리했나okayJing/evolution/openclaw-ops-decisionsLayer 0 — OpenClaw 큰 그림okayJing/evolution/openclaw-big-pictureokayJing — 오케이징이 풀어주는 OpenClaw 운영기okayJing/evolution/openclaw-operating-series-overviewLayer 1 — Runtime 코어: gateway, sessions, toolsokayJing/evolution/openclaw-runtime-core프론트엔드 스터디 6주차: 객체, 함수, 그리고 스코프study/clab-26-1/week6프론트엔드 스터디 대면 6주차(1): HTML/CSS/JS 리마인드와 브라우저 렌더링study/clab-26-1/in-person/week6-1프론트엔드 스터디 대면 6주차(2): AI 시대의 개발 방식과 프론트엔드 개발자의 위치study/clab-26-1/in-person/week6-2프론트엔드 스터디 5주차: JavaScript 시작 — 타입, 변수, 그리고 JS가 이상한 이유study/clab-26-1/week570만 줄짜리 시뮬레이터 로그를 지도에 띄우기 — 줄이고, 쪼개고, 줌 레벨로 가르기spot/sim-replay-and-locality-modes탭을 버리고 지도를 남겼다 — URL 이 상태의 진실이 된 이유spot/map-centric-pivot-url-stateSpot 을 만들며 반복해서 내린 판단 세 가지spot/map-judgment-log지도가 회색 화면만 찍던 날 — async useEffect 와 StrictMode 의 racespot/naver-map-sync-initSpot — 지도 위에 만든 로컬 커뮤니티, 그 기록의 시작spot/overview60fps 페르소나가 맵을 뛰어다닐 때, React 를 어떻게 덜 깨우나spot/persona-cluster-rendering-optimization점들이 모였다고 모임이 아니다 — 클러스터의 모양과 원인을 갈라낸 기록spot/spot-clustering-shape-vs-cause도커 배포, 한 번 더 뒤집었다 — compose와 내부 네트워크로kd-team/graduate/docker-compose-evolution프론트엔드 스터디 4주차: 자유자재 레이아웃 (포지션과 플렉스박스)study/clab-26-1/week4도커 배포, 교수님 메일 한 통으로 파고든 개념들kd-team/graduate/docker-deep-dive졸업 논문 제출 사이트, 4개월 반의 기록kd-team/graduate/overviewHLMN 리팩토링, 코드를 고친다는 게 뭔지 처음 배웠다kd-team/toy-project/hlmn-refactor디스코드 클론 코딩, 3주짜리 토이프로젝트 회고kd-team/toy-project/pre-toyKGU Developers 팀장을 맡으면서kd-team/reason프론트엔드 스터디 대면 3주차: 박스 모델 실전, Position과 Flexboxstudy/clab-26-1/in-person/week3프론트엔드 스터디 3주차: 프론트엔드의 첫 번째 벽, 박스 모델과 스타일링study/clab-26-1/week3프론트엔드 스터디 대면 2주차: 폼(Form), CSS 선택자, 그리고 박스 모델study/clab-26-1/in-person/week2Day 12 - 테스트 커버리지 개선, 모바일 프레젠테이션 버그 2건 수정SEOJing/devLog/day12useEffect cleanup과 의존성 배열 — 실전 버그 사례로 이해하는 생애주기SEOJing/useeffect-cleanup-dependency-bug프론트엔드 스터디 2주차: 사용자와 소통하는 폼 & CSS의 시작study/clab-26-1/week2프론트엔드 스터디 대면 1주차: HTML 마크업과 폼, 그리고 CSS의 시작study/clab-26-1/in-person/week1Day 11 - 프레젠테이션 확대 기능, FullscreenView 개선SEOJing/devLog/day11vinext 오픈소스 기여기: 한국어 slug가 RSC에서 이슈를 일으킨 이유SEOJing/vinext-non-ascii-bug-contributionvinext는 왜 빠를까? — SSR, Vite, Edge, 그리고 Web Vitals까지SEOJing/web-rendering-performance-fundamentals100vh가 100%가 아닌 이유 — 모바일 뷰포트 단위 완전 정리SEOJing/presentation-scale-stabilizationDay 10 - 프레젠테이션 모드 안정화SEOJing/devLog/day10프론트엔드 스터디 1주차: 마크업 그 이상, 실무를 위한 중급 HTML 가이드study/clab-26-1/week1Day 9 - 프레젠테이션 모드, 코드블럭 개선, 테스팅SEOJing/devLog/day9모바일 웹에서 가로 모드를 강제하는 5가지 방법 — iOS Safari에서도 동작하는 코드 뷰어 만들기SEOJing/mobile-landscape-code-viewer블로그 글을 PPT로 만들기 — DOM 클로닝 기반 프레젠테이션 모드SEOJing/mobile-presentation-modeDay 8 - 아티클 퀴즈와 스터디 자료SEOJing/devLog/day8Context로 퀴즈 컴포넌트를 만들다 막혀서 React.Children을 공부하게 된 이야기SEOJing/react-children-apiDay 7 - Front Matter CMS와 관련 게시물 탐색기SEOJing/devLog/day7프론트엔드 스터디 대면 0주차: 프론트엔드 개발자란? 그리고 우리가 배울 것들study/clab-26-1/in-person/week0사전 진단 퀴즈 3단계 (변수와 DOM)study/clab-26-1/preclass/level3사전 진단 퀴즈 4단계 (배열, 함수, 비동기)study/clab-26-1/preclass/level4사전 진단 퀴즈 5단계 (선언적 UI와 상태)study/clab-26-1/preclass/level5Day 6 - 스터디 자료 작성과 데스크탑 비율 수정SEOJing/devLog/day6사전 진단 퀴즈 1단계 (HTML/CSS)study/clab-26-1/preclass/level1사전 진단 퀴즈 2단계 (HTML/CSS 활용)study/clab-26-1/preclass/level2Day 5 - shiki 제거, MDX 모듈화, 그리고 대량 포스팅SEOJing/devLog/day5Day 4 - 배포와 CI/CDSEOJing/devLog/day4Cloudflare Workers에서 fs 모듈이 안 되는 이유와 해결법SEOJing/cloudflare-workers-fs-issueReact 하이드레이션 오류: localStorage 읽기를 useSyncExternalStore로 다룬 사례SEOJing/use-sync-external-store-hydrationvinext + GitHub Actions로 Cloudflare Workers 배포하기SEOJing/vinext-github-actions-deployRSC 환경에서 WebAssembly가 차단되는 이유 — Shiki에서 rehype-prism-plus로SEOJing/wasm-shiki-rsc-issue엄청난 피드백SEOJing/devLog/insight/code-review-feedback생각보다 어려웠던 댓글, 완독 로컬스토리지SEOJing/devLog/insight/comment-read-trackingMDX 관련 이슈 노트SEOJing/devLog/insight/mdx-library-issueDay 3 - MDX 이슈, 반응형, 다크모드SEOJing/devLog/day3디자인 시스템을 구축할 때 주의할 점SEOJing/devLog/insight/design-system-tips폰트는 왜 메인 페이지에서만 적용이 안되고 있었을까?SEOJing/devLog/insight/font-issueMDX DOM 트리 파싱하기SEOJing/devLog/insight/mdx-dom-tree-parsing결국 Node.js 까지 와버렸다SEOJing/devLog/insight/nodejs-basicsDay 2 - 블로그 스켈레톤과 MDX 파싱SEOJing/devLog/day2이력서resume전체적인 플로우SEOJing/devLog/insight/overall-flowStorybook으로 디자인 시스템 테스팅하기SEOJing/devLog/insight/storybook-design-systemMDX가 뭘까?SEOJing/devLog/insight/what-is-mdxDay 1 - 디자인 컨셉과 디자인 시스템SEOJing/devLog/day1기술 블로그를 직접 제작하게 된 이유SEOJing/devLog/reason왜 자꾸 프로젝트가 중단되는지SEOJing/devLog/why-projects-stop