{
    "componentChunkName": "component---node-modules-gatsby-theme-primer-wiki-src-templates-tag-query-js",
    "path": "/tags/읽을거리/",
    "result": {"data":{"site":{"pathPrefix":"","siteMetadata":{"siteUrl":"https://r0k.wiki"}},"allMdx":{"nodes":[{"frontmatter":{"title":"관심이 가는 글들","draft":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"관심이 가는 글들\",\n  \"date\": \"2026-11-04T00:00:00.000Z\",\n  \"updated\": \"2026-11-04T00:00:00.000Z\",\n  \"tags\": [\"읽을거리\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"\\uC77D\\uB2E4\\uAC00 \\uB098\\uC911\\uC5D0 \\uB2E4\\uC2DC \\uAEBC\\uB0B4\\uBCFC \\uB9CC\\uD55C \\uAE00\\uB4E4. \\uB9C1\\uD06C\\uB791 3\\uC904 \\uC694\\uC57D\\uB9CC \\uB0A8\\uAE30\\uACE0, \\uC81C\\uB300\\uB85C \\uC18C\\uD654\\uD55C \\uAC74 \\uB530\\uB85C \\uBB38\\uC11C\\uB85C \\uBE80\\uB2E4.\"), mdx(\"h2\", {\n    \"id\": \"2026-11\"\n  }, \"2026-11\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://zenn.dev/honeymarron/articles/nextjs-to-tanstack-start-cloudflare-workers\"\n  }, \"Next.js \\u3092 TanStack Start \\u306B\\u66FF\\u3048\\u305F\\u3089 Cloudflare Workers \\u306E CPU \\u6642\\u9593\\u304C 10 \\u5206\\u306E 1 \\u306B\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"tanstack-start\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"cloudflare\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Next.js\\uB97C OpenNext \\uC5B4\\uB311\\uD130\\uB85C Workers \\uBB34\\uB8CC \\uD50C\\uB79C\\uC5D0 \\uC62C\\uB838\\uB354\\uB2C8 \\uC694\\uCCAD\\uB2F9 CPU \\uD55C\\uB3C4(10ms)\\uB97C 1\\uC8FC\\uC77C\\uC5D0 8\\uBC88 \\uB118\\uAE40 (1102 \\uC5D0\\uB7EC)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"TanStack Start\\uB85C \\uBC14\\uAFB8\\uACE0 CPU \\uC2DC\\uAC04 \\uC911\\uC559\\uAC12 400ms \\u2192 30ms, \\uBC88\\uB4E4\\uC740 1/3. \\uD654\\uBA74\\uC774\\uB791 head\\uB294 \\uD55C \\uAE00\\uC790\\uB3C4 \\uC548 \\uBC14\\uAFE8\\uB2E4\\uACE0 \\uD568\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC904\\uC5B4\\uB4E0 \\uAC74 \\uB300\\uBD80\\uBD84 \\uCF5C\\uB4DC\\uC2A4\\uD0C0\\uD2B8 \\uB54C \\uCF54\\uB4DC \\uC77D\\uB294 \\uC2DC\\uAC04. \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"next/*\"), \" import\\uB97C Vite alias\\uB85C \\uD638\\uD658 \\uB808\\uC774\\uC5B4\\uC5D0 \\uB3CC\\uB824\\uC11C \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uC218\\uC815 \\uC5C6\\uC774 \\uD55C \\uD398\\uC774\\uC9C0\\uC529 \\uC62E\\uAE40\")))), mdx(\"h2\", {\n    \"id\": \"2026-10\"\n  }, \"2026-10\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.fabwaseem.com/blog/tanstack-start-vs-nextjs\"\n  }, \"TanStack Start vs Next.js in 2026: Same App, Real Benchmarks\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"tanstack-start\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"next.js\")), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uAC19\\uC740 \\uC1FC\\uD551\\uBAB0 \\uC571\\uC744 2\\uCF54\\uC5B4\\uC5D0\\uC11C \\uB3CC\\uB824 \\uBE44\\uAD50. Start\\uAC00 SSR \\uBAA9\\uB85D 2.9\\uBC30, \\uC0C1\\uD488 \\uD398\\uC774\\uC9C0 4.6\\uBC30, API 8.6\\uBC30 \\uCC98\\uB9AC\\uB7C9\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uD504\\uB9AC\\uB80C\\uB354\\uB41C \\uC815\\uC801 \\uD398\\uC774\\uC9C0\\uB9CC Next.js\\uAC00 \\uC55E\\uC12C. \\uCE90\\uC2F1 \\uAC00\\uB2A5\\uD55C \\uCF58\\uD150\\uCE20\\uB77C\\uBA74 \\uACA9\\uCC28\\uAC00 \\uC881\\uD600\\uC9C4\\uB2E4\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC800\\uC790 \\uACB0\\uB860: \\uC798 \\uB3CC\\uC544\\uAC00\\uB294 Next.js \\uC571\\uC744 \\uC774 \\uC218\\uCE58 \\uB54C\\uBB38\\uC5D0 \\uB2E4\\uC2DC \\uB9CC\\uB4E4\\uC9C4 \\uC54A\\uB294\\uB2E4. \\uC0C8\\uB85C \\uB9CC\\uB4DC\\uB294 \\uC778\\uD130\\uB799\\uD2F0\\uBE0C \\uC571\\uC774\\uBA74 Start 1.0\\uC774 \\uAE30\\uBCF8 \\uC120\\uD0DD\\uC9C0\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://zenn.dev/link/articles/b388036800ebb4\"\n  }, \"TanStack Start \\u3068\\u306F\\u306A\\u3093\\u305E\\u3084\\u3002Next.js\\u3059\\u3089\\u602A\\u3057\\u3044\\u306E\\u306B\\u3064\\u3044\\u3066\\u3044\\u3051\\u306A\\u3044\\u305C\\u3002\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"tanstack-start\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"next.js\")), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uAC19\\uC740 \\uAE30\\uB2A5\\uC744 Next.js App Router\\uC640 Start \\uCF54\\uB4DC\\uB85C \\uB098\\uB780\\uD788 \\uBE44\\uAD50\\uD55C \\uC785\\uBB38 \\uAE00\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Next.js\\uB294 \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uC911\\uC2EC(Server/Client \\uACBD\\uACC4), Start\\uB294 \\uB77C\\uC6B0\\uD2B8 \\uC911\\uC2EC(\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"loader\"), \" + Server Function)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"page.tsx\"), \" \\u2194 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"createFileRoute\"), \", Server Action \\u2194 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"createServerFn\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"revalidatePath\"), \" \\u2194 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"router.invalidate\"), \" \\uB300\\uC751\\uD45C\\uB85C \\uC815\\uB9AC\")))), mdx(\"h2\", {\n    \"id\": \"2026-02\"\n  }, \"2026-02\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.youtube.com/watch?v=JO2L6MfiQtY\"\n  }, \"Is TanStack Start better than Next.js? (YouTube)\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"tanstack-start\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"next.js\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uAC1C\\uBC1C\\uC790 \\uACBD\\uD5D8, \\uD0C0\\uC785 \\uC548\\uC804\\uC131, \\uC608\\uCE21 \\uAC00\\uB2A5\\uD55C \\uCE90\\uC2F1\\uC740 Start \\uCABD\\uC774 \\uB0AB\\uB2E4\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"AI \\uC9C0\\uC6D0, \\uC0DD\\uD0DC\\uACC4, \\uC774\\uBBF8\\uC9C0\\xB7i18n \\uAC19\\uC740 \\uB0B4\\uC7A5 \\uAE30\\uB2A5\\uC740 Next.js\\uAC00 \\uB0AB\\uB2E4\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Start\\uAC00 RC \\uB2E8\\uACC4\\uC77C \\uB54C \\uC601\\uC0C1\\uC774\\uB77C AI \\uC9C0\\uC6D0\\xB7\\uC548\\uC815\\uC131 \\uD3C9\\uAC00\\uB294 \\uC9C0\\uAE08(1.0 \\uC815\\uC2DD \\uCD9C\\uC2DC \\uC774\\uD6C4)\\uACFC \\uB2E4\\uB97C \\uC218 \\uC788\\uC74C\")))));\n}\n;\nMDXContent.isMDXComponent = true;","fields":{"slug":"/posts/reading-notes/","title":"관심이 가는 글들","lastUpdated":"11/4/2026","lastUpdatedAt":"2026-11-04T11:37:27.000Z","gitCreatedAt":"2026-11-04T11:37:27.000Z"}}]}},"pageContext":{"slug":"/tags/읽을거리/","tag":"읽을거리","sidebarItems":[{"title":"","items":[{"title":"Recently Updated","url":"/latest/","collapse":true,"indent":false,"items":[{"title":"11-04: 관심이 가는 글들","url":"/posts/reading-notes/"},{"title":"10-04: pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"10-04: tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"},{"title":"10-04: cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"09-06: 일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"08-23: 에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"},{"title":"07-27: 자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"07-05: 관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"06-30: 다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"05-24: dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]}]},{"title":"Tags","items":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"},{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"관찰","type":"tag","url":"/tags/관찰/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"}]},{"title":"설정무시","type":"tag","url":"/tags/설정무시/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"}]},{"title":"읽을거리","type":"tag","url":"/tags/읽을거리/","items":[{"title":"관심이 가는 글들","url":"/posts/reading-notes/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"},{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}]}],"tagsGroups":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"cloudflare 인프라 간단 정리","url":"/posts/cloud/cloudflare/cloudflare infra/"},{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"},{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"일본어 폰트·타이포그래피 - 한국인 웹 개발자가 자주 놓치는 것들","url":"/posts/frontend/일본어 폰트-타이포그래피 가이드/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"관찰","type":"tag","url":"/tags/관찰/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"}]},{"title":"설정무시","type":"tag","url":"/tags/설정무시/","items":[{"title":"pnpm 11은 package.json의 pnpm 필드를 경고 없이 무시한다","url":"/posts/관찰/2026-09-30-pnpm11-package-json-pnpm-필드-무시/"},{"title":"tsconfig exclude는 extends 시 병합이 아니라 교체다","url":"/posts/관찰/2026-09-30-tsconfig-exclude는-병합이-아니라-교체/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"}]},{"title":"읽을거리","type":"tag","url":"/tags/읽을거리/","items":[{"title":"관심이 가는 글들","url":"/posts/reading-notes/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"},{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}]}},
    "staticQueryHashes": ["2320115945","2650345336","3495835395","451533639"]}